Google Ads API and Search Ads 360 data engineering: MCC-wide ingestion, GA4 and BigQuery joins, and reporting that reconciles with the Google Ads UI.
Correct queries, wrong totals
Google Ads reporting is easy to query and easy to get subtly wrong. Segment a report and metrics silently duplicate across rows, so summing spend overstates it. Conversions can be counted at click time or conversion time, and the two never match. GA4 and Google Ads disagree by design because they attribute differently. At MCC scale you are also managing hundreds of customer IDs, each with its own currency and timezone, which quietly corrupts any naive daily rollup.
What we build on Google
- Google Ads API ingestion across the full MCC tree, including newly added accounts without manual setup
- Search Ads 360 ingestion for teams managing search across multiple engines
- Currency and timezone normalization so cross-account daily totals are actually comparable
- GA4 BigQuery export modeling joined to ad data, with attribution differences documented rather than hidden
- Performance Max and asset-group reporting handled within what the API actually exposes
- Reconciliation checks against the Google Ads UI to a documented tolerance
How we work
Map the MCC hierarchy and settle currency and timezone rules before ingesting anything
Ingest core campaign and conversion data, then reconcile against the UI account by account
Add GA4 and cross-channel joins once Google-native numbers are trusted
Automate reporting and add freshness monitoring per account
Typical stack
Frequently asked questions
They are measuring different things. Google Ads credits conversions to the ad click within its own lookback and can count them at click time; GA4 uses its own attribution model across all traffic sources at conversion time. Both can be right. We surface both and document the difference rather than quietly picking one and presenting it as truth.
Yes. The pipeline walks the MCC hierarchy and discovers accounts, so a newly linked client is picked up automatically. Manual per-account configuration is exactly what stops working past a few dozen accounts.
To the extent the API exposes it, which is genuinely less than teams expect. Asset group and some channel-level data is available; full placement and search term detail is not. We build what the API supports and are explicit about the limits instead of implying full transparency.
If you care about analysis beyond the GA4 UI, yes, and it should be enabled today. The export is event-level and unsampled, and it only captures data from the day it is turned on. There is no backfill, so every day it stays off is history you cannot get back.
Go deeper
Get Google data into your warehouse
Tell us how your MCC is structured and what reporting you owe, and we will scope the ingestion and modeling.
Start a project