Marketing data
Cross-platform advertising data turned into a daily automated pipeline
Google Ads, Meta Ads, creative, and lead data now enter one BigQuery architecture, so analysis no longer starts with manual exports.
The problem
Advertising performance was split across platforms with different accounts, fields, refresh patterns, and attribution definitions. Manual exports could produce a temporary report, but they were difficult to rerun reliably. A missing day could come from an API, permission, schedule, or schema issue with no clear signal as to which one failed.
Constraints
- Google Ads and Meta Ads APIs use different authentication models, quotas, data structures, and update timing.
- Tokens expire or change, while platform fields can evolve outside a shared release cycle.
- The public case cannot disclose real spend, client names, campaigns, or creative assets.
What we did
Preserve the source before shaping analysis
Platform data first lands in traceable source structures in BigQuery, then a transformation layer aligns shared dimensions and metrics.
Treat orchestration as an observable system
Cloud Workflows coordinates daily runs and separates platform extraction, creative processing, and lead retrieval into identifiable steps.
Design writes to be repeatable
Updates are bounded by source and date ranges so rerunning the same batch produces a consistent result.
Separate access failures from data failures
The workflow preserves distinct signals for authentication, quota, and schema problems, reducing the time needed to identify the source.
Outcomes
- Google Ads and Meta Ads data enter BigQuery on a daily schedule.
- Cross-platform analysis starts from one query layer instead of a collection of manual exports.
- Creative processing and lead retrieval run inside a traceable cloud workflow.
Technology
- Google Ads API
- Meta Marketing API
- BigQuery
- Cloud Workflows
Looking back
If we started again, we would define data-freshness expectations and schema contracts earlier. Data arriving is not the same as data being usable; delays, backfills, and platform field changes should be visible before they reach a report.