$5,700 in ads. $100,000 back.
Every page behind it
Four opt-in variants, one two-step form, two thank-you pages, one tracking page. Click any box to open what it does and why it is built that way.
One skeleton, four angles
Every variant keeps the same structure and changes only the angle, so a winner tells you something you can reuse. Change two things at once and the test tells you nothing.
- Qualifying line above the headline. Its job is to make the wrong person leave.
- Headline names the real reason they are stuck, not the outcome they want.
- Three pillars, then date, time, location and price in one row.
- One button. Nothing else on the page is clickable.
- Read rule: only call a winner on a gap of 5 percentage points or more. Less is noise.
The order is the whole trick
Step two sits after the registration, never in front of it. Put the question first and it becomes a gate. On a launch where we did exactly that, 46.8% of the people who typed their name and email were never registered at all.
- The page above the form already says "for entrepreneurs doing more than €10K a month", so the question only confirms what the page has already filtered for.
- Under €10K and no business yet are the unqualified answers here.
- The answer is stored on the person's row, right next to the ad that produced them.
- Five seconds is in the subhead on purpose. It is the reason people finish it.
Send Meta only your buyers
Meta optimises toward whatever you report as a conversion. Report everyone and it goes and finds you more of everyone. Report only the qualified and it starts hunting for people who look like buyers.
- A custom event, e.g.
QualifiedRegistration, fires only on the qualified page. - The ad set optimises for that event, not for "Lead".
- Your cost per lead gets worse. Cost per qualified registration is the number you judge.
- Stronger version: send it server-side through the Conversions API so it survives ad-blockers.
Why it has to be custom
The ad platform stops at the opt-in. The CRM starts at the call. Nothing joins them, so nobody can tell you which ad produced the person who paid. This page is that join.
- A dynamic UTM stamps the ad name onto every click:
utm_content={{ad.name}} - Stored on the registrant's row with their variant and their step-two answer.
- Joined to calls and enrolments on email, then grouped by ad.
- On this launch it showed the best click-through in the account produced 4 registrations at $25 each, while the worst click-through produced 18 at $19.