What this page is
It is one screen that follows a single person from the ad they clicked all the way to the money they paid. That sounds obvious. No tool in the standard coaching stack does it.
Meta knows about the click and the opt-in. The CRM knows about the call. Stripe knows about the payment. None of them share a key, so nobody can answer the only question that matters: which ad produced the person who actually paid?
So the page does one job. It stamps every registration with the ad that produced it, then joins that to what happened on the call. Once those two facts live on the same row, everything else on this screen is just a query.
It took an afternoon. It replaces the entry tier of a tool that costs $459 a month.
How we built it
Four steps. None of them are clever, and that is rather the point.
Stamp the ad onto the click
Meta swaps these tokens per ad automatically. It goes in the URL parameters field at ad level, once, and then every click carries its own origin.
utm_source=facebook&utm_medium=paid_social &utm_campaign={{campaign.name}} &utm_content={{ad.name}} &utm_term={{adset.name}} &utm_placement={{placement}}
Store it with the person, not the session
On opt-in, read the parameters off the URL and write them to the registrant's row. This is the step everyone skips, and it is why their data dies at the form.
// registrant row { email, name, utm_content: // the ad name utm_term: // the ad set variant: // which page they saw qualified: // from the step-2 answer created_at }
Join it to what happened on the call
Calls and enrolments live in the CRM and the tracker, not the pixel. Match on email and the row now carries the outcome as well as the origin. This join is the entire product.
registrations LEFT JOIN calls ON email LEFT JOIN enrolments ON email
Group by ad and read it
Now cost per registration, cost per call and cost per enrolment are all one GROUP BY
away. That is the whole dashboard.
SELECT utm_content, count(*) -- registrations count(call_id), count(enrol_id) -- the invisible part FROM joined GROUP BY utm_content
Where the ad platform stops looking
Meta can report the top two rows. It has no idea the bottom four happened, because they happen on calls and in a CRM.
All 17 ads, as the page sees them
Sorted by registrations. This is the part the platform can see, and it is still the part almost nobody reads properly. Note how badly click-through rate predicts anything.
| Ad | Spend | Impr. | Clicks | CTR | CPC | Regs | Share | Cost/reg | |
|---|---|---|---|---|---|---|---|---|---|
| Ad static 8 | €323.83 | 9,002 | 250 | 2.78% | €1.30 | 18 | €17.99 | top | |
| Ad static 1 | €255.06 | 6,119 | 175 | 2.86% | €1.46 | 13 | €19.62 | ||
| Hook 5 body 2 | €191.22 | 3,389 | 100 | 2.95% | €1.91 | 12 | €15.94 | best video | |
| Hook 5 body 1 | €91.94 | 3,150 | 419 | 13.30% | €0.22 | 4 | €22.99 | CTR trap | |
| Ad static 5 | €61.69 | 1,485 | 39 | 2.63% | €1.58 | 3 | €20.56 | ||
| Hook 3 body 2 | €20.61 | 393 | 25 | 6.36% | €0.82 | 3 | €6.87 | cheapest | |
| Ad static 9 | €22.23 | 394 | 6 | 1.52% | €3.71 | 3 | €7.41 | ||
| Ad static 3 | €88.85 | 2,622 | 143 | 5.45% | €0.62 | 2 | €44.43 | worst cost | |
| Hook 3 body 1 | €26.38 | 690 | 94 | 13.62% | €0.28 | 2 | €13.19 | ||
| AD static 4 | €30.02 | 725 | 33 | 4.55% | €0.91 | 1 | €30.02 | ||
| Hook 4 body 2 | €12.84 | 239 | 4 | 1.67% | €3.21 | 1 | €12.84 | ||
| Hook 2 Body 1 | €15.55 | 388 | 52 | 13.40% | €0.30 | 0 | — | cut | |
| ad static 6 | €11.49 | 208 | 8 | 3.85% | €1.44 | 0 | — | cut | |
| Ad static 7 | €10.24 | 261 | 5 | 1.92% | €2.05 | 0 | — | cut | |
| Hook 4 body 1 | €10.12 | 218 | 14 | 6.42% | €0.72 | 0 | — | cut | |
| Hook 2 Body 2 | €9.37 | 151 | 9 | 5.96% | €1.04 | 0 | — | cut | |
| Ad static 2 | €8.71 | 154 | 1 | 0.65% | €8.71 | 0 | — | cut |
The creative behind the numbers
Nine statics and three video ads ran in this account. Every row in the table above is one of these. The statics did the heavy lifting: about 40 of the 62 registrations came from them, not video.
What it changed
Four decisions came out of this screen, and all four were the opposite of what the ad platform would have suggested.
| Decision | What the page said | What a CPL dashboard would have said |
|---|---|---|
| Which creative to scale | Static 8 and Hook 5 body 2. Real volume, under €18 a registration. | Hook 5 body 1 and Hook 2. Cheapest clicks in the account. |
| Which to kill | Six ads with spend and zero registrations, plus static 3 at €44 each. | Keep them. Their CTR looked fine. |
| Is €19.20 a registration too much? | No. Six enrolments make it the cheapest acquisition on the account. | Yes. Cut spend and chase a cheaper lead. |
| Did the launch work? | €5,050 in, ~€87,000 contracted. | Cannot answer. Stops at the opt-in. |