The problems we solve
Meta’s numbers are moving targets by design — windows,
restatements, modeled conversions. These are the problems every
performance team hits, and the ones this pipeline is built around.
Which attribution window are you even looking at?
Conversions change with the window — 1-day view, or 1-, 7- and 28-day click — and the defaults have changed over the years, with some windows retired outright. A 2023 number and a 2026 number under ‘the’ window may be under different windows, and nothing in a raw export warns you.
Any serious historical dataset must record the window per row. Ours does — the window sits next to the metrics on every row, which is what makes year-over-year comparisons defensible.
Why did last month’s Meta Ads ROAS change after the fact?
Restatement. Meta keeps attributing delayed and modeled conversions onto past days for up to about 28 days, so ROAS computed in the first week understates what the platform will eventually report. A report frozen on day two is wrong by week four — not because anyone lied, but because the platform kept counting.
The pipeline re-syncs a trailing window until rows stop moving, and the data models record when a day was last restated — so ‘final’ has a date attached.
Why don’t Meta Ads breakdowns sum to the total?
Breakdown rows are a different query than the account total: privacy thresholds suppress small cells, modeled conversions don’t always decompose cleanly, and some breakdown combinations are simply disallowed — one pull can’t give every cut.
Expecting the pieces to sum to the whole is the wrong mental model. The data models store totals and breakdowns as separate, labelled grains, so each answers its own question honestly.
Why don’t Meta conversions match GA4 or your backend?
Meta counts view-through conversions (someone saw the ad, never clicked, bought anyway) and — since ATT — statistically modeled conversions for opted-out iOS traffic; click-based analytics can’t see either. The three systems measure three different things and disagree by construction.
Putting their columns side by side — labelled, over the same spend rows — is the only reconciliation that survives contact with a finance review. That’s what the data models do.
How much Facebook Ads history can you actually keep?
Meta’s retention has layers: aggregated insights reach back roughly 37 months, and some detail — hourly breakdowns, unique counts — stops earlier. The window rolls forward daily, so history you don’t capture is history you lose.
Landing the data in your own database ends the countdown: whatever the pipeline pulls is preserved forward under your retention, not Meta’s.