Testing and scalingGuide
How to iterate on winning ads: swap the hook, keep the body
Short answer
Lock the body of a winning ad and change only the opening: a new hook, a new city or a new language. Edit and time the body once, time each hook to its own audio, and check every version before upload, so you know each one is complete and actually different.
When an ad works, the part that worked is the easiest thing to break while you make the next version. Most of our own versions of an ad change only the opening. This guide is how we do that without touching the body that already works.
What belongs to the hook, and what belongs to the body?
The hook is the first seconds, up to a cut on a word. The body is everything after it.
When just one thing changes, such as a city, a language or an offer, that change lives in the hook. So the body stays identical across versions. You edit and time it once, and each version replaces only the hook clip in front of it.

That is also what makes iteration cheaper than a new concept. A new hook on an unchanged body is a variation of something that already worked. A new concept starts from nothing, with nothing proven under it.
How does the split workflow run?
The steps are the same every time.
- Lock the approved edit, and mark where the hook ends, on a word boundary.
- Write each new hook as its own short script.
- Make the voice for the hooks only. The body’s audio stays as approved.
- Time each hook’s captions to that hook’s own audio.
- Put each hook in front of the unchanged body.
- Check every version before upload.
Step 2 is where variation is won or lost. In our experience, low variance is the clearest fingerprint of a machine: the same skeleton, the same turning point and the same ending, script after script. Across a batch, we don’t reuse the same hook, turn or ending. If two scripts could swap sentences and nobody would notice, one of them gets rewritten.
Three hooks, one body
How do you caption each hook?
Time the captions of every hook against that hook’s own audio, not against the master hook’s. The length of a hook varies by a few tenths of a second from one voice take to the next, and captions timed to the wrong audio drift.
We show each caption group just before its first word is heard, and we verify the sync with speech-to-text on the rendered audio of every version. The timing targets we use, our own and not an industry standard, are in our video ad QA checklist.
If a caption still needs a human touch, fixing a word or swapping a clip is something you can do yourself with Quick edits Early access. Early access: we set it up with you. Coming: we’re building it.
How do you check each version?
Every version gets the same four checks before it goes anywhere.
| Check | What it catches | How |
|---|---|---|
| Length close to the master hook, within about a third | A hook that was cut short or runs on | Compare durations |
| File is not empty | A silent failure in the voice or the render | Check the size and the audio track |
| Files differ from each other | A text-to-speech or voice step that never ran, so two versions are the same | Compare file hashes (md5) |
| Captions follow this hook’s audio | Captions timed to another hook | Run speech-to-text on the rendered audio |
Source: our own production rules, October 2026.
What is the trap when only the hook changes?
A script that regenerates whatever is missing can regenerate the body when only the hook is missing. In our runs, regenerating the voice gave a different take each time, so you end up with a different body than the one you approved, and the mismatch is easy to miss. The rule is to touch only the hook file.
Variant maker Coming is how we plan to keep that rule for you: a new hook, city or language on the same approved body, with the checks above. It does not exist yet, and in our own studio today the same rule lives in our scripts.
Can you change the voice without recutting?
Yes, if you treat the voice as the thing that moves and the cut as the thing that stays. When we change a voice, we don’t make new clips. We build a word map from the old voice to the new one and shift the existing beats onto the new rhythm.
Before building, we list the beats that now ask for too much stretch, over 1.4×, or for a freeze longer than 0.5 s. Each one gets a different clip, a longer neighboring beat or a new clip. Swap the voice, keep the cut Coming would do that mapping on the edit you already approved, and it is also something we’re building.
For variation across voices, we made one good read in our older Danish rounds, tightened it, and then ran it through speech-to-speech to get several voices. The order matters: tighten first, change the voice second, normalize loudness last. Setting up the voice itself is covered in ElevenLabs for ad voiceovers.
A new language can change timing, idiom and the meaning of a claim. In our production in October 2026, the translated version gets its own language review and final approval. The dedicated city and language versions guide covers those dependencies, while localization explains why a direct sentence-by-sentence translation is often a poor script.
- 01A native speaker reviews the script
- 02A short voice sample
- 03Speech-to-text on the sampleDoes it match the script?
- 04Then generate
Why change only one thing per test?
Change one thing at a time. Otherwise a difference between two ads can’t be traced to anything, and you learn nothing from the result. A new hook on an unchanged body is an iteration, not a new concept, and it should be written down as a guess before the ad is made. How we run that is covered in creative testing on Meta.
- One changeYou know what moved the resultThree changes at onceYou can’t tell which one did
- One changeIt is an iterationThree changes at onceIt is a new ad with nothing proven under it
Where do new hooks come from? Mostly from your own ads and your own footage, which is the subject of UGC hook ideas from our own ads. And if the same few ads keep running until people stop reacting, the bigger picture is in creative fatigue on Meta. How notes turn into the next take is on the product page.
Who wrote this We made the ads first, for SmartSolar in Denmark, Sweden and Ireland. Then we built Turntake. Where Turntake comes from
FAQ
What does it mean to iterate on a winning ad?
It means keeping what worked and changing one thing. In practice that is usually the hook: you lock the body of the ad and try a new opening, a new city or a new language. Because the body stays the same, any difference between versions can be traced to the part you changed.
Do I have to re-edit the whole ad for a new hook?
No. Edit and time the body once, then replace only the hook clip in front of it. Time each hook’s captions to its own audio, and check every version before upload. The one thing to avoid is re-running a script that regenerates the body, because in our runs the voice came out different every time.
Can I translate a winning ad?
You can make a language version, but treat it as its own job and not as a swap. Have a native speaker review the script first, and run a short voice sample through speech-to-text before you pay for generation. ElevenLabs documents a dubbing product for translating audio and video, and we still review every language we ship.
How do I know each version actually changed?
Check three things per version: its length is close to the master hook, the file is not empty, and its file hash differs from the other versions. Identical hashes mean the voice or text step never ran, so two versions are the same ad. Then watch each hook once with the sound on.
Sources
- ElevenLabs: Dubbing checked 10 October 2026
Model facts come from each maker’s own documentation, checked on the date shown. Models change, so read the source again before you plan a batch.