0.1x or 4.7x? The Top-of-Funnel ROAS Illusion That's Killing Brands on Meta

Nine times out of ten, when a founder tells me their top-of-funnel testing "didn't work", the campaign was actually fine. It was the measurement that lied to them.

The pattern is almost always the same. They spin up something a bit higher up the funnel, watch it report a return of around 0.1x in their attribution tool, panic, and shut it off inside a week. Looks like setting cash on fire. So they retreat to the same purchase campaign hitting the same in-market people, and wonder why new-customer growth has gone flat.

Here's the bit they didn't see. That same campaign, measured properly with a holdout, can come back at something like 4.7x. Same spend, same ads, two wildly different stories. One number says "kill it". The other says "this is the most valuable thing in the account".

So I want to walk through why that gap exists, what's actually happening under the hood, and the exact mechanics we use to set this up for brands, including how to run the test cheaply when you're nowhere near the scale that justifies a pricey measurement subscription.

Why last-click makes top-of-funnel look like a money pit

Start with what your attribution tool is built to see. It rewards the click that happened just before the sale, inside a short window, usually a seven-day click. That's brilliant for catching someone who was already going to buy and just needed the final nudge.

It's hopeless at the other job. When you put an ad in front of someone who's never heard of you, they don't click and buy that afternoon. They see it. They sit with it. A week or three later they search your name, or they tap a retargeting ad, or they come back direct, and that later touch grabs all the credit.

The first ad, the one that actually created the customer, gets a 0 next to it. Multiply that across a whole top-of-funnel campaign and of course it reports 0.1x. You've asked a stopwatch to measure a marathon and it's clocking the last hundred metres.

This is why so many brands have quietly trained themselves out of ever reaching new people. The platform got very good at attributing in-market buyers to itself, the easy ones, and every time you optimise purely for that seven-day click you're asking Meta to go further down the funnel and hoover up demand you already had. It pencils beautifully and it slowly starves the top.

The same campaign, measured two ways

Let me make this concrete with a made-up but very typical example.

Say a homewares brand is spending roughly $90k a month on Meta, almost all of it on standard purchase campaigns, sitting at a blended return of about 2.4x. Growth has stalled. New customers are getting expensive. The founder has read that Meta can still work top of funnel and wants to try it, but every previous attempt "tanked".

So we carve out a slice, say 20% of budget, into a properly upper-funnel setup. In the attribution tool it reports something like 0.2x. Diabolical, on paper. The old instinct is to bin it on day five.

Instead we run a geo holdout. We split the country, show the top-of-funnel ads in one region and not the other, and measure the actual lift in total sales between the two. When that read comes back, the incremental return on that slice lands somewhere around 4.5x, and the new-customer rate across the account climbs.

Nothing about the campaign changed between those two numbers. The only thing that changed was whether we measured the last click or the actual causal impact. To put that in perspective: the tool told us we were losing nearly all the money, and the truth was that slice was outperforming the core campaigns it was sitting next to.

That gap, the one between what the platform reports and what a holdout proves, is the whole game at the top of the funnel. If you judge upper-funnel spend on last-click, you will kill your best growth lever every single time and feel responsible doing it.

The custom event that makes this trackable in the first place

Before any of the measurement, there's a setup step most people skip, and it's the difference between "true top of funnel" that's hard to optimise and a version that actually behaves.

Pure awareness or reach campaigns are a blunt instrument. You're paying for eyeballs with almost no signal back about whether those eyeballs were any good. What works far better is to set up a custom event a notch up the funnel from purchase, and optimise toward that instead.

In practice that usually means optimising for a meaningful product-page view, or a content view on a proper landing page, rather than the purchase itself. You're telling Meta: go find me people willing to actually look at the product, not just people about to check out. The cost per click drops, the CPM drops because you're in a less crowded auction, and you're buying genuine browsing interest at the top instead of paying a premium to fight over the same in-market crowd everyone else is bidding on.

The soft signal to watch while the real test runs: cost per add-to-cart on these campaigns often comes in noticeably better than your best purchase campaigns, an early hint you're onto something before the holdout even confirms it.

The 10 to 50% budget rule

The next question is always "okay, how much do I put behind it?" My answer: somewhere between 10% and 50% of your Meta budget, and expect it to move around a lot month to month.

That's a wide band on purpose. It is not a set-and-forget number. One month you might have it at half your budget because you're pushing hard into a new audience ahead of a launch. The next it might sit at 10% because you're in a heavy promo window and want more weight on conversion. The brands doing this well treat that split as a dial they're constantly adjusting, not a slider they set once.

What I'd steer you away from is the timid version, where someone throws 5% at a reach campaign, sees it "not work" in the attribution tool a fortnight later, and concludes top of funnel is a myth. That's not a test. That's not enough spend to register, measured the wrong way, for not long enough. If you're going to do this, commit enough budget that a holdout can actually see the lift, and give it the runway to show up.

Running a lift test when you can't afford the fancy subscription

Here's where most advice falls off a cliff. Every conversation about incrementality assumes you've got a six-figure measurement contract and a data team. The well-known geo-testing platforms are genuinely excellent, and the big brands swear by them. They're also priced for brands spending serious money, and the going industry guidance is that you don't really need that level of kit until you're north of roughly $5M a year in total ad spend across a messy media mix.

So what about everyone under that? You can still run a perfectly honest lift test. It's more manual, but the logic is identical, and for a single-channel brand it's very doable.

Here's the cheap version we set up for brands not yet at that scale:

  • Split by geography. Pick two sets of regions that look alike: similar revenue, similar historical performance. One is your test group, one is your control. The cleaner the match, the more you can trust the read.
  • Run the top-of-funnel campaign in the test geos only. Hold it out of the control geos entirely. Keep everything else, your normal purchase campaigns, running as usual in both.
  • Measure total sales, not platform-reported sales. Look at the actual revenue lift in the test regions versus the control over the test window. That difference is your incremental impact, and it doesn't care what the attribution tool says.
  • Give it real time. This is the one people rush. Top-of-funnel works on a slow clock. A two-week read is close to useless for this. Six to twelve weeks is more like it, and it helps to start right after a big sale and run through to the next one so a "funnel-clearing" event sits inside the window.
  • Keep a small permanent holdout. Once it's working, leaving even a 5 to 10% region permanently dark is a cheap, ongoing sanity check that it's still pulling its weight.

It's not as tidy as a dedicated platform doing it for you, and you have to be disciplined about not contaminating the two groups. But it's the same scientific method, and it tells you the one thing your attribution tool never will: whether those ads are creating sales that wouldn't have happened anyway.

Where this leaves you

The thing to sit with is that the 0.1x isn't a lie exactly, it's just answering a different question than the one you care about. It's telling you "almost nobody clicked this and bought within seven days", which is completely true and completely irrelevant for an ad whose job is to create demand that converts weeks later.

If your new-customer growth has gone flat and every top-of-funnel test you've run has "failed" in the dashboard, I'd gently bet you've never actually measured it. Before you write off upper funnel for good, run one honest geo holdout: carve out a real slice of budget, optimise to a product-view event, split your regions, and give it six weeks. Then judge it on the lift, not the last click.

Run that exercise once and tell me what you find. My hunch is the campaign you've been killing is the one that was quietly working the whole time.

Ethan To
CEO @ Pigeon Digital