Spend to CPSC

How a dollar of ad spend becomes the CPSC a firm sees. Drawn from the code on November 8, 2026.

The short version

  1. Meta spend lands hourly straight from Meta, restated nightly across the last 28 days.
  2. Google and TikTok still ride BigQuery twice a day, and TikTok has sent nothing since late December 2025.
  3. Blue lines follow a dollar to CPSC; every platform passes one ad-to-campaign join.
Tort Terminal: how ad spend becomes CPSC A data-flow diagram generated by Archify. 01 / Ad platforms 02 / Transport and ingest 03 / Neon mirrors and attribution 04 / Rollup 05 / CPSC consumers Meta Graph API · Graph v22.0, ad-level daily · 01 / Ad platforms · direct pull · Meta Meta Graph API Graph v22.0, ad-level daily direct pull Google, TikTok Ads · Hevo lands both in BigQuery · 01 / Ad platforms · via Hevo Google, TikTok Ads Hevo lands both in BigQuery via Hevo BigQuery · levy-law-jdc, transport only · 01 / Ad platforms · Hevo-fed BigQuery levy-law-jdc, transport only Hevo-fed Looker dashboards · reads BQ, not a Terminal path · 01 / Ad platforms · side lane Looker dashboards reads BQ, not a Terminal path side lane AppLovin API · advertiser report, 45 days · 01 / Ad platforms · direct pull AppLovin API advertiser report, 45 days direct pull Meta direct jobs · hourly :07 3d; nightly 02:37 28d · 02 / Transport and ingest · Cloud Run Meta direct jobs hourly :07 3d; nightly 02:37 28d Cloud Run Hevo mirror jobs · google 14:20/22:20, tiktok :30 · 02 / Transport and ingest · Cloud Run Hevo mirror jobs google 14:20/22:20, tiktok :30 Cloud Run Mapping admin · campaign-mapping ad-accounts · 02 / Transport and ingest · app route Mapping admin campaign-mapping ad-accounts app route Ad registration · hourly reconcile cron + manual map · 02 / Transport and ingest · app cron + route Ad registration hourly reconcile cron + manual map app cron + route AppLovin job · applovin-ad-spend-sync, :13 · 02 / Transport and ingest · Cloud Run AppLovin job applovin-ad-spend-sync, :13 Cloud Run ad_spend.meta_insights · campaigns, adsets, ads, creatives · 03 / Neon mirrors and attribution · jobs-owned ad_spend.meta_insights campaigns, adsets, ads, creatives jobs-owned Hevo mirror tables · ad_spend.google_*, tiktok_* · 03 / Neon mirrors and attribution · jobs-owned Hevo mirror tables ad_spend.google_*, tiktok_* jobs-owned campaign_ad_accounts · mig 486: ad accounts per campaign · 03 / Neon mirrors and attribution · registry campaign_ad_accounts mig 486: ad accounts per campaign registry ops.campaign_ads · mig 374: ad id to campaign_id · 03 / Neon mirrors and attribution · attribution ops.campaign_ads mig 374: ad id to campaign_id attribution applovin_ad_daily · mig 763, replace-window table · 03 / Neon mirrors and attribution · jobs-owned applovin_ad_daily mig 763, replace-window table jobs-owned ops.matview_refreshes · refreshed_at, row_count per view · 04 / Rollup · freshness ops.matview_refreshes refreshed_at, row_count per view freshness Matview refresh job · hourly :25, skips if no live ads · 04 / Rollup · Cloud Run Matview refresh job hourly :25, skips if no live ads Cloud Run campaign_daily_spend · campaign, date, platform, usd · 04 / Rollup · canonical spend campaign_daily_spend campaign, date, platform, usd canonical spend ops.cases · active, not archived or excluded · 04 / Rollup · signed cases ops.cases active, not archived or excluded signed cases Spend readers · lib/ad-spend, SUM by spend_date · 05 / CPSC consumers · app/src/lib Spend readers lib/ad-spend, SUM by spend_date app/src/lib CPSC = spend / signed · same window for spend and signed · 05 / CPSC consumers · services, formula CPSC = spend / signed same window for spend and signed services, formula Signed cases reader · inception_at in [from, to), ET · 05 / CPSC consumers · app/src/lib Signed cases reader inception_at in [from, to), ET app/src/lib ad x day insights spend upsert ad x day spend Hevo load transport Looker reads BQ side lane new Hevo rows transport upsert mirrors spend advertiser report spend replace 7d window spend claim ad accounts mapping register ads mapping shared-account guard policy SUM(spend) by day spend cost by ad, day spend ad id to campaign mapping cost by campaign spend hourly REFRESH refresh refresh stamp refresh spend_usd rows spend freshness caption read signed predicate signed windowed spend spend windowed signed signed Legend Spend on the CPSC path Attribution guard (mig 812) Hevo batch or side lane data store Mapping, stamps, reads

From you

nothing