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 | Kobi responsibility |
|---|---|---|---|
| Google Ads | Kobi MCC (agency-owned) | Kobi → Kobi 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 — Kobi does not operate client GA4 → BigQuery export |
| MMP (Adjust, AppsFlyer, Branch, etc.) | Client | Client (optional) | No — Kobi does not operate MMP → BigQuery export |
| Agent / ops telemetry | Kobi | Kobi | Yes — QC, Cost Guard, audit (see System Ops) |
| Meta / TikTok / DV360 | Kobi agency accounts | API → Kobi warehouse (Phase 2+) | Planned — same pattern as Google Ads where accounts are Kobi-owned |
GA4 as SoT without client BQ: Kobi 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 Kobi scope unless separately contracted.
Google Ads → BigQuery (Kobi): 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 Kobi MCC — export is agency infrastructure, not client deliverable.
Architecture
Tagging deployment
| Layer | v1 | Phase 2+ (optional) |
|---|---|---|
| Kobi tagging spec | Event names, parameters, UTM schema | Same |
| Client site | Implementation guide — manual tags or GTM import template | Kobi 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 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
Related documents
- UTM & attribution spec — vendor macros, GA4 match strategy
- First-party tag relay — deferred architecture, cloud choice, cost bands
- GA4 source of truth
- Internal CRM
- Security & governance