Client identifiers removed. Metrics directionally preserved.
This is a real BSD audit with the brand and exact figures anonymised. The pattern, the diagnostic logic, and the directional numbers are reported as they were found.
The account looked healthy from inside the platform. A reported ROAS close to 5x, spend holding, campaigns rotating along. The business underneath it was getting worse every month, and the metric that exposed it was the only one the brand was not looking at.
The brand was running roughly $600k a month on Meta, almost entirely on activewear acquisition. By the platform's own numbers, every dollar was coming back nearly fivefold. By the P&L, the acquisition layer was losing money. Both of those things were true at the same time, which is exactly the problem.
The trap here is a familiar one. When the platform tells you acquisition is fine, you keep funding it. You scale the spend that looks efficient, you stop interrogating the number, and the deterioration compounds quietly underneath a green dashboard.
High product turnover, discount-driven margin, seasonal range rotation.
Almost all on Meta. No incrementality testing in place against it.
A ~30% slide, with recent months falling under 1.0. Below 1 means you pay more to acquire than you make.
Platform-credited return against the actual new-customer return in the P&L.
The pattern.
We index acquisition on one metric: 30-day LTGP:CAC. Gross profit earned from a customer in their first 30 days, divided by what it cost to acquire them. It is the only number that survives comparison across months and across brands, because it moves with both halves of the equation at once.
Here it had fallen from 1.78 to 1.42. On the surface, two recent months looked like a win. Cost to acquire dipped slightly and new customer volume jumped. A standard reporting read calls that an efficiency gain. But gross profit on first order had compressed from around $100 to $80 over the same window, so the real efficiency on acquisition got roughly 30% worse, not better. In November and December the ratio dropped below 1. Those cohorts paid the business less in gross profit than it cost to acquire them, and months later they still had not broken even, because returns drag realised first-order profit down well after the customer is counted.
Visualised over the year, every line was pointing the wrong way. Cost to acquire had climbed from roughly $25 to $70. New customer volume was trending down. Gross profit per first order was drifting lower. The brand was paying more than it ever had to acquire fewer customers than it ever had at the thinnest margin it had ever run. None of that was visible in the ROAS column.
Why it was happening.
The reported return was heavily over-attributed, and it stacked in three layers. First, every campaign ran on 7-day click plus 1-day view. The view-through window credits a conversion when a single pixel renders for under a second, with no click, no watch, no interaction. Stripping it out dropped revenue by around $600k and took the return from 4.87 to 3.86 immediately. Second, existing-customer purchases were being credited inside acquisition because the audience definitions were not set up to exclude them cleanly. Third, even the click-based new-customer revenue the platform claimed was larger than the new-customer revenue the P&L actually recorded for the month.
Then the incrementality read settled it. A prior in-platform conversion-lift test had run with enough spend to hit 99.9% significance, as clean a read as the platform produces. It returned an incremental ROAS of 0.72.
A near-5x reported return, a 1.6 return in the P&L, and an incremental return below 1. Three numbers describing the same spend, and only the worst one is causal.
What it was costing.
The other large leak was existing-customer spend. Around $200k over 30 days was going to people who had already bought, at a frequency of roughly 50 impressions a month. Buy once and you would then see two ads a day, in perpetuity. The reported return on that spend sat near 3.8, which sounds defensible until you remember the lifetime value on those customers is largely already collected. Re-acquiring them erodes margin you have already banked.
We do not let existing-customer frequency run above 7 on any account outside a defined sale period. On a conservative read, well over $100k a month of that spend could come out with little to no incremental loss in returning-customer revenue. It was being counted as efficient because the credited return looked fine. It was not incremental.
When the platform return and the P&L return disagree by 3x, believe the P&L.
The business did around $3m in net revenue in the month the platform claimed it had driven on its own. A reported number that cannot reconcile against the P&L is not a performance read. It is a crediting artefact, and it was steering the spend.
The fix.
- Make the read causal. Move campaigns to 7-day click, drop view-through, run on incremental attribution, and validate with conversion-lift and geo-lift tests on a real cadence rather than a one-off.
- Separate the audiences. Split existing customers into their own campaign with corrected definitions, cap frequency, then test pulling spend down via a holdout before cutting it outright.
- Pivot the objective to profit. Target LTGP:CAC back toward 2-plus rather than chasing acquisition volume, and accept the volume trade-off as a modelled decision, not a default.
The structure had to change before any of this was testable. Existing and new audiences were blended in the same campaigns, and the account was rotating fresh campaigns in monthly, which resets learnings each time. Creative volume was also far too low to hold the spend honestly, around 38 ads a month against a baseline closer to 64, with cold performance propped up by the existing-customer revenue leaking into the same campaigns.
What changed.
The headline shift is the one the brand had already decided commercially without realising the account contradicted it. The goal for the year ahead was profitability, not volume. The account was built for the opposite. Fixing the attribution stops the brand optimising into a number that was never real. Separating the audiences exposes what acquisition actually returns once existing customers are removed from the credit. Holding the spend flat and moving the marginal dollars into creative and incrementality testing does more than handing them to a platform whose top tranche of spend was almost certainly returning below 1. The work was not getting acquisition cheaper. It was getting the brand to optimise against the true number instead of the flattering one.