Author
Connor McKit
Published
April 19, 2026
Read time
13 min
Tags
Why platform reporting breaks at scale.
Meta and Google reporting is directionally right at small spend and structurally misleading at large spend. The specific divergence modes, why iOS signal loss is worse than the industry averages, what CAPI actually buys you, and how to build a CRM-back source of truth.
There's a stretch of the agency-operator career where you trust Ads Manager. It's the first thing you check in the morning; its numbers are the numbers you report; the gap between platform reporting and the CRM is a quarterly reconciliation, not a daily concern. Then one day you're running an account at $1M/month and you realize the platform is telling you a different story than reality, the gap is widening, and the gap matters. This post is about what actually goes wrong, why it gets worse at scale, and what to do about it.
Written from inside 7-figure monthly accounts where reconciling Meta, Google, and the client's CRM was not optional. If you're running a smaller book and the platform numbers feel roughly right, they probably are. If you're in the zone where every 1% is five figures a month, it's worth understanding where the drift comes from.
The short version
- At $50K/month spend, platform reporting is directionally right and mostly fine as a primary source. At $1M/month, platform reporting is still directionally useful but wrong in the specific ways that matter for specific decisions, and blindly optimizing to it actively loses money.
- View-through attribution is the single largest divergence contributor.It inflates at scale. Click- only attribution is closer to CRM truth, but most agencies run default 7d/1d click/view windows because that's what Meta nudges them toward.
- iOS signal loss is much more uneven than the industry average numbers imply. Specific verticals took 40%+ under-reporting hits while the platform average was 15–20%. Trusting the headline number cost people real money.
- CAPI is not a cure; it's a mitigant. Server-side conversion signal helps, but its quality is bounded by your ID-matching discipline. Most agencies that “have CAPI on” are sending partial, low-match-quality events and getting a fraction of the benefit.
- At $1M/month spend, the platform UI is a lagging indicator of an algorithm that sees different data than you do.You need your own source-of-truth pipeline. The agencies that have built one outperform the agencies that haven't by a material percentage of account revenue.
Finding 1
Why divergence grows with spend.
The obvious first question: why does the gap between platform reports and CRM truth widen at higher spend rather than staying proportional? Three specific reasons we've traced:
- Audience overlap with organic and brand channels.At high spend, you're saturating audiences that also see your brand through organic social, email, SEO, and PR. Meta's attribution model has no way to know that a user who clicked your ad on Tuesday also opened your brand email on Monday and saw your organic post on Sunday. It claims the conversion. Your actual incremental lift is lower than Meta reports.
- Frequency-driven view-through inflation. At $1M/month, you're showing the same ad to the same user many times. View-through attribution fires on any impression in the 1-day-view window. Users who would have converted regardless get an impression, and the platform claims the conversion. The higher the spend, the more of these spurious attributions accumulate.
- Cross-channel cannibalization of Google spend into brand search.When you spend heavily on Google non-brand campaigns, user research behavior shifts: they search your brand name next. Brand-search campaigns catch those conversions and report them. Your reporting stack double-counts unless you specifically control for it — and most stacks don't.
Net effect: the platform's reported ROAS inflates as spend climbs, even when the underlying performance is flat. Agencies that optimize to platform ROAS at high spend get seduced into increasing budgets on campaigns whose incremental lift has already plateaued.
Finding 2
View-through is the big distortion.
If you care about one thing on this topic, care about the attribution window. Specifically: whether view-through impressions count toward conversions.
Meta's default attribution window as of this writing is 7-day-click and 1-day-view. That means a user who saw your ad yesterday and converted today (without clicking) gets credited to that ad. For direct-response campaigns with high brand familiarity, this is dangerously generous.
Specific numbers from one $1M/month account we worked on:
$47
Platform CPL (7d/1d)
$68
Platform CPL (7d click-only)
$78
CRM true CPL (all sources deduped)
~66%
7d/1d CPL vs CRM truth
The platform was reporting a CPL about a third below reality under its default window. A buyer optimizing to that number pushed budget on a campaign that, in CRM terms, was costing the client significantly more per lead than the market rate. This is not a hypothetical. This is a very real, very expensive failure mode.
The fix is to report against click-only attribution internally (we use 7-day click as the default), reconcile monthly against CRM truth, and ignore the view-through number except as a research point. Several sophisticated agencies we know run this way. Most don't, and they're flying with the hood up.
The attribution-window-changes-behavior trap
Here's the thing most people don't know: changing your attribution window in Ads Manager doesn't just change reporting. It changes how Meta's algorithm optimizes.
When you set a 7d/1d window, Meta optimizes the algorithm to find users likely to convert in that window, including post-view. When you set a 7d click-only window, Meta optimizes to find users who will click and convert. The user profiles are different. The bidding behavior is different. The creative that wins is different.
This means moving a $1M/month account from 7d/1d to 7d-click- only isn't a reporting-only change. It's a live change to the optimization logic. Expect a 7–14 day re-learning period and some short-term volatility. We've seen several large accounts make this change without flagging it as an algorithm change, then be surprised when performance wobbled for two weeks. The performance usually stabilizes at a closer-to-CRM-truth number — which is good — but you need to plan the transition.
Finding 3
iOS signal loss is uneven in ways the headline numbers hide.
Apple's App Tracking Transparency (ATT) rollout in 2021 produced a public conversation about attribution signal loss that has mostly been about averages. The industry average under-reporting from iOS was reported as 15–20% through 2024 and trended toward the low end as platforms adjusted. That average obscures the real operational problem.
Our observation across specific verticals, at 7-figure monthly spend:
~12%
Under-reporting — ecom broad-market
~28%
Under-reporting — home services
~45%
Under-reporting — men's health lead gen
~35%
Under-reporting — medical/mental health
Those numbers are the gap between what the platform reported as iOS conversions and what the CRM actually recorded, normalized for organic/direct traffic. The specific verticals we worked in — health, wellness, lead-gen — took harder hits than the industry average suggests. A buyer optimizing against platform reported CPL in these categories was optimizing against a meaningfully distorted number.
Why do specific verticals take harder hits? A few hypotheses that fit the data we saw:
- Apple's ATT opt-in rate is lower for apps handling sensitive information. Users are more cautious about tracking permission in health-adjacent contexts, producing a larger signal gap.
- Conversion windows are longer in lead-gen than in ecom.A user who fills out a form today might book a consultation next week. iOS's ATT signal is weaker over longer windows. Ecom conversions happen faster and hold their signal better.
- Medical categories skew older on iOS share. Older users tend to decline tracking at higher rates than younger users in our observation, which compounds the under-reporting in verticals with older-skewing audiences.
The implication: don't trust the industry-average under-reporting number for your vertical. Measure your own. The right way to do it is to reconcile a full month of platform-reported leads against CRM leads by source, and calculate your own multiplier for each platform, each device class, and each campaign type. Then actually use those multipliers when making budget decisions. Most agencies do the reconciliation once and then forget it; the multipliers drift over time.
Finding 4
CAPI is not a magic wand.
Conversions API (CAPI) — server-side event transmission from your system to Meta's servers — is often sold as the fix for iOS signal loss. It is not a fix. It's a mitigant, and its mitigation strength is bounded by how well you implement it.
A CAPI implementation has roughly three levels of quality:
- Level 1 — pixel-only or CAPI-but-broken. No server-side events, or server events sent without matchable user identifiers. Match quality is low. Meta has no way to attribute the conversion to a specific user profile. Most of the signal benefit is lost.
- Level 2 — CAPI with basic ID matching. Events are sent server-side with email (hashed) as the primary identifier. Phone is sent when available. Meta can match most events to user profiles. This is where most agencies that “have CAPI on” actually are. Most of the mitigation benefit is captured.
- Level 3 — CAPI with full EMQ optimization. Events include email, phone, first/last name, zip, city, state, date of birth, gender, FB click ID (fbc), FB browser ID (fbp), external ID, and event source URL. Meta's Event Match Quality score (EMQ) is above 8/10. Full signal recovery for the events that are tracked.
The difference between Level 2 and Level 3 is meaningful. An EMQ improvement from 6/10 to 8/10 on a $1M/month account produces a measurable 8–15% performance lift in our experience, because Meta's algorithm is making better decisions with better user-matching data.
Getting to Level 3 is engineering work. It requires sending rich event payloads from the conversion point (server receiving a form submission, a booking, a purchase) and maintaining that payload pipeline as the client's funnel evolves. Most agencies pass this off to the client's dev team and cross their fingers. The agencies that have built their own pipeline — or built tooling that lets them own the EMQ at every client — outperform the ones that outsource it.
Finding 5
Google at scale: the brand-cannibalization problem.
Most of this post has been about Meta because Meta's reporting has the more interesting failure modes. A quick section on Google because it has a specific failure mode that costs large advertisers real money and usually goes unflagged.
Here's the pattern: agency spends $500K/month on Google non-brand campaigns. Google reports that these campaigns drove X conversions at Y cost per conversion. Agency also runs a separate brand-search campaign at $20K/month that reports high-volume, ultra-low-CPL conversions. Agency reports total Google performance. Client sees healthy numbers.
What's actually happening: a significant percentage of those brand-search conversions are users who saw the non-brand campaign, searched the brand name to learn more, clicked the brand ad, and converted. Google reports this as a brand-search win. Agency reports it as a Google win. CRM reports it as a conversion.
Everybody's happy. Client's wallet isn't.
The fix is to pause brand search for a controlled window (typically 2–3 weeks) and measure what happens to total conversion volume. On most accounts we've tested, pausing brand search produces a 5–15% drop in total Google conversions — far less than the brand-search campaign was reporting. The delta is the cannibalization. That delta, applied to a $20K/month brand-search budget, is what you're actually saving.
Annual math on one $1M/month Google book: roughly $140K/year in brand-search spend was genuinely redundant on that account. Finding this requires the kind of test most agencies don't run because it feels risky. At this spend level, not running it is the real risk.
Finding 6
What 'source of truth' actually looks like.
The conclusion of all of this: at 7-figure monthly spend, you cannot run performance decisions off platform UIs. You need your own reconciled source of truth. Here's what a decent one looks like:
- Daily CRM-back feed with source tagging. Every conversion tagged with a UTM breadcrumb plus a server-side reference to the platform click ID (fbc/gclid) where available. Held in a reporting warehouse (BigQuery, Snowflake, or just a Postgres with good discipline).
- Weekly reconciliation job. For each platform, for each account, compare platform-reported conversions to CRM-reconciled conversions. Calculate per- platform multiplier. Track drift over time; flag when drift exceeds thresholds.
- Live dashboard that shows reconciled numbers, not platform numbers. Buyers should be looking at CPL-from-CRM and ROAS-from-CRM by default. Platform numbers are the secondary view, for debugging.
- CAPI pipeline owned by the agency, not the client's dev team. Event payloads, match-quality scores, event freshness, all monitored centrally. EMQ above 8 on every active account.
- Quarterly incrementality tests. Brand-search pause tests, holdout tests on specific audiences, geo-holdout tests where the market allows. The point is to measure incremental lift, not reported performance.
This is engineering work. It's not cheap. At $1M/month spend per account, it pays for itself many times over; at $50K/month it probably doesn't. The point at which it becomes mandatory rather than optional is somewhere around $200–300K/month spend per account, in our experience.
What this means
The operator's checklist.
- Audit your current attribution window setup across every active 7-figure account.If you're running 7d/1d, run a parallel 7d-click-only report for 30 days and look at the gap. If the gap is material, it's your actual operating problem.
- Measure your own vertical-specific iOS multiplier.Don't trust the industry average. Reconcile a full month of platform-to-CRM numbers; derive your own ratios.
- Score your CAPI implementation.Open Event Match Quality in Ads Manager; if you're below 8/10 on an active account, that's the lowest-hanging fruit on the book.
- Test brand-search cannibalization. Two- week pause; measure delta; get real numbers on how much of your Google brand-search budget is redundant spend.
- Build the CRM-back reconciliation pipeline before you need it.At $1M/month spend, one quarter of decisions based on distorted signal can cost more than the pipeline did to build. The agencies that have this are beating the ones that don't.
The short version: platform reporting is a useful fiction that gets less useful as spend climbs. At small scale, trust it. At large scale, instrument around it. The agencies that understand this are the ones quietly eating lunch at renewal time.
Percentages and multipliers cited are field observations from 7-figure monthly books we've worked on directly. Vertical-specific under-reporting numbers will vary by audience composition, conversion window, and CAPI maturity. The high-level pattern — divergence grows with spend — holds across every book we've seen. We'll update this post when we're wrong.What Zeke is
The AI client reporting system this research points toward.
Branded AI reports, source-linked QA, client context, AM talking points, and client-ready monthly narratives. Founder pilot $497/mo. Starter $197/mo. Growth $297/mo. Scale $497/mo. No per-seat pricing.
More from Zeke
