
A video ad script template is a set of timed slots, each with one job and one metric: hook from 0 to 3 seconds judged on hook rate, problem or promise from 3 to 6 seconds judged on hold rate, offer stated before the halfway mark judged on click-through rate, proof after the offer judged on hold rate at 75 percent, and the call to action in the final 3 to 5 seconds judged on conversion rate. Fill the slots in that order. The point of timing them is diagnostic: when the ad underperforms, you can locate the slot that failed instead of throwing the whole script away and starting again.
The template, slot by slot
Copy this and fill the brackets. Timings are for a 15 second ad, with the 30 second variant in brackets after each.
``` 0.0 to 2.5s HOOK [the claim, question or visible problem] 2.5 to 5.0s STAKES [why that matters to this specific person] 5.0 to 7.0s OFFER [product name + what it does + the offer] 7.0 to 11.0s PROOF [demo shot, number, or one line of testimony] 11.0 to 15.0s CTA [verb + destination + what happens next]
30s version: hook 0 to 3, stakes 3 to 8, offer 8 to 13, proof 13 to 24, CTA 24 to 30. Proof is the slot that grows. ```
The slot lengths are not sacred. The order is. Every time we have seen a team move proof ahead of the offer, watch time held up and clicks fell, because the ad became interesting rather than actionable.
What each slot is judged on
One slot, one metric. If you cannot name the metric a slot is accountable for, that slot is decoration and should be cut.
| Slot | Timing (15s) | Job | Metric | It has failed when |
|---|---|---|---|---|
| Hook | 0.0 to 2.5s | Buy the next three seconds | Hook rate: 3s views over impressions | Hook rate under 20 percent on Meta feed |
| Stakes | 2.5 to 5.0s | Make the viewer the subject | Hold rate at 25 percent | Sharp drop between second 3 and second 5 |
| Offer | 5.0 to 7.0s | Name the product and the trade | Click-through rate | Good watch time, weak CTR |
| Proof | 7.0 to 11.0s | Answer "why believe you" | Hold rate at 75 percent | Viewers leave mid-demo |
| CTA | 11.0 to 15.0s | Convert attention into an action | CVR, or outbound CTR | Clicks arrive but do not convert |
The fourth column is the useful one. High hook rate with low CTR is an offer problem, not a hook problem, and rewriting hooks is the most common way teams waste a fortnight. Our hook rate calculator will tell you in about a minute whether the top of the script is actually the issue, and the hook, body and CTA definitions set out how the three parts are measured separately.
Why the offer belongs before the halfway mark
Second 7 of a 15 second ad is not the middle of your audience's attention, it is well past it. Most of the people who will ever hear your offer have heard it by then or have already gone. So the offer goes in the first half, and the back half defends it.
This also protects you against the thing that actually kills accounts. Our 2026 fatigue benchmark reports CTR declining 15 to 20 percent in a creative's first two weeks, week three landing 45 to 70 percent below the launch baseline, and most creative being effectively dead within three weeks. A script whose offer sits at second 12 has one point of failure, late. A script with the offer at second 6 gives you something to vary: same offer, four hooks, three proofs, two CTAs, and eleven of the twelve combinations are still testable.
Filled example: 15 seconds, DTC skincare
Testing whether a cost comparison beats an ingredient claim.
| Slot | Line | Shot |
|---|---|---|
| Hook 0.0 to 2.5 | "Three products, forty minutes, and my skin still looked tired." | Bathroom shelf, hand sweeping bottles aside |
| Stakes 2.5 to 5.0 | "The routine was the problem, not the products." | Close on face, morning light |
| Offer 5.0 to 7.0 | "One serum. Ninety seconds. Twenty-two pounds." | Product in hand, label readable |
| Proof 7.0 to 11.0 | "Four weeks in, I stopped buying the other three." | Same shelf, now nearly empty |
| CTA 11.0 to 15.0 | "Tap through, first bottle ships free this week." | Product plus text: FIRST BOTTLE SHIPS FREE |
Notes on the choices. The hook is a number and a failure, not a question, because rhetorical questions in the first second train people to scroll. The offer names the price out loud: hiding price to protect CTR just moves the drop-off to the landing page. Proof is behavioural (she stopped buying the alternatives) rather than a percentage, which is stronger and cheaper to shoot. The CTA repeats the offer because the viewer at second 12 may have arrived at second 8.
Filled example: 30 seconds, B2B SaaS
Testing whether naming the manual process outperforms naming the software category.
| Slot | Line | Shot |
|---|---|---|
| Hook 0 to 3 | "Our month-end close took nine days. Six of them were spreadsheet reconciliation." | Screen recording, four spreadsheets open |
| Stakes 3 to 8 | "Every finance team we hired said the same thing in week two: this cannot be the process." | Person at desk, late, office lights partly off |
| Offer 8 to 13 | "Ledgerly pulls both systems into one reconciliation view. Free for two ledgers." | Product UI, one screen replacing four |
| Proof 13 to 24 | "Close is down to three days. The audit trail exports itself. Our controller has stopped working weekends." | Three quick UI shots, then a calendar |
| CTA 24 to 30 | "Start with your two busiest ledgers at ledgerly.com. No card, no call." | End card, URL held for six full seconds |
Notes on the choices. The hook is specific about the process (nine days, six on reconciliation), which qualifies the audience: nobody outside finance ops finishes that sentence. Proof takes eleven seconds here because a longer B2B script buys more scepticism, and the proof slot is where the extra fifteen seconds should go. The CTA removes two objections in four words. The end card is held for six seconds because a URL read once at speed does not get remembered.
Filling the template across many variations
One filled template is a script. Twenty are a test plan, and the benchmark's operational conclusion is that throughput rather than talent is what predicts campaign longevity: brands shipping 15 to 50 variants a month see 3 to 5 times longer campaign lifespan than quarterly refreshers, with 8 to 20 live variations typical for an active campaign.
Genyad, our product, is built for that step. You upload the footage you already own once, it transcribes and tags every clip, and each variation is a fresh script written into slots like these plus its own shot selection, voiceover, captions and export in 9:16, 4:5, 1:1 or 16:9. If you would rather write the slots yourself and generate around them, the AI ad script generator takes your offer and proof and returns filled scripts. Being plain about the limits: we have no AI avatars or synthetic presenters, no static banner formats, no predicted performance scores, and we do not publish to Meta or TikTok for you. You export and upload.
Frequently asked questions
How long should each part of a video ad script be?
For a 15 second ad: hook 0 to 2.5 seconds, stakes to 5, offer by 7, proof to 11, CTA in the final 4. For 30 seconds, keep the first three slots roughly where they are and give the extra time to proof, which is the slot that benefits from length. Hooks do not get better with more seconds.
Where should the offer go in a video ad script?
Before the halfway mark, and repeated in the CTA. If the offer only appears at the end, everyone who left in the middle saw an interesting video with no ask, and you have one late point of failure instead of a script you can vary.
How do I tell which part of my script is failing?
Match the symptom to the slot. Low hook rate is the first 2.5 seconds; a drop between seconds 3 and 5 is the stakes line; strong watch time with weak CTR is the offer; clicks that do not convert is a CTA promising something the landing page does not repeat.
How many script variations should I run at once?
Eight to twenty live variations per active campaign is the range most accounts settle on, refreshed weekly on TikTok and app install campaigns and fortnightly on Meta feed. Keep the offer slot fixed across a batch and vary hooks and proofs, so the results tell you something you can reuse.