Why your dashboard says the ads are working while your bank account disagrees.
Here is a symptom I get called about more than any other. Your cost per acquisition has been falling for three quarters. The channel dashboards are green. The weekly report looks like a job well done. And new revenue has not moved an inch.
Both of those things are true at the same time, and the space between them is the single most expensive problem in performance marketing, because nobody in the building can see it.
The tell
At one company I later worked with, an agency spent over $15,000 in ad budget and brought back fewer than five subscribers. That is an acquisition cost many multiples of what those customers would ever pay back. It ran for months before anyone noticed, and the reason nobody noticed is the whole point of this piece: the reporting could see a signup and nothing after it. On paper the campaign was buying signups cheaply. In the bank it was buying almost nothing.
That is the tell. When cost per signup and actual revenue disagree, one number is counting something that becomes money and the other is counting activity that never does. Usually the cheap, healthy-looking number is the one that means nothing.
The platform does exactly what you ask
When you launch a campaign on Meta or Google, you pick a conversion event for the algorithm to optimize toward. That single choice matters more than most founders realize. The optimizer is not trying to grow your revenue. It is trying to produce more of the exact event you named, at the lowest possible cost, and it is very good at it.
Tell it to find signups and it will find the people who are cheapest to convince to create an account: free-tier users, incentivized clickers, low-intent traffic from wherever accounts are cheapest to acquire. Your cost per signup falls quarter after quarter, because the system keeps getting better at the thing you actually asked for. Most of those people were never going to pay you.
Nothing here is broken. The optimizer is doing its job well. It is pointed at the wrong event, and it will keep hitting that wrong event precisely for as long as you let it.
This is why the fix is rarely "spend more" or "change the creative." When the event you optimize for is wrong, a bigger budget just buys more of the wrong outcome.
Why the browser can no longer be trusted
Suppose you already know to aim at a better event. There is a second, quieter failure underneath the first: the way most accounts still report conversions is a browser pixel, and the browser has become a poor place to measure from.
Three forces have hollowed out pixel data over the last few years. Safari and iOS privacy limits cap how long tracking cookies live and block a large share of third-party measurement. Consent banners and ad blockers stop the pixel from firing at all for a meaningful slice of your traffic. And the events that matter most to a subscription business often do not happen in a browser in the first place. A trial that converts to paid two weeks later, a renewal, a plan upgrade, a deal that closes in your CRM: none of that is visible to a tag sitting on a page.
So even a well-aimed campaign is often learning from a partial, decayed picture built out of the earliest and most trackable actions. The platform optimizes on what it can see, and what it can see keeps shrinking.
The correction is server-side conversion tracking. Instead of trusting a browser to phone home, you fire the event from your own backend, where the truth already lives, straight to each platform. Meta's version is the Conversions API. Google's are Enhanced Conversions and offline conversion import. The mechanics differ, the idea does not: report the real event, from the system of record, at the moment it actually happens, even when that moment is days after the click and nowhere near a browser.
That is as much of the mechanics as a founder needs. You do not have to set any of it up yourself. You do need to know one thing: if your conversions are still reported by a browser pixel alone, the platforms are optimizing on a fraction of what actually happened, and that fraction shrinks every year.
The fix is shorter than you think
Every time I have untangled this, the fix started embarrassingly simple: a standard dictionary of value events, defined once, used everywhere. For a subscription business it is usually four.
- Signup — account created
- Trial — trial started
- Subscribe — first paid subscription
- Purchase — every payment after that, including renewals and reactivations
You fire those four from the backend to every destination at the same moment: the ad platforms, the email tool, the affiliate system, the data warehouse, and one shared dashboard the whole team reads from. Same event, same definition, same instant, everywhere. Then you point each campaign at the event that actually correlates with revenue, which for most businesses is Subscribe or Purchase, not Signup.
The engineering is not the hard part. The hard part is organizational: getting the backend time to build the fanout, and getting everyone to agree on what each event means so that finance, marketing, and the ad platforms are finally counting the same thing. Do that and a problem a company has lived with for years can close inside a quarter.
A 20-minute self-audit
You can diagnose most of this yourself before you call anyone. Sit down with whoever owns your ad accounts and your tracking and answer these honestly.
- 1. Name the exact event each paid campaign optimizes toward, right now. Not the goal in your head, the event selected in the account. If nobody can say without logging in, that is finding number one.
- 2. Is that event revenue, or a proxy for it? Signup, lead, landing-page view, and add-to-cart are proxies. The platform will produce proxies cheaply and endlessly.
- 3. Can you see CAC by that event and by an actual paid customer, side by side? If you only have the proxy number, your reported CAC is fiction, and it is probably the flattering kind.
- 4. Are conversions reported browser-side or server-side? Ask directly. If the answer is "the pixel," you are losing a chunk of every conversion you do earn.
- 5. Do your ad platform, your billing system, and your finance numbers agree on how many customers you got last month? If they disagree by more than a rounding error, the platforms are optimizing on a number nobody in the building actually trusts.
- 6. When did someone last confirm the events are still firing correctly? "We set it up a couple of years ago" is not an answer. Tracking rots silently after every site change.
If you flunk three or more of those, your acquisition is being steered by a broken signal, and every additional dollar of scale multiplies the error rather than your revenue.
What it is worth
This is not a growth hack. It is the precondition for every other growth decision you will make. You cannot scale spend, test pricing, or judge a channel on numbers nobody believes, so until the signal is honest, most of your marketing decisions are guesses.
When I ran this sequence at FX Replay, campaigns that had spent years optimizing on signups were re-pointed at the Subscribe event, and paid LTV-to-CAC came in between roughly 4:1 and 15:1. The budget did not change character. The target did, and suddenly the same money was buying customers instead of account-creators. The full story is in the FX Replay case study, where fixing this signal was the first of three moves that grew ARR 2.6x.
Most companies that call me are some version of that before-picture: a product that genuinely sells, a dashboard and a bank account that tell different stories, and a history of ad spend that made everyone gun-shy. Rebuilding the signal is almost always the first thing I check, because nothing else you try is measurable until it is fixed.
If your cost per acquisition is falling and your revenue is flat, you probably have a signal problem. That is exactly what a growth audit is for. Let's talk.