Creative

The UGC Ad Script Structure: Hook, Body, CTA (Plus a Fill-In Template)

Six elements. Twenty seconds. One click.

Most UGC scripts read like a creator brief that ate a press release. They have everything they should and none of what they need. A UGC ad script template only earns its keep when the structure forces every second to do a job, the words sound like a person, and the viewer ends up clicking before they remember they were watching an ad. That is what this template does.

Below is the structure every Spark UGC script gets built from, the bracketed fill-in version you can copy into a doc, and a fully written example for a real DTC product so you can see the template turn into actual dialogue. By the end you should be able to write a 20-second script that has somewhere to send the viewer.

One thing up front. If you've read about AIDA, PAS or BAB and wondered why nothing you write with them feels like UGC, this is why: they are copywriting scaffolds built for press print and landing pages. They miss the social-proof beat that modern paid social demands, and they ignore the way a real person talks at a phone.

The six elements that make a UGC script work

Every Spark UGC script we ship is built from the same six elements, in this order. Each one has a single job. Miss one and the script leaks energy on the way to the click.

  1. Hook. Stops the scroll. Buys you 3 more seconds.
  2. Problem & emotional connection. Names a real pain and the feeling that comes with it.
  3. Solution. What the product does, fast.
  4. Value prop. Why it does it better, cheaper, or differently than the obvious alternative.
  5. Social proof. Why the viewer should believe any of this.
  6. CTA. One action, pointed at one place.
Frameworks are the bones. The script is the body. You can have perfect anatomy and still flop the screen test.

Element 1: Hook (0 to 3 seconds)

The hook decides about 60% to 80% of the variance in how a UGC ad performs. We've gone deep on the formulas and 3-second benchmarks for Meta and TikTok in UGC ad hooks that actually stop the scroll, so this section stays shallow.

Three things for the template: the hook lands by 1.5 seconds, it is either a pattern interrupt, a curiosity gap, or a specific pain-point call-out, and if a competitor could say the same opening line about their product, it is too generic to test.

Element 2: Problem & emotional connection (3 to 6 seconds)

This is where most UGC scripts start to leak. The problem statement is often a list of features dressed as a complaint. The fix is to name the specific moment the pain shows up, plus the emotion attached. Not "my skin was dry," but "I'd put moisturiser on at night, wake up, and it felt like it had never been there." Specific moment, real feeling. The viewer has to recognise themselves in the next 3 seconds or they're gone, and generic pain statements don't trigger recognition.

Element 3: Solution (6 to 10 seconds)

Plain English, no marketing language. What the product is and what it does, in the sentence a normal person would use to describe it to a friend. If you find yourself reaching for "innovative," "advanced," or "next-generation," you're scripting the website, not the ad. One sentence is the bar. If you need two, the product story is too complicated for a 20-second ad.

Element 4: Value prop (10 to 13 seconds)

Why this and not the obvious alternative? Cheaper than a clinic visit. Faster than the other powder. Cleaner ingredients than the mainstream brand. Pick the single most defensible reason a buyer would choose this over what they're already using, and lead with it. One value prop per script. If you have three good ones, that's three scripts to test, not three lines to cram in.

Element 5: Social proof (13 to 16 seconds)

By this point the viewer understands the problem, the product and the value prop. Now you give them permission to believe it. Reviews, ratings, customer counts, founder credentials, comparison data or a personal result all live here. Ordering matters: front-load proof and the viewer has no frame, bury it after the CTA and you've lost the click.

One proof point per script, and specific beats generic. "Over 14,000 5-star reviews" outperforms "thousands of happy customers" because the brain processes numbers as evidence and adjectives as filler.

Element 6: CTA (16 to 20 seconds)

One action, one destination, spoken once and captioned once. The most common script error here is bolting on a soft second CTA in the last 2 seconds, usually "follow for more" or "comment your favourite flavour." It dilutes the click and tells the algorithm to optimise for the wrong thing. If you're paying for purchases, the CTA is purchase. Map it to the metric you're billed against, and write the whole script backwards from there.

