The CAPI rebuild worked. Match quality settled in the trustworthy range. Server events reconciled cleanly against the Shopify register. Every dashboard glowed green. The data team was done. A month later, the paid social team was miserable, their creative rotation was worse than before the rebuild, and nobody could figure out why.
This is the postmortem on that incident. The CAPI work was not wrong. It was incomplete. The missing piece was the feedback loop from server-side match quality back into creative decisions. Without it, the creative team was still making calls against platform CPA, and platform CPA was lying about which ads were actually working.
- 0CAPI fires cleanly
Match quality 8.7. Events dedup correctly. Dashboards green.
- 1Creative team picks winners
- 2Winners underperform at scale
- 3Root cause traced
- 4CAPI signal wired into creative report
- 5Rotation decisions change
The setup
A mid-market DTC brand I worked with ran a full CAPI rebuild: server-side container, event_id deduplication, hashed customer-info parameters, external_id on upper-funnel events, proper consent gating. Match quality moved into the range where Meta treats signal as trustworthy. The attribution gap tightened materially. By any measure, the CAPI work was a win.
The creative team had no involvement in that work. They watched the CAPI team shipping, saw match quality go up in the dashboards, and kept doing what they had always done: review platform CPA per creative weekly, rotate the bottom 20 percent, promote new concepts from the testing campaign when CPA landed below benchmark.
The failure
Two months after the CAPI rebuild, blended MER had not moved. The creative team was frustrated. They had tested 25 new concepts across two months, the platform CPA said 8 of them were winners, but when the "winners" got scaled to $3K/day, blended MER did not improve. Some of the winners actively dragged MER down.
The creative lead asked the question that unlocked the postmortem: "Why does an ad with great CPA in testing fall apart when we scale it?"
Root cause
Platform CPA in testing is calculated against platform-attributed purchases. After the CAPI rebuild, the attribution model included more events than before, but the attribution was still platform-centric. A creative that looks like a $32 CPA winner at $500/day might have been winning mostly on retargeted traffic the platform was claiming credit for. At $3K/day, the retargeting pool saturates and the creative is being asked to earn net-new customers, which it was never actually doing in the test.
The underlying dynamic was invisible to the creative team because their decision data was platform CPA in isolation. What they needed was a fused view: per-creative attribution that incorporated CAPI match quality weighting and separated first-touch from retargeted conversions. That view did not exist inside their monthly rhythm. The CAPI team had built the data layer. They had not built the view on top of it.
The fix
We built a weekly creative report with three columns per creative concept.
Column 1: Platform CPA (the legacy view, kept for continuity and for spotting platform-side issues)
Column 2: CAPI-weighted cost per new customer acquisition. This column uses server-side events to separate net-new customers from retargeted purchasers. It incorporates match quality: high-match-quality events count at face value, low-match-quality events count at 70 percent. The weighting acknowledges that the platform's attribution of low-match-quality events is partly speculative.
Column 3: Incremental revenue lift estimate. Derived from our ongoing incrementality tests. Each creative concept has a rough lift multiplier based on the concept's historical relationship between platform-claimed revenue and incremental revenue measured in pause tests.
The report goes to the creative lead every Monday. Rotation decisions now use Column 2 as primary and Column 3 as cross-check. Column 1 stays for diagnostic purposes but is no longer the rotation driver.
What changed in outcomes
Blended MER moved from 2.1x (roughly where it had been before the CAPI rebuild) to 2.6x over the next 8 weeks. The creative testing hit rate did not change: we still produce roughly 30 percent winners. What changed was which concepts got scaled. Concepts that had previously been called winners on platform CPA but were actually harvesting retargeted traffic got killed before scaling. Concepts that looked mid-pack on platform CPA but showed strong net-new-customer pull got scaled instead.
The creative team reports they are now making decisions they can defend to the founder in plain language. Platform CPA was easy to defend to other marketers and hard to defend to the P&L. CAPI-weighted cost per new customer reconciles both conversations.
The organizational lesson
The CAPI rebuild was framed as a data project. It should have been framed as a creative operations project with a data dependency. Because it was owned by the data team, the output was a dashboard. Because creative rotation was owned by a different team, the dashboard went unused. The feedback loop only worked when we explicitly added the deliverable of a weekly creative-facing report, scoped with the creative lead, and tied to the Monday rotation meeting.
The same pattern shows up at most DTC brands I audit. The data team ships CAPI, the creative team never sees the signal, and the operator wonders why the expensive rebuild did not move MER. The fix is always the same: build the report that consumes the CAPI signal and puts it in the hands of the person making the creative decisions.
“The CAPI rebuild is half the job. The other half is wiring the signal back into the decisions that shape the ad account. Most teams ship the first half and skip the second.
”
The minimum version
If you cannot build the fused three-column report immediately, the minimum viable version is one change: separate platform CPA into "platform CPA, first-touch" and "platform CPA, retargeted" for every creative in your testing campaign. This is available through Meta's attribution breakdowns if your pixel and CAPI are properly configured. It will not be as clean as the CAPI-weighted view but it captures most of the decision-relevant difference.
A concept where the first-touch CPA is $80 and the retargeted CPA is $25 will blend to $35 platform CPA. The $35 looks great. The first-touch reality tells you this concept is a retargeting harvester and will not scale. A concept where first-touch is $42 and retargeted is $38 blends similarly but tells a completely different story: this concept is earning new customers and will hold at scale.
Most creative teams never see this breakdown. It takes 15 minutes to set up in Ads Manager. The decision quality improvement is out of proportion to the effort.
The quarterly incrementality tie-in
Incrementality tests should feed this report quarterly. Each major creative concept that ran at scale gets a pause-test measurement of its real lift contribution. The lift data gets multiplied back into the Column 3 estimate for future creatives that resemble the tested concept. Over time, the estimates get calibrated against reality and the creative team can trust Column 3 as more than an educated guess.
This is the closed loop: CAPI signal feeds the weekly report, incrementality tests calibrate the estimates in the report, creative rotation uses the report, outcomes improve blended MER. When any link in the chain is missing, the rebuild feels like a waste. When the chain is intact, the CAPI work compounds.
Does this work if I use a warehouse-based attribution model instead of Meta's own attribution?
Yes, and better. A warehouse-based attribution model built from first-party session data reconciles more cleanly against the Shopify register than any platform attribution can. The Column 2 calculation becomes more rigorous. The principle is the same: fuse server-side attribution with a creative-facing report.
How often should the creative report run?
Weekly for active creative rotation decisions. Monthly for portfolio-level review. Quarterly for incrementality calibration updates. Daily is too noisy.
My CAPI match quality is only 7.2. Do I need to fix that before building this report?
Build the report with what you have. A 7.2 match quality CAPI is already more reliable than pure platform CPA. You will get better decisions from the fused view even if the CAPI layer is imperfect. Then fix match quality in parallel.
Related reading
This postmortem sits inside the paid social for DTC operators hub. The measurement backbone is MER over platform ROAS. The creative-side mechanics are covered in spotting creative fatigue before CPA moves. For the CAPI work underlying all of this, see the Meta CAPI field guide and the DTC Stack Audit, which runs the checks that make this loop possible.
