At a glance
Gross media cost billed by Meta across every campaign in the selected ad account, summed over the period. The denominator of every Meta efficiency metric (ROAS, CPA, CPM, CPC).
| What it counts | SUM(spend) from the Meta Marketing API Insights endpoint, aggregated at account level. Includes every campaign objective (Sales, Leads, Traffic, Awareness, Engagement, App Promotion) and every placement (Facebook Feed, Instagram Feed, Reels, Stories, Audience Network, Messenger). |
| Insights API level | Account-level (act_<id>/insights). Per-campaign / per-adset / per-ad totals always sum back to this card to within sub-penny rounding. |
| What “spend” means | Gross media cost in account currency, before any agency markup, MAP rebate, or Meta credit. This is the figure on your Meta billing invoice. |
| Currency | Account currency, set when the ad account was created. Cannot be changed. Multi-currency advertisers run separate ad accounts per currency, this card is per-account. |
| iOS 14.5+ ATT impact | Spend is unaffected by the iOS 14.5 Apple Tracking Transparency change. Meta still gets billed for every impression / click. The downstream impact is on conversion_value (the numerator of ROAS), not on spend. So you can trust this number even if your ROAS card looks wrong. |
| CAPI vs Pixel | No effect on this card. Conversions API rollout matters for revenue and conversion attribution, not for spend. |
| Frequency cap relevance | If you have a frequency cap configured at adset level, Meta will pace delivery (and therefore spend) to stay under it. Hitting the cap typically slows spend in the second half of a flight. |
| Refunds / credits | Meta credits (e.g. for over-delivery or platform issues) appear as negative spend lines in billing but do not net out of spend in Insights. This card matches Insights, not billing. |
| Time window | T/7D/30D vsP (default 30D vs the prior 30D). Today’s value updates with 1, 4 hour ingest lag. |
| Alert trigger | spike >2σ vs 30D baseline. A daily spend reading more than two standard deviations above the trailing 30-day mean fires the card. |
| Roles | owner, marketing, finance |
Calculation
Calculated automatically from your Meta Ads (Facebook) data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A UK fashion brand running Meta Ads across Facebook and Instagram. The 30-day window covers 02 Apr 26 to 01 May 26. The brand has Conversions API live for web, Pixel-only for mobile.| Campaign objective | Spend (£) | Impressions | iOS share | Notes |
|---|---|---|---|---|
| Sales (Advantage+ Shopping) | 14,200 | 4.1M | 62% | Opaque optimiser, runs across all placements |
| Sales (Manual broad audience) | 5,800 | 1.7M | 58% | Cold prospecting |
| Sales (Retargeting, 90D site visitors) | 2,400 | 0.6M | 71% | Warm audience |
| Engagement (Reels boost) | 1,200 | 2.2M | 64% | Awareness-tier, low spend |
| Total (this card) | £23,600 | 8.6M | 63% |
- iOS-traffic conversions are structurally undercounted on Pixel-only campaigns. The mobile-app Sales campaign reads 4.6× ROAS in Meta but the Shopify UTM-tagged figure says about 2.1×. The 60% iOS share is invisible to Pixel after ATT consent rejection. CAPI catches a further 35, 50% of the iOS conversions but doesn’t fully close the gap. The “true” ROAS is between Meta’s claim and Shopify’s claim, weighted toward Shopify.
- Modeled conversions inflate the headline. Meta auto-fills attribution gaps with statistically-modeled conversions; for this account that’s roughly 12% of
conversion_value. You can’t switch them off (this is by design since iOS 14.5). The modeled figure can over- or under-state, depending on Meta’s view of your audience. - Advantage+ Shopping is intentionally opaque. £14,200 spent, no breakdown by audience, placement, or creative beyond what Meta’s Advantage+ overview shows. You see total ROAS, you don’t see why it’s that ROAS. Same trade-off as Google Performance Max.
- Spend held flat vs the prior 30D (£23,800), ROAS dropped from 3.3× to 3.0×. A flat-spend / declining-ROAS pattern is the creative-fatigue signature, the audience has seen the ads ~4-5 times each (frequency 4.2 in Meta’s reporting). Plan a new creative drop within the next 7-10 days.
- Reels engagement spend looks wasteful (£1,200, no attributed sales). That’s expected, the objective was Engagement, not Sales. Don’t compare ROAS across objectives. Use Spend by Campaign split by objective for honest reads.
Sibling cards merchants should reference together
Total Spend on its own only tells you how much you’ve burned. Pair it with these to know whether the burn was worth it:| Card | Why pair it with Total Spend | What the combination tells you |
|---|---|---|
| Total Revenue | The numerator of ROAS sits next to the denominator. | Spend up + revenue up at the same rate = healthy scaling. Spend up + revenue flat = scaling beyond efficient frontier. |
| ROAS | The efficiency ratio. Spend without ROAS is just a bill. | Spend rising while ROAS holds = expand the budget. Spend rising while ROAS falls = cap the budget. |
| Spend Trend | Daily series. Total Spend can hide a mid-period spike that’s already burned out. | A flat-30D total can mask a 2-day spike followed by 28 days at half-pace. The trend card reveals the shape. |
| Spend by Campaign | Per-campaign split. The headline number is meaningless without knowing which campaigns ate the budget. | If Advantage+ ate 60% of spend at 4× ROAS while Reels ate 5% at 0.2× ROAS, the answer is to cut Reels and keep scaling Advantage+. |
| Spend vs Budget | Pacing check. Spend running 110% by day 20 of a 30-day window means an early-month overshoot. | Use this to catch budget breaches before the credit card maxes out. |
| Frequency | Spend rising on the same audience pushes frequency up. | Frequency above ~4-5 within a 7-day window is creative fatigue territory. New creative needed. |
| GA4 Paid Social Sessions | Independent measurement of the traffic the spend bought. | If Meta says you sent 50k clicks but GA4 only saw 35k Paid Social sessions, you have an iOS / consent / link-tracking problem. |
| Shopify Total Revenue | The truth side. Real Meta-driven revenue is a subset of Shopify total revenue. | If Meta-attributed revenue exceeds 80% of Shopify total revenue, your attribution model is double-counting. Reset expectations. |
Reconciling against the vendor’s own dashboard
Where to look in Meta Ads Manager: Meta Ads Manager → Campaigns → Amount Spent column. Set the date range to match this card’s window. The headline footer total should match this card to within sub-percent rounding. Other views that look like the same number but aren’t:- Billing → Transactions. This is invoiced spend, which lags Insights by 24, 72 hours and is netted of credits. Use it for accounts payable, not for performance reads.
- Account Overview → Total Spent (lifetime). Cumulative since account creation, not period-bound.
- Reach & Frequency campaigns. Reach & Frequency reservations are pre-paid and may report differently in Insights vs Billing for the first 24 hours.
| Reason | Direction | Why |
|---|---|---|
| Time zone | Boundary days off | Meta uses the ad account time zone (set at account creation, cannot be changed). This card uses UTC for period boundaries. For a 30-day window the difference averages out; for “today” or “yesterday” it can shift the number meaningfully, especially for accounts on US Pacific time. |
| Attribution window changes | None on spend | Attribution windows changed from 28-day click + 1-day view to 7-day click + 1-day view as the default after iOS 14.5. This affects conversion_value, NOT spend. Spend is unaffected. |
| Modeled conversions | None on spend | Meta auto-fills attribution gaps with modeled conversions; modeled spend does not exist. |
| Ingest lag | Lower for “today” | Insights ingestion lags by 1, 4 hours typically. Spend for the most recent 4 hours may not be in yet. Yesterday and earlier are caught up. |
| Advantage+ opacity | None on the headline | Advantage+ Shopping breaks down within itself opaquely (you can’t see audience splits) but the total Advantage+ spend is fully visible and reconciles. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
google_ads.gads_spend | Independent ad-platform spend, sums to Total Marketing Spend. | Different platforms, no overlap. Don’t compare directly. |
google_analytics.ga_paid_social_sessions | GA4 should attribute roughly (Meta CTR × Meta clicks) Paid Social sessions to Facebook / Instagram. | iOS ATT, ad blockers, and consent rejection mean GA4 typically sees 60, 80% of Meta-reported clicks. |
shopify.total_revenue | No direct relationship to spend. Use to compute true business ROAS = (Shopify revenue × Meta channel share) ÷ Meta spend. | Channel share has to come from UTM tags or commerce-platform attribution; both are imperfect. |
Known limitations / merchant FAQs
Why is my Meta spend higher than my Shopify Meta-attributed revenue × my “expected” ROAS? Two things to check. First, your Shopify-side attribution probably uses UTM tags, which only catch Meta clicks where the user clicked through with tracking intact. iOS ATT-rejected users land on your site without UTMs (the click goes through but Meta can’t tag the destination), so they show up as Direct or Organic in Shopify. That makes Meta-attributed Shopify revenue look smaller than it really is. Second, Meta’sconversion_value includes modeled conversions; even if you back out the modeling, it’s typically 1.4, 2.5× higher than what UTM-tracked Shopify will see for the same period. The truth is somewhere in between. Don’t reconcile to within 5%, expect 30, 60% gaps.
What’s the iOS 14.5 ATT impact on my spend?
Zero on spend. Meta still gets paid for impressions and clicks regardless of whether the user opted into tracking. The ATT impact is on the measurement side: conversions and revenue attributed to those impressions. So your spend numbers are reliable; your ROAS numbers are not. Treat spend as a hard fact, treat ROAS as a directional read (especially for iOS-heavy audiences).
Should I roll out Conversions API (CAPI)?
Yes, immediately if you haven’t. CAPI sends conversions server-to-server, bypassing the browser-Pixel chain that ATT broke. Typical lift after a clean CAPI rollout: 15, 35% more attributed conversions, especially on iOS. Implementation is 1, 3 days for Shopify (use the official Meta channel app), 1, 2 weeks for custom platforms. The order of priority: web purchase, web add-to-cart, web view-content. Don’t bother CAPI-fying lead-form events until purchase is solid.
My spend is rising 5% week-on-week, is that healthy?
Healthy IF: ROAS is holding flat or rising, frequency is below ~4 in a 7-day window, and you’re not breaching the budget pacer. Unhealthy IF: ROAS is dropping more than 5% per week alongside the spend rise, or frequency is above 5 (creative fatigue), or CPM is rising faster than CTR (audience saturation).
Why is my Advantage+ Shopping campaign so opaque?
By design. Advantage+ is Meta’s response to Google’s Performance Max, the optimiser handles audience, placement, and creative selection automatically. You see headline ROAS and headline spend; you don’t see which audience or creative was responsible. The trade-off is performance: well-tuned Advantage+ campaigns typically out-perform manual setups by 20, 40% on cold-prospecting objectives. If you need granular visibility, run a manual broad-audience campaign in parallel, smaller budget, manual targeting.
How do I aggregate spend across multiple Meta ad accounts?
The Meta Marketing API enforces per-ad-account scoping; there is no single “all my accounts” Insights call. Vortex IQ Nerve Centre renders one card per connected ad account. To roll up, either (a) use the Business Manager → Account Quality view (which shows headline spend per account in one screen, no API needed), or (b) export each account’s spend to a sheet and sum. Holding-company merchants typically run a custom DataDog or BigQuery roll-up.
Why does my “today” spend look low at midday?
Insights ingest lag is typically 1, 4 hours. The Meta-billed spend for the past 4 hours probably isn’t in the API yet. Wait until tomorrow morning for a clean read of yesterday. For real-time pacing, use the Ads Manager UI (which has a faster internal feed) rather than the API.
Are spend credits and over-delivery refunds netted from this card?
No. Insights reports gross media spend. Meta credits (issued for billing errors, over-delivery beyond the daily budget cap, or platform incidents) appear as billing adjustments, not as Insights line items. If your billing total is meaningfully lower than this card’s total, log into Billing → Transactions to see the credit lines. Typical credit volume is <1% of spend; large gaps indicate an investigation is needed.
Frequency cap and spend, are they related?
Yes. If you’ve set a frequency cap on an adset (e.g. “no more than 3 impressions per user in 7 days”), Meta will throttle delivery once high-frequency users are saturated. The visible effect is spend pacing slower than the daily budget, especially in the second half of a flight on a small or warm audience. Remove or raise the cap to unblock spend.