Key Takeaways
- API vs. Ads Manager discrepancies are structural — different data freshness, attribution models, and aggregation logic produce different numbers by design
- iOS ATT causes the majority of iPhone users to opt out of tracking, making 50-65% of iOS conversions invisible to standard pixel tracking
- Access tokens expire silently (~60 days), causing data gaps that go unnoticed until someone checks a dashboard
- CAPI deduplication is essential but tricky — without proper event_id matching, you'll double-count conversions or lose data
- Rate limits make backfilling or extracting across 50+ ad accounts a multi-day engineering challenge
- Breakdown incompatibilities in the API mean certain dimension combinations simply return errors
- Cross-Business Manager reporting has no native API solution — each BM requires separate auth and data extraction
- AI agents via MCP can diagnose discrepancies and run cross-platform comparisons in plain English
1. API vs. Ads Manager Show Different Numbers
The Problem: You query the Meta Marketing API and get 1,247 conversions. Ads Manager shows 1,389. Your CFO asks which number is real. You don't know.
Meta has confirmed this is a known issue — the Marketing API returns different "Amount Spent" values compared to Ads Manager for the same date range and campaigns. The root cause: Meta's internal data pipelines differ between the UI and the API.
Beyond spend, reach metrics are particularly unreliable: Meta explicitly states that "differences between the reach count shown in the API and those displayed in the UI are expected since these counts are calculated through separate systems."
2. iOS 14.5 Destroyed Your Conversion Tracking
The Problem: Apple's App Tracking Transparency means the majority of iOS users now opt out of cross-app tracking — industry data shows opt-out rates of 50-65% on average, with some verticals seeing even higher refusal. Meta lost visibility into the bulk of iPhone conversions overnight.
The fallout:
-
limits you to 8 conversion events per domain
-
of up to 72 hours for conversion data
-
forcibly shortened to 7-day click / 1-day view (28-day click is gone)
-
Impact: Teams using Improvado's unified attribution see 15-30% more accurate conversion counts compared to relying on Meta's reported numbers alone.
3. Access Tokens Expire Silently — Data Goes Missing
The Problem: Meta user access tokens expire after ~60 days. When they do, your data pipeline silently stops pulling data. No error email. No alert. Just... empty rows in your warehouse that nobody notices for days or weeks.
System user tokens (for Business Manager) are longer-lived but break when:
- Permissions change on the ad account
- Business Manager ownership transfers
- An employee leaves and their access is revoked (cascading token invalidation)
4. Conversion API (CAPI) Deduplication Nightmares
The Problem: Meta's Conversions API is the post-iOS solution for server-side tracking. But it's designed to work alongside the browser pixel, which means you need bulletproof deduplication.
matching between pixel and CAPI events. Any mismatch in:
- Event IDs
- Timestamp formatting
- Parameter naming conventions
...results in either double-counted conversions (inflated numbers) or over-deduplication (missing conversions). Meta's Event Match Quality score is opaque and doesn't explain why matches fail.
5. Rate Limits Kill Your Data Backfills
Meta enforces tiered rate limits (Development, Standard, Advanced access). Large advertisers with 50+ ad accounts routinely hit these limits, causing:
- Incomplete data pulls (you get 80% of your campaigns, randomly)
- Backfills that take days instead of hours
- Inconsistent retry behavior (rate limit headers change without warning)
When your pipeline pulls data for 200 ad accounts, you're making thousands of API calls. Hit the limit at account #147, and everything after that is missing.
6. Breakdowns That Don't Work Together
The Problem: Meta's API has cryptic rules about which metrics can combine with which breakdowns. Want reach by age group? Error. Want action breakdowns with time breakdowns? Error. Want video views by placement and device? Maybe, depends on the API version.
These restrictions are poorly documented and return error messages like Error 100: Invalid parameter with no explanation of which parameter is invalid.
7. Numbers Keep Changing Days After the Fact
The Problem: You screenshot your Monday report. By Wednesday, the same Monday data shows different numbers. Meta retroactively updates conversion data for 72+ hours due to delayed attribution and statistical modeling.
There is no "last modified" timestamp or change log from the API. You have no way to know which records were updated unless you re-pull everything.
8. Multi-Business-Manager Chaos
The Problem: Enterprise advertisers operate across 3-10+ Business Managers, each containing dozens of ad accounts, pages, and pixels. There is no cross-BM reporting endpoint in Meta's API. Each BM requires separate authentication, and account settings (timezone, currency, attribution) vary.
When one person leaves the company, their BM permissions cascade-fail across seemingly unrelated accounts.
Solve Meta Ads Data Challenges with Improvado MCP
Ready-to-Use MCP Prompts
Attribution Accuracy Check:
Compare my Facebook Ads reported conversions against GA4 and
CRM data for the last 30 days. Show me the gap between
Meta-reported and verified conversions by campaign.
Cross-Channel Analysis:
Show my Meta Ads performance alongside Google Ads and
LinkedIn for Q1 2026. Unify the attribution model and
show true CPL and ROAS by channel.
CAPI Health Check:
What's my Conversions API event match quality across all
ad accounts? Flag any accounts where match rate is below 6/10.
Spend Reconciliation:
Compare total Meta Ads spend from the API against what was
invoiced. Flag any campaigns with >5% discrepancy.
iOS Impact Analysis:
What percentage of my Meta Ads conversions are "modeled" vs
observed? Show the trend over the last 6 months.
How to Connect Meta Ads Data to AI Agents
Step 1: Get your Improvado MCP credentials
Improvado provides an MCP-compatible endpoint for enterprise customers. Once onboarded, you receive:
-
— your dedicated server address
-
Step 2: Connect to Claude Code
Add the Improvado MCP server to your Claude Code config:
{
"improvado": {
"type": "streamable-http",
"url": "https://mcp.improvado.io/v1/your-workspace",
"headers": {
"Authorization": "Bearer your-api-token"
}
}
}
Then ask in Claude Code:
> Show me my top campaigns by ROAS this month
Step 3: Or connect to Cursor / Windsurf / ChatGPT
FAQ
Why does the Meta API show different spend than Ads Manager?
Meta confirmed that different internal data pipelines serve the API vs the UI. The discrepancy is usually small (<3%) but can be significant for large accounts. Using Improvado's calibrated connector reduces this gap.
How much conversion data did iOS 14.5 actually remove?
Estimates vary, but most advertisers report 30-50% underreporting of iOS conversions. Meta's modeled conversions fill some of this gap, but accuracy varies significantly by vertical and conversion type.
How often do Meta access tokens expire?
User tokens expire after ~60 days. System user tokens are longer-lived but can break when permissions change. Improvado monitors token health and alerts before expiry.
Can I still get 28-day click attribution from Meta?
No. Meta removed the 28-day click attribution window in 2021. The maximum is now 7-day click, 1-day view. Improvado can help you reconstruct longer attribution windows using first-party data.
How does Improvado handle Meta's rate limits?
Improvado uses intelligent queuing with exponential backoff, respecting Meta's tiered rate limits while maximizing throughput. Multi-account extraction is parallelized within safe limits.
What's better — Meta pixel or Conversions API (CAPI)?
Both, together. Meta recommends using CAPI alongside the pixel for maximum data coverage. The pixel handles browser-side events; CAPI handles server-side. Improvado pulls data from both sources.
Tired of unreliable Facebook Ads data? Book a demo →
.png)
.jpeg)



.png)
