Everything below is the launch ad set alone — US · Women 45–65 · Broad · Lead,
live 21 August, now paused. Final numbers. The advertising works and the quiz works.
Payment is where it stops: three women reached a payment form and none of them finished.
Lead counts come from the database, not from Meta.
Three and a half days of delivery at $80/day. Everything above the paywall is healthy or better. Everything below it is zero.
You are paying market-beating rates for attention — a 7.71% link click-through rate at $0.32 a click, and a real email address for $1.34 — and then losing 99% of it at the moment of payment. No amount of ad optimisation fixes a funnel that converts nothing at the end.
The ad set holds two creatives. One of them received essentially all the budget.
| Ad | Spend | Impr. | Reach | Freq. | Link clicks | Link CTR | Cost / link click | CPM |
|---|---|---|---|---|---|---|---|---|
| A56 · Says Who · 15s | $322.27 | 13,288 | 11,272 | 1.18 | 1,025 | 7.71% | $0.31 | $24.25 |
| A40 · Says Who 40s · 15s (starved) | $3.05 | 42 | 39 | 1.08 | 3 | 7.14% | $1.02 | $72.62 |
| Ad set total | $325.32 | 13,330 | 11,311 | 1.18 | 1,028 | 7.71% | $0.32 | $24.41 |
Meta's headline clicks metric counts every click on the ad unit, not just the
ones that open your site. Only 72% of them were link clicks; the rest were
reactions, saves, comments, shares, caption expands and taps on the page name. Read the
link-click line, not the click line.
| Metric | Count | CTR | What it means |
|---|---|---|---|
| Meta's headline “clicks” | 1,430 | 10.73% | Every click on the ad unit — do not use this |
| Link clicks — opened the quiz | 1,028 | 7.71% | The real click-through rate |
| Unique link clicks | 961 | 7.21% | Distinct women who opened it |
| On-platform clicks | 402 | 3.02% | Reactions, saves, shares, page taps |
| Stage | Count | Rate from previous | Cost each | Source |
|---|---|---|---|---|
| Impressions | 13,330 | — | $0.024 | Meta |
| Link clicks | 1,028 | 7.71% | $0.32 | Meta |
| Unique link clicks (people) | 961 | 93.5% | $0.34 | Meta |
| Opened the quiz | 996 | 100%+ | $0.33 | PostHog |
| Answered question 1 | 432 | 43.4% | $0.75 | PostHog |
| Gave an email | 247 | 57.2% | $1.32 | Database |
| Reached the paywall | 247 | 100% | $1.32 | PostHog |
| Opened a checkout | 3 | 1.2% | $108.44 | PostHog + Stripe |
| Paid | 0 | 0.0% | — | Stripe |
| Ad | Impressions | 50% watched | 95% watched | Reached 95% | ThruPlays |
|---|---|---|---|---|---|
| A56 · Says Who · 15s | 12,854 | 5,090 | 2,866 | 22.3% | 2,798 |
| A40 · Says Who 40s · 15s | 42 | 11 | 4 | 9.5% | 3 |
Your real click-through rate is 7.71%, not 10.73%. Meta's headline
clicks counts reactions, saves, shares and page taps — 402 of them. Only
1,028 clicks opened the quiz. 7.71% on cold broad targeting is still a strong ad; it is
just not the number Ads Manager shows first, and planning against 10.73% would overstate
your traffic by 39%.
The in-app browser handoff is excellent. 961 unique women clicked the
link and 996 opened the quiz — PostHog counts more arrivals than Meta counts
unique clickers, because Meta's pixel is blocked more often than your own first-party
/ingest proxy. There is no measurable loss at this step at all.
The creative never fatigued. Frequency 1.18 across 11,311 women. You stopped because the funnel does not convert, not because the audience ran out — this targeting has a great deal of headroom whenever the paywall is worth feeding.
Meta reports 239 leads at $1.36. The database holds 247 email addresses, every one attached to a completed quiz, every one distinct — of which 243 are real and four are your own test addresses. The database is the only system that wrote a row, so it is the one to trust: your true cost per real email is $1.34.
Separately, A40 took $3.05 of $325 — 42 impressions. Meta concentrated
delivery onto A56 within hours, so you still have no read on the
40s-targeted cut. It needs its own ad set with its own budget or it will never get
delivery.
Distinct funnel ids reaching each screen since the ad set went live, in the order she meets them. Bar length is volume relative to the first screen. Two screens lose almost everything; the other twenty-seven lose almost nothing.
The bar collapses once, at the top, and then stays almost perfectly flat for twenty-five screens. 996 women see question one and 432 answer it. Of those 432, 57% go all the way to the paywall. Nobody is bored by your quiz — it holds attention better than most onboarding flows do, losing under 2% per question through the middle.
The second real leak is the email gate: 294 reach "Where should we send your plan?" and 247 give an address, so 47 women complete a 25-question quiz and then refuse. That is the most expensive 18% in the funnel, because every one of them was already qualified.
Screens that fire a submit event convert at 95–100% — she answers essentially every question she is shown. The blanks are interstitials with only a Continue button, or the free-text name and email screens, which do not emit the event.
| Screen | Viewed | Answered | Rate |
|---|---|---|---|
| s1-1 · First question | 996 | 432 | 43.4% |
| s1-3 · How old are you? | 405 | 394 | 97.3% |
| s1-4 · A year from now… | 394 | 381 | 96.7% |
| s1-5 · What's changed… | 381 | 364 | 95.5% |
| s2-4 · Stand on one leg | 346 | 345 | 99.7% |
| s2-8 · Do you ever leak… | 343 | 342 | 99.7% |
| s3-1 · How are you sleeping? | 336 | 336 | 100% |
Note what this rules out. The intimate questions — incontinence, hot flushes, who you care for — convert at 99–100%. Sensitivity is costing you nothing. The only screen with an answer-rate problem is the first one.
All paywall events in the ad set's window, split by pricing arm. The experiment went live mid-afternoon on 23 August, so the 114 pre-experiment visitors are this ad set's earlier traffic, who saw the old $99 / $45 / $16 ladder before assignment existed.
| Arm | Offer | Viewed | Scrolled | Scroll rate | Abandoned | Checkouts | View → checkout |
|---|---|---|---|---|---|---|---|
| founding49 | $99 → $49 once | 73 | 37 | 50.7% | 36 | 3 | 4.1% |
| weekly8 (charges $9) | $99 anchor, $16 → $9/wk | 60 | 35 | 58.3% | 27 | 0 | 0.0% |
| pre-experiment | $99 / $45 / $16 | 114 | 56 | 49.1% | 46 | 0 | 0.0% |
| All | — | 247 | 128 | 51.8% | 109 | 3 | 1.2% |
People reaching each scroll depth, by arm. Every checkout came from the shortest-read arm.
weekly8 is read more thoroughly and bought less. 46% of its scrollers reach the bottom of the page against 27% for founding49, yet founding49 produced all three checkouts and weekly8 produced none. Reading further is not interest — it is looking for the catch. An $8-a-week price anchored against $99 invites her to work out what the total is; $49 once needs no arithmetic.
At 73 versus 60 people this is nowhere near significant and you should not call the experiment on it. But it is the only directional signal you have, and it points the same way as every checkout that has ever opened.
119 of 247 paywall viewers produce no scroll event whatsoever. They land on the price and leave without moving the page. Combined with 109 explicit abandon events, the paywall is not losing an argument — it is not getting one started.
Stripe livemode, filtered to real people. Four sessions across three consecutive days — but only three have a matching client-side event, so only three are evidence that a woman actually tried to pay. All on the $49 one-time plan, all founding49, all arriving through the Facebook in-app browser. None of them paid.
| Opened (UTC) | Amount | Location | Device | Checkout type | Outcome | |
|---|---|---|---|---|---|---|
| 23 Aug 15:45 | howellshari3@… | $49 | Toronto | Android · FB app | Hosted | Expired unpaid |
| 24 Aug 03:05 | sunseeker67@… | $49 | Winnipeg | iPhone · FB app | Hosted | Open, unpaid |
| 25 Aug 01:13 | haldanetara09@… | $49 | Edmonton | iPhone · FB app | — | No checkout event |
| 25 Aug 03:19 | nadinedesroches08@… | $49 | Toronto | Android · FB app | Embedded | Started, closed in 0.93 s |
Everything else in the Stripe account within this window is noise and is not counted: four
sessions from your own Hong Kong IPs, and one from a curl/8.7.1 scraper.
haldanetara09 has a live $49 Stripe session with her email on it — and
no checkout event of any kind. Her last recorded action is landing on the
paywall; the session appears four seconds later with no click, no scroll, and no
checkout_screen_viewed in between.
| Time (UTC) | Event |
|---|---|
| 01:13:18.320 | paywall_viewed |
| 01:13:19.165 | paywall_section_viewed — last event, ever |
| 01:13:23 | Stripe session created — no click recorded |
There is no checkout_started for her either, client-side or server-side. So
either her analytics died while the page kept working, or something creates sessions
without a deliberate click. Until that is resolved, Stripe session count
overstates real intent.
Seven checkout_started events exist in total, and the two most recent — the
only ones from the embedded flow — carried no $session_id and no
quiz_public_id, because that flow fired them server-side. They
could not be opened as a replay, attributed to a pricing arm, or joined to a Stripe
session.
The justification was that in-app browsers never deliver client-side PostHog events. Measured across this ad set: 38,367 client events from 1,027 people, 94% of them inside the Facebook or Instagram browser, every day the ads ran. The original observation was real but was a different, already-fixed bug. Those four events were moved back to the browser and deployed to production on 25 August, so the join works again from the next visitor onward.
Four of the seven checkout_started events are the founder's own tests, so
filtering that event without excluding them roughly doubles the apparent demand.
Every embedded checkout that has opened has also closed — but the dwell times say these are not all the same event:
| Who | Opened | Open for |
|---|---|---|
| Your own test (HK) | 00:54:50 | 11.6 s |
| nadinedesroches08 | 03:19:27 | 0.93 s |
| Your e2e test | 03:26:37 | 13.5 s |
Your two tests held the sheet open for 11–13 seconds, which reads as looking at it and
dismissing it deliberately. So checkout_sheet_closed is an ordinary dismissal
event, not evidence of a crash. Only nadinedesroches08's 0.93 s is
anomalous — an order of magnitude faster — and that is a single observation which could
equally be a mis-tap outside the sheet. Worth reproducing; not yet a finding.
Separately, and still true: Apple Pay is not a Stripe
payment_method_type — it is a wallet carried on card,
so ["card"] does not by itself disable it. What the embedded sessions did drop
is link and amazon_pay, and
payment_method_configuration_details is null where the hosted
sessions carried pmc_1RebPq….
The ad is not the problem and neither is the quiz. A 7.71% link click-through rate, a $0.32 link click, a real email address for $1.34 and a frequency of 1.18 are numbers most advertisers would take happily — and the audience is not close to saturated. A quiz that loses under 2% per question across twenty-five questions, including questions about incontinence, is a well-built quiz. Both are assets.
The economics do not work yet and are not close. Three checkout attempts on $325 is $108 each. Even if every one had paid — and none did — that is $106 spent to earn $49. The gap is not a tuning problem; it is roughly 2x, and that is the optimistic reading where checkout converts at 100%. At a realistic 30% it is 7x.
One completed purchase. Everything here is a funnel with a zero at the end, and zero divided by anything is still zero. The moment a single stranger pays $49, every ratio above becomes a real conversion rate you can optimise instead of a hypothesis.