Meta Ads
Source Advertising

Meta Ads Data, Delivered to Your Database

Cleaned, enriched and modeled into ready-to-query mart tables. Currently on BigQuery. We run the pipeline, you own the data.

Insightlytics ingests your Meta Ads data — spend, impressions, clicks, conversions and their values across Facebook and Instagram — through Google Cloud’s native Facebook Ads transfer, the Meta Marketing API, or both. We pin the attribution window on every row, re-sync trailing days until Meta’s restatements settle, and model it into mart tables that share one schema with your Google Ads spend. You get the tables and the history; we run the transfers, the API pacing and the monitoring. Everything is written to a database you own — BigQuery today, with more warehouses on the roadmap.

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 marts 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 marts 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 marts 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.

How we work with Meta Ads data

Two routes exist — the native Facebook Ads transfer into BigQuery and the Meta Marketing API — and choosing between them is a consulting decision, not a checkbox.

The native transfer lands fixed insights and structure tables on schedule, with a refresh window of up to 30 days that conveniently covers Meta’s restatement period — but custom breakdowns aren’t supported. The API expresses everything the fixed tables can’t — demographic and placement breakdowns, window experiments, asynchronous report jobs for big ranges — but insights calls are rate-limited per ad account, so large pulls must run as paced async jobs. Which route fits depends on the breakdowns you need and how far your reconciliation against GA4 and your backend goes.

We settle that together at the architecture review — the two routes combine well, and the same marts come out either way, with the attribution window recorded on every row. Running the pipeline — pacing included — is our job: no connector to configure, no quota to babysit.

Refresh, backfill and monitoring

Refresh

Daily. API syncs re-pull a trailing window covering Meta’s restatement period; the native transfer’s refresh window does the same on its side — delayed and modeled conversions flow through either way.

Backfill

As far as Meta’s retention exposes — aggregated history to roughly 37 months, less for some breakdowns — on either route. From first sync, everything accumulates under your retention.

Monitoring

Every sync is checked for freshness, volume and schema drift. Attribution-setting changes arrive as new rows with their window recorded — never as silent redefinitions of old columns.

Delivered to a database you own

Every table — raw and mart — is written to your own database, under your billing and your access controls. Our access is read-only, and if we part ways, everything stays with you.

  • BigQuery BigQuery Marts are built in your own BigQuery project — our access is read-only, and the tables are always yours.

BigQuery is the supported database today. If you run a different warehouse, tell us — the roadmap is driven by requests.

What lands in your database

Not raw insights rows under shifting windows — named mart tables at documented grain, refreshed daily and ready to query.

  • mart_ads_spend_daily Spend, clicks and conversions by campaign per day — one schema across Meta and Google.
  • mart_revenue_by_channel Ad cost next to the revenue it drove, by channel and day.

The standard marts are the starting point, not the ceiling. When your questions need a different shape — another grain, a placement or demographic split, a blended-spend union with your Google Ads marts — we define additional marts for your stack as part of the engagement.

Frequently asked questions

If something is still unclear, a discovery call clears it up fast.

Meta counts view-through and modeled conversions under its attribution window; GA4 and your backend count click-based events on the day they happen. Three systems, three definitions — all internally consistent, none interchangeable. The marts carry each source’s numbers in labelled columns, so the difference becomes a known quantity instead of a monthly argument.

Meta’s moving targets, pinned down — in a database you own.

Free discovery call · Leave with a window and breakdown mapping plan