A practical, no-fluff guide for performance teams and agencies.
Meta's Marketing API will give you exactly what you ask for — which is the problem, because the defaults answer a different question than your report does. Attribution settings, impression-date credit and action breakdowns all have to be pinned deliberately. This guide is the Meta-specific mechanics of a weekly Sheets report that holds still.
Business Manager → ad accounts (act_<id>) → campaign → ad set → ad. Pulls run against one act_ per client; the insights endpoint (act_<id>/insights) takes explicit fields, optional breakdowns (country, age, placement) and a time_range in the ad account's timezone.
Meta reports conversions under an attribution setting (e.g. 7-day click / 1-day view). Two consequences:
Meta books a conversion to the date of the impression that earned credit. A user who saw the ad Friday and converted Wednesday lands on Friday — retroactively. So last week keeps rising for ~7 days. Same fix as Google, same discipline: re-pull a trailing window each run so the report converges, and never compare a fresh week to a settled one without saying so.
Results come back as an actions array — purchase, lead, app events, each a typed entry. Pulling "results" without selecting the action type sums things you don't mean. Pick the action that matches your KPI; for app campaigns, treat it as Meta's claim and take outcomes from the MMP, reconciled side by side (why they differ).
Long ranges × breakdowns blow past synchronous limits. The insights endpoint supports async report runs — request, poll, fetch — which is invisible plumbing until the week your pull silently truncates without it.
act_: spend, impressions, the named action — attribution setting pinned, breakdowns as the report needs| Week | Spend | Purchases (Meta, 7dc/1dv) | Customers (MMP) | CAC | Var. |
|---|---|---|---|---|---|
| Jun 8–14 | $13,900 | 1,388 | 1,012 | $13.74 | +37% |
A single low-spend account reviewed monthly. The discipline above still applies manually; the schedule doesn't earn its keep yet.
The Meta Ads → Google Sheets integration pins settings per pull, merges trailing windows, keeps Meta's claims beside MMP outcomes and appends through the same schema-validated, append-only path as everything else.
"Update the weekly report with last week's Meta spend and purchases, reconciled against AppsFlyer."
See this running on your own reports.A 45-minute workflow audit maps your current process and shows exactly what Opera automates — step by step.
Grab the free template, then let Opera keep it updated automatically — append-only, formulas preserved.