Key takeaway

Six elements, twenty seconds, one click. Lock the hook and the CTA word-for-word, leave the middle four beats as talking points the creator delivers in their own voice. Locked dialogue across the whole script is the single fastest way to make a UGC ad sound fake. Audiences clock it in 2 seconds.

The fill-in template

Copy this into a doc. Replace the bracketed parts with your product, audience, and angle. Everything outside the brackets stays.

HOOK (0 to 3s): [Pattern-interrupt line or specific pain call-out. Spoken word-for-word. Caption mirrors the line.]

PROBLEM & EMOTION (3 to 6s): [The specific moment the pain shows up + the feeling attached. "I'd [action] and then [outcome] and it felt like [emotion]."]

SOLUTION (6 to 10s): [One sentence. What the product is and what it does, in friend-explaining-to-friend language. No marketing words.]

VALUE PROP (10 to 13s): [Why this over the obvious alternative. One reason. "Unlike [alternative], it [defensible difference]."]

SOCIAL PROOF (13 to 16s): [One specific proof point. Numbers preferred. "[Number] [unit] of [thing]" or "[credential] says [claim]."]

CTA (16 to 20s): [One action. One destination. Spoken word-for-word. Caption mirrors. "[Verb] [object] at [place]."]

Length target: 15 to 25 seconds for cold traffic, up to 35 for warm retargeting. Aspect ratio: 9:16 vertical. Hook line gets a caption from frame 1. CTA gets a caption from frame -3.

The worked example: Halo electrolyte powder, $32 a tub

To show the template in action, here it is filled in for a realistic DTC product. Halo is a clean-label electrolyte powder, $32 a tub of 30 servings, sold to runners and gym-goers tired of the chalky taste of the mainstream brands. The angle is taste-led, the audience is solution-aware: they already drink electrolytes and are unhappy with what they're using.

HOOK (0 to 3s): "I've been drinking electrolytes for 4 years and I just realised I hate every single one of them."

PROBLEM & EMOTION (3 to 6s): "It's the same thing every time. You finish a run, you pour the sachet in, and it tastes like a sweet that's been licked off the floor of a hospital."

SOLUTION (6 to 10s): "So I switched to Halo. It's basically an electrolyte powder that doesn't taste like medicine. The lemon-lime one actually tastes like lemon-lime."

VALUE PROP (10 to 13s): "No artificial colours, no sucralose, no random blue dye that stains your tongue for 2 hours. Just the minerals you actually need."

SOCIAL PROOF (13 to 16s): "Over 4,200 5-star reviews and it's the official hydration sponsor of 3 marathon clubs in London."

CTA (16 to 20s): "Tap shop now and grab your first tub for $32. Link in the caption."

Spoken total: 19 seconds. Hook lands at 1.8s. Captions live on the hook, the value prop, and the CTA. Notice what the script doesn't do: it doesn't list the seven minerals, doesn't name competitors, doesn't include a code. One angle, six beats, one click.

Where AIDA, PAS and BAB actually fit

Searchers find this post by typing in the named frameworks, so a quick map. AIDA (Attention, Interest, Desire, Action) is the underlying buyer journey, and the six-element structure walks the viewer through it. PAS (Problem, Agitate, Solution) compresses the first three beats into a tighter pain-led opening, useful for problem-aware audiences. BAB (Before, After, Bridge) is the structure underneath a transformation-led script. Use them as lenses, not templates. The six-element structure is what you write.

Common script mistakes that quietly kill conversion

These are the patterns we see in 90% of underperforming UGC scripts that land in our office for a teardown.

1. The buried hook

The actual hook is in line 4 of the script. The first 3 lines are throat-clearing: "Hey guys, so I wanted to share something." Cut everything before the hook. Open on the hook line. If the creator wants a warm-up, that's their job to manage off-camera.

2. Three messages crammed into 30 seconds

Taste, ingredients, marathon sponsorship, founder story, ethical sourcing, recyclable packaging. Each one is a real selling point. Together they are a script that loses everyone by second 12. One angle, one script. The others become their own tests.

3. The proof point that doesn't earn its slot

"Customers love it" is not proof. "As seen in Vogue" is not proof unless your audience reads Vogue. "Over 14,000 5-star reviews" is proof. "Recommended by 4 NHS dieticians" is proof. Make the proof specific or cut it.

4. The script that sounds nothing like the creator

You wrote "elevate your hydration game" and the creator delivers it like a hostage. Locked dialogue across the middle four beats is the most common cause of flat UGC. Give beats, not words, and trust the creator to talk like themselves.

5. Two CTAs

"Tap shop now. And follow for more." That second sentence costs you roughly 15% to 25% of clicks in our internal data. One action, end of script.

Briefing the template to a creator

The script is half the job. The brief is the other half. We've written the full playbook in how to brief a UGC creator, but for this template the three rules are: lock the hook and CTA lines word-for-word, give the middle four beats as bullet points with example phrases, and specify one CTA destination. If you're producing with AI avatars instead, the template still applies, the trade-offs just shift, covered in AI UGC vs real creators.

Length, by platform, by 2026 data

The script timings above assume a 20-second target. Here's where the data actually sits in 2026, so you can adjust the beat lengths for the placement you're cutting for.

A 20-second video watched at 100% will out-perform a 60-second video watched at 30% on almost every campaign objective. Write to the time the story needs, then cut.

From template to tested script

The pattern that compounds: write 3 to 5 scripts off this structure, vary only the hook and the proof point, ship them as one test round, read the winner by 3-second hook rate and CVR after 48 to 72 hours, then iterate the winning hook into 5 more variants. Most brands don't have a scripting problem. They have a volume-of-tested-scripts problem.

FAQ

How long should a UGC ad script be?

Fifteen to thirty-five seconds for 2026 paid social. Meta lives at 15 to 30, TikTok at 9 to 30 with the strongest performance in the 15 to 25 band. Length isn't the lever though, watch-rate is. A 20-second script that holds 100% of viewers beats a 60-second script that loses 70% by second 10.

What is the best framework for a UGC ad script: AIDA, PAS, or BAB?

None of them, on their own. AIDA, PAS and BAB are copywriting scaffolds, not UGC scripts. They miss the social proof beat that modern paid social demands, and they ignore the way a real person actually talks to a phone. The structure that works is Hook into Problem and emotional connection, then Solution, Value prop, Social proof, then a single CTA. AIDA sits inside it implicitly. PAS sits inside the first two beats. BAB shapes the proof. The framework is the bones, not the script.

Should I script every word of a UGC ad?

Script the hook word-for-word. Script the CTA word-for-word. Leave the middle as beats with talking points and example phrases, so the creator delivers it in their own voice. Locked dialogue across the whole script is the single fastest way to make a UGC ad sound like a UGC ad pretending to be a UGC ad. The audience clocks it in 2 seconds. Lock the strategy, free the words.

Where does the social proof go in a UGC ad script?

After the solution and value prop, just before the CTA. The reason is psychological. The proof has to land on a viewer who already understands what the product does and why it might be worth $34. If you front-load proof, the viewer has no frame for it. If you bury proof at the end, you lose them before they get there. The sweet spot is the 8 to 12 second mark in a 15 to 25 second script.

How many CTAs should a UGC ad have?

One. Spoken once, captioned once, pointed at one destination. The most common mistake is bolting on a second CTA in the last 2 seconds, which dilutes the click. Pick the one action that maps to the metric you're paying for, and write the whole script backwards from it.

Want the scripting done for you?

Spark UGC writes, produces and iterates UGC ad scripts at this exact level of structure for DTC brands on Meta and TikTok. If your team is shipping ads off a template and the watch-rate isn't moving, we'll usually find the leak inside two beats. See how we work on how it works, browse recent client output in the portfolio, or start a project when you're ready for the structure to start compounding.

Want scripts that actually convert?

Let's talk about turning your UGC into a creative engine.

Book a Call