Every reporting stack we inherit contains three numbers for the same channel, and all three are wrong in different directions. Meta claims 220 purchases for the month. GA4 last-click credits Meta with 90. The finance export shows revenue that neither number explains. Marketing attribution after iOS is not a data problem you solve; it is an uncertainty you manage. We run accounts on the assumption that no single model is true, and we build reporting that makes good budget decisions anyway.

This article describes the triangulation stack we use across accounts spending $10K–$80K per month, why each layer exists, and exactly what we put in front of founders every week.

No model tells the truth, and each one lies predictably

The useful insight is not "attribution is broken." It is that each measurement source has a known bias direction, and once you know the direction, the number becomes usable.

  • Platform-reported conversions overcount the platform. Meta, Google, and TikTok each claim conversions independently, with click and view windows that capture demand created elsewhere. Add up platform-reported revenue across three channels and it routinely sums to 130–180% of actual store revenue. The bias is worst on retargeting and branded search, where the platform stands between an already-decided buyer and the checkout.
  • Last-click undercounts discovery. GA4 last-click starves the channels that create demand — paid social, video, influencer — and over-credits the channels that harvest it: branded search, direct, email. A team that reallocates budget by last-click will systematically defund the top of its own funnel and then watch branded search volume decay two months later.
  • Self-reported "how did you hear about us" over-represents memorable touchpoints. Post-purchase surveys are cheap and directionally useful, but respondents name the podcast, not the retargeting ad, and response rates of 15–40% skew toward engaged customers.
  • Data-driven attribution models are opaque. GA4's DDA and various MMM-lite tools produce plausible curves, but you cannot audit their assumptions, and they still only see the touchpoints that were tracked.

None of these sources gets vetoed. Each earns a specific role, with its bias priced in.

The triangulation stack

We run four layers, in a strict hierarchy. Lower layers feed optimization; upper layers make budget decisions.

  1. Platform attribution — for optimization inside the platform. Meta's numbers are the signal Meta's delivery system learns from, so we keep them clean and use them to compare campaign against campaign, ad against ad, within the same platform. Relative comparisons inside one attribution system are valid even when the absolute level is inflated.
  2. Server-side events — for signal quality and a consistent event ledger. CAPI on Meta, enhanced conversions on Google, server-side GTM where the stack supports it. This layer does not fix attribution; it fixes measurement coverage, which is a different problem that most teams conflate with attribution.
  3. Revenue reconciliation — for calibration. Weekly, we line up platform-claimed revenue against the order system (Shopify, the billing database, the CRM). The ratio between claimed and actual becomes each platform's deflator. If Meta claims $84K and reconciliation supports roughly $55K of it, Meta's numbers get read at ~0.65 for planning purposes — and a shift in that ratio is itself a diagnostic event worth investigating.
  4. Blended CAC and MER — the decision layer. Total spend divided by total new customers; total revenue divided by total spend. These numbers cannot lie about the whole, because they do not depend on attribution at all. Every scaling, cutting, and reallocation decision is made here.

The hierarchy resolves the arguments that stall marketing teams. When platform ROAS and blended MER disagree, blended wins. When last-click and platform numbers disagree about a channel's contribution, we do not adjudicate — we test.

Server-side events: fix coverage before debating models

Arguing about attribution models on top of a broken event layer is wasted effort, and it is the most common state we find in audits. Before any triangulation, the foundation:

  • Conversions API (or the platform equivalent) firing server-side with browser-pixel deduplication verified via event_id, not assumed
  • Event Match Quality of 8+ on the purchase event — hashed email, phone, and address passed from the order object
  • One canonical purchase event, with value and currency, matching the order system within 2–3% on a weekly pull
  • Enhanced conversions and consent mode configured on Google, so Search and PMax campaigns optimize on the same customers the CRM recognizes

In a B2B SaaS account, rebuilding the event layer so that platforms received qualified-lead events (from the CRM, server-side) instead of raw form-fills changed everything downstream: within six weeks the platforms shifted delivery toward audiences that produced sales pipeline, cost per qualified opportunity fell 38%, and the attribution debate mostly dissolved because every source was finally counting the same thing.

Blended CAC and MER as the decision layer

The mechanics we run weekly, per account:

  • MER = total revenue / total ad spend, tracked as a 7-day and 28-day rolling number against a target derived from margin, not from ambition
  • Blended new-customer CAC = total spend / new customers (returning customers excluded — mixing them in is the most common way blended numbers get quietly flattered)
  • Spend share vs. revenue trend by channel, so a channel can be grown or cut on its marginal effect on the blended line rather than on its self-reported ROAS

The operating rule is simple: platform numbers propose, blended numbers decide. If Meta spend rises 30% and blended MER holds or improves over the following two weeks, the incremental spend is working, whatever GA4 says. If platform ROAS looks stable while blended MER erodes, some channel is taking credit for demand it did not create — and the usual suspects are retargeting and branded search.

Blended metrics have a real weakness: they are slow and unspecific. They tell you the whole is healthy or sick, not which organ. That is why they sit at the top of the stack rather than replacing it — and why the layer below exists.

Holdouts and geo tests where volume allows

When a channel's incrementality is genuinely disputed, we stop modeling and run an experiment. The two designs we actually use:

  • Geo holdouts. Turn the disputed spend off (or down) in a matched set of regions for 2–4 weeks and compare revenue against control regions. This is the cleanest read available to a mid-size advertiser, and it requires no platform cooperation. We size the test so the expected effect is at least 2–3x the region-level revenue noise; below roughly $20K per month in the disputed channel, the math rarely closes and we say so rather than run theater.
  • Audience holdouts on retargeting. Exclude a randomized slice of the retargeting pool and compare purchase rates. Retargeting is where we run this first, because it is where platform over-attribution concentrates. Measured lift is frequently 10–30% of what the platform claims. We have shut down retargeting layers claiming 4x ROAS because the holdout showed the incremental return was below 1x — and blended MER did not move when the spend went away, which was the verdict.

One caveat we hold ourselves to: a holdout result is an estimate with a confidence interval, not a revelation. We treat a test as decisive only when the measured effect is large relative to its noise. Otherwise it updates our deflators and we move on.

What we show founders every week

Weekly reporting is one page. In order:

  1. Blended MER and new-customer CAC vs. target, with 7-day and 28-day trend
  2. Spend and revenue by channel with each platform's claimed revenue shown next to its reconciled deflator, so the gap is visible rather than hidden
  3. Reconciliation check — platform-claimed revenue summed vs. actual revenue, flagged when the ratio moves more than ~10 points week over week
  4. The 3–5 decisions made or proposed — budget moves, tests launched, tests read — each tied to the number that justified it
  5. Creative and funnel diagnostics below the fold: which concepts are carrying spend, per our creative analytics workflow

What we deliberately leave off: multi-touch attribution path charts, channel "assisted conversions," and any platform-reported ROAS presented without its deflator. These artifacts generate discussion and no decisions.

The honest summary of marketing attribution after iOS: precision at the user level is gone and is not coming back. What remains is enough — clean events at the bottom, calibrated platform numbers in the middle, blended economics at the top, and experiments where the stakes justify them. Accounts run this way make slower-looking decisions and better ones. If you want to see where your current reporting stack sits against this standard, the measurement layer is the first thing we score in an audit.

Intelligent Syndicate Research

Written by the operators who run the accounts. No ghostwriters, no invented personas.