Operations & Data · Draft
Data and Tracking Strategy
Principles
- GA4 is the source of truth for cross-channel measurement and optimization.
- First-party first — server-side tagging, consent-aware, cookieless-ready.
- Closed loop — CRM outcomes flow back to ad platforms via offline conversions and CAPI.
- Deduped events — online and offline share
event_idwhere platforms support it.
BigQuery warehouse responsibility
| Data source | Who owns the account / property | BigQuery export operated by | Kobico responsibility |
|---|---|---|---|
| Google Ads | Kobico MCC (agency-owned) | Kobico → Kobico GCP BigQuery | Yes — export all managed ad accounts for reporting, optimization joins, invoicing support |
| GA4 | Client-owned (preferred) or client GCP | Client (optional, on their project) | No — Kobico does not operate client GA4 → BigQuery export |
| MMP (Adjust, AppsFlyer, Branch, etc.) | Client | Client (optional) | No — Kobico does not operate MMP → BigQuery export |
| Agent / ops telemetry | Kobico | Kobico | Yes — QC, Cost Guard, audit (see System Ops) |
| Meta / TikTok / DV360 | Kobico agency accounts | API → Kobico warehouse (Phase 2+) | Planned — same pattern as Google Ads where accounts are Kobico-owned |
GA4 as SoT without client BQ: Kobico reads GA4 via Analytics Data API (and linked Google Ads data in GA4 UI where configured). Client may enable GA4 BigQuery export on their GCP for their own analytics — that pipeline is outside Kobico scope unless separately contracted.
Google Ads → BigQuery (Kobico): Use BigQuery Data Transfer Service for Google Ads and/or scheduled Google Ads API extracts into datasets such as google_ads_raw (partitioned by tenant_id / customer_id). Accounts are under Kobico MCC — export is agency infrastructure, not client deliverable.
Architecture
Tagging deployment
| Layer | v1 | Phase 2+ (optional) |
|---|---|---|
| Kobico tagging spec | Event names, parameters, UTM schema | Same |
| Client site | Implementation guide — manual tags or GTM import template | Kobico Relay: CNAME + one k.js loader — see First-party tag relay |
| Server fan-out | Conversion Tracking Service → CAPI / Events API | Relay edge → same APIs + first-party cookies |
| Hosted sGTM | Not in v1 scope | Alternative SKU for GTM-native clients |
| Consent / CMP | Client responsibility (GTM or BYO CMP) | Kobico CMP included by default; client BYO or bundled global CMP via integration — ADR 0005 |
| Consent Mode v2 | Required for EEA/UK | Enforced in loader + relay |
UTM & attribution
Full spec: UTM & attribution spec
| Track | Vendors | URL params |
|---|---|---|
| Google Ads | Search, Display, Shopping, PMax, YouTube | No utm_* — auto-tagging + GA4 ↔ Ads link |
| Google + CRM SKU | Same | Custom only: kcid, kpv (+ gclid on forms) — never utm_ |
| Meta / TikTok | Social | Full utm_* with dynamic macros; campaign ID in utm_campaign |
Join GA4 to platforms: campaign ID first (Google via Ads link / gclid; social via utm_campaign).
Click ID capture
- Store
gclid,gbraid,wbraid,fbclid,ttclidin CRM on form submit - Pass through to offline conversion uploads
CRM → platform pipelines
Batch path
- CRM exports qualified events (scheduled or webhook)
- Conversion Tracking Service validates schema
- Hash PII per platform rules
- Upload to Google offline conversions / Meta CAPI / TikTok Events API
- Log upload receipt + match metrics
Real-time path (preferred for high-value events)
- Webhook → CTS → immediate CAPI with < 1h delay target
Feed management (data adjacent)
- Product feeds validated before Merchant Center / Meta catalog sync
- Field mapping documented per vertical
- Error dashboard feeds human queue
Quality monitoring
| Metric | Threshold | Action |
|---|---|---|
| GA4 event volume DoD change | -30% | Alert, block spend up |
| CAPI EMQ | < 6.0 | Alert ops |
| Offline match rate | < 50% | CRM field audit |
| Feed critical errors | > 0 | Block catalog ads |
Privacy
- Hash PII before platform send
- Data processing agreements with clients
- Minimize PII in warehouse; use
tenant_id+ hashed keys
Data clean rooms (Phase 2/3)
A data clean room is a privacy-safe environment where parties join hashed or controlled datasets without exposing raw user-level records — used for cross-platform user-level attribution or CRM ↔ platform matching at scale.
Phase 1 does not require a clean room. Phase 1 attribution uses GA4 as source of truth plus click IDs (gclid, fbclid, ttclid) and campaign-level joins — see UTM & attribution spec.
| Option | Assessment |
|---|---|
| BigQuery Data Clean Rooms | Preferred when needed — stack is GCP-native; no extra vendor or data copy for warehouse-side joins. Google Ads side may use Ads Data Hub in the same ecosystem. |
| Snowflake DCR | Strong product but new vendor + data copy + cost — not aligned with locked GCP stack |
| Custom build | Not recommended — security and compliance burden |
When to adopt: Phase 2/3 when product requires user-level cross-platform matching beyond GA4 + click-ID attribution. Does not gate the W9 core loop or W13 acceptance test.
Related documents
- UTM & attribution spec — vendor macros, GA4 match strategy
- First-party tag relay — micro-module loader, hybrid edge, CMP defaults
- ADR 0005: k.js relay micro-modules & CMP
- GA4 source of truth
- Internal CRM
- Security & governance