Tracking Setup (Global)
Ads without verified tracking is driving blind. Hard rule: do not launch ads until tracking verifies green. Every dollar spent before verification is unmeasurable. Set it up correctly the first time — changing events mid-campaign destroys historical comparability.
Full per-platform install steps and the consent mode parameter reference: read references/platform-tracking-setup.md.
Information gathering
Ask up to 4 questions:
- Which ad platforms and objective? Meta / Google / TikTok / LinkedIn / YouTube — lead (form or message) / purchase / traffic?
- What runs the website or landing page? Shopify / WordPress / Webflow / Framer / custom — and is there access to edit the head tag or install GTM?
- Which markets receive traffic? This decides the consent requirements: EU/UK means GDPR and ePrivacy, California means CCPA/CPRA, other US states have their own opt-out laws.
- Where does the sale actually close? On site (pixel-measurable) or offline via sales calls, demos, or DMs (needs CRM/offline conversion import)?
Principles
- No green, no launch. Verification comes before spend, every time.
- Consent is part of tracking, not a legal afterthought. In the EU/UK, tags must not fire before consent. Getting this wrong risks fines and, on Google, loss of remarketing audiences.
- One installation method only. GTM plus hardcoded tags equals duplicate events and doubled phantom conversions.
- Client-side plus server-side, deduplicated. Browser-only tracking loses a large share of events to ad blockers, ITP, and iOS ATT. Send the same event from both sides with a shared event ID.
- Consistent UTMs. Define the convention once, before anyone builds a link. GA4 cannot repair inconsistent casing or naming after the fact.
- Measure to revenue, not to lead. If 1,000 leads produce 10 sales, you must be able to tell whether the failure is in ads or in sales. That requires CRM or offline conversion import.
- Expect platform numbers to disagree. Ads managers use different attribution windows and modeled conversions. Pick one source of truth for decisions and use the others as directional.
Workflow
1. Choose the measurement architecture
| Layer |
Purpose |
Minimum |
| Client-side pixel/tag |
Fast setup, on-page events |
Meta Pixel, Google tag, TikTok Pixel |
| Server-side API |
Recovers events lost to blockers and ITP |
Meta Conversions API, TikTok Events API, Google Enhanced Conversions |
| Analytics |
Cross-channel truth, funnel analysis |
GA4 with key events configured |
| Consent layer |
Legal gate in front of everything above |
CMP plus Google consent mode v2 |
| CRM / offline |
Connects leads to actual revenue |
CRM with source fields, offline conversion import |
Server-side GTM is the recommended container for anything beyond a simple store: it centralizes event forwarding, improves data quality, and keeps first-party cookie lifetimes usable under ITP.
2. Consent management (do this before any tag fires)
This is a first-class requirement, not an optional extra.
EU / UK — GDPR and ePrivacy:
- Install a certified consent management platform. Meta requires a CMP for EU traffic; Google requires a Google-certified CMP for EEA/UK traffic to keep personalized advertising and audience features.
- Implement Google consent mode v2. The four signals are
ad_storage, analytics_storage, ad_user_data, ad_personalization. Default them to denied for EEA/UK before the banner is answered, then update on consent.
- Non-essential tags must not fire before consent is granted. Consent must be as easy to refuse as to accept, and withdrawable.
- Keep a consent log — which user, which choice, when, which policy version.
California — CCPA/CPRA (and comparable US state laws):
- Provide a visible opt-out of sale/sharing of personal information.
- Honor the Global Privacy Control browser signal as a valid opt-out.
- On Meta, apply Limited Data Use for California traffic.
Email and SMS: CAN-SPAM in the US and GDPR in the EU require documented opt-in for marketing sends and a working unsubscribe. Any list uploaded as a Custom Audience or Customer Match list must have that consent on record — see 14-email-marketing-global.
Record the decision in the output file: which CMP, which regions gated, who verified.
3. Install per platform
Full step-by-step checklists live in references/platform-tracking-setup.md. Summary of what must exist:
| Platform |
Client-side |
Server-side |
Verification tool |
| Meta |
Pixel with standard events (PageView, ViewContent, AddToCart, Lead, Purchase) |
Conversions API with event_id deduplication, Event Match Quality >= 6.0 |
Meta Pixel Helper, Test Events |
| Google Ads |
Google tag / GTM conversion actions |
Enhanced Conversions (hashed email/phone), consent mode v2 |
Tag Assistant, conversion diagnostics |
| GA4 |
GA4 tag, key events marked as conversions |
Measurement Protocol or server-side GTM |
GA4 DebugView, Realtime |
| TikTok |
TikTok Pixel (ViewContent, AddToCart, SubmitForm, CompletePayment) |
Events API with deduplication |
TikTok Pixel Helper, Events diagnostics |
| LinkedIn |
Insight Tag with conversion rules |
Conversions API for CRM-side events |
LinkedIn Insight Tag Helper |
Only one primary conversion action per objective should be enabled for bidding. Extra enabled conversions inflate counts and confuse smart bidding.
4. iOS ATT and attribution windows
Since iOS 14.5, a large share of iOS users opt out of app tracking, so platform-reported conversions are partly modeled rather than observed.
- Meta's post-ATT default is a 7-day click / 1-day view attribution window. Compare periods on the same window or the trend is meaningless.
- Verify the domain and configure Aggregated Event Measurement with a prioritized list of up to 8 web events per domain. The event you optimize for must be ranked highest.
- Expect ads manager conversions and GA4 last-click conversions to differ, often materially. Decide up front which one drives budget decisions.
- Server-side events plus Enhanced Conversions and good Event Match Quality recover a meaningful share of the loss. This is the main reason server-side is no longer optional.
- Third-party cookie deprecation compounds this. Prioritize first-party data collection — email capture, account creation, CRM — over pixel-only audience building.
5. UTM convention
https://domain.com/lp?utm_source=[source]&utm_medium=[medium]&utm_campaign=[campaign]&utm_content=[ad_name]
| Parameter |
Convention |
Example |
| utm_source |
meta / google / tiktok / linkedin / klaviyo |
meta |
| utm_medium |
paid_social / paid_search / display / email / organic |
paid_social |
| utm_campaign |
[product]_[audience]_[market]_[MMYY] |
course-a_cold_us_0726 |
| utm_content |
[creative-type]_[hook-type]_[version] — matches the ad name |
vid_pain_v1 |
Lowercase, no spaces, no special characters. utm_content must equal the ad name defined in 52-account-structure-global so ads manager and GA4 reconcile in both directions. Add utm_term only for search keywords.
6. GA4 event mapping
| GA4 event |
Trigger |
Platform equivalent |
| page_view |
All pages |
PageView (Meta), ViewContent (TikTok) |
| view_item |
Product or offer page |
ViewContent (Meta) |
| add_to_cart |
Cart add |
AddToCart (Meta/TikTok) |
| begin_checkout |
Checkout started |
InitiateCheckout (Meta) |
| generate_lead |
Form submit or qualified message |
Lead (Meta), SubmitForm (TikTok), Conversion (Google) |
| purchase |
Payment confirmed, with value and currency |
Purchase (Meta/TikTok/Google) |
Each action fires exactly one event. Mark the event that matches the ads objective as a key event in GA4. Always send value and currency on purchase — without them ROAS cannot be computed and multi-market revenue cannot be normalized.
7. CRM and offline conversions
Required whenever the sale closes off-site (B2B, high-ticket, coaching, agency, phone or DM sales):
- Capture source on every lead. CRM fields: source, medium, campaign, ad content, GCLID or fbclid, timestamp, owner, stage, disqualification reason, closed revenue.
- Import offline conversions weekly. Meta offline/CAPI conversions and Google Ads offline conversion import via GCLID or Enhanced Conversions for Leads. This teaches bidding from real revenue instead of raw lead count.
- Reconcile monthly. Compare CRM lead count against ads manager lead count. A gap above 20% signals a tracking or attribution problem, not a sales problem.
Uploaded CRM data must be hashed and covered by consent.
8. Verify green before launch
All must pass. One missing item means do not launch:
9. Ongoing checks
Daily (2 minutes): events flowing in the last 24 hours on every platform; Google Ads conversions recording; GA4 showing paid sessions.
Weekly: server-side match rate above 70%; no duplicate events; lead counts across ads manager, GA4, and CRM within 20% of each other; every live link carries a correct UTM; consent banner still firing correctly after any site release.
Troubleshooting
| Problem |
Common cause |
Fix |
| Pixel does not fire |
Tag missing on the page or blocked by consent gate |
Check GTM preview and the consent state; confirm the tag is allowed after consent |
| Duplicate events |
GTM and hardcoded tag both installed |
Remove one; verify event_id deduplication |
| Low match rate / low EMQ |
No hashed email or phone sent server-side |
Add customer parameters to the server payload |
| Conversion not recorded |
Wrong event name or wrong trigger page |
Check spelling and that the trigger is the confirmation page |
| GA4 far below ads manager |
Different attribution windows plus modeled conversions |
Compare on the same window; treat one source as decision-grade |
| Remarketing audiences shrinking in the EU |
Consent mode v2 missing or misconfigured |
Implement all four consent signals and a certified CMP |
| Leads arrive with no source |
No CRM source capture |
Add hidden UTM/click-ID fields to every form |
Output structure
File name: tracking-setup-[product]-[YYYYMMDD].md
# Tracking Setup — [Product/Campaign]
Platforms: [list] · Site platform: [x] · Markets: [x] · Objective: [Lead/Purchase]
## 1. Measurement architecture [client, server, analytics, consent, CRM]
## 2. Consent plan [CMP, regions gated, consent mode v2, LDU, log owner]
## 3. Platform setup status [table with status per item]
## 4. Attribution settings [window per platform, AEM priority list]
## 5. UTM convention [parameters and real project examples]
## 6. Event mapping [GA4 to platform events]
## 7. CRM / offline conversions [fields captured, import cadence]
## 8. Pre-launch verification [green checklist, verified by, date]
## 9. Ongoing check schedule [who, when, alert thresholds]
Related skills
52-account-structure-global: build campaigns only after tracking is green; utm_content must match ad names.
54-media-plan-global: the objective in the plan determines which events must be tracked.
21-ads-audit-global: periodic tracking audit (match rate, duplicates, EMQ).
12-landing-page-brief-global: the landing page must expose the events and form fields this setup needs.
13-data-analysis-global: reads the clean data this system produces.
Quality checklist
1---
2name: 53-tracking-setup-global
3description: "Use when conversion TRACKING must be set up or fixed before spending — Meta Pixel and Conversions API, Google Ads conversions with Enhanced Conversions, GA4, TikTok Pixel and Events API, server-side GTM, consent mode for GDPR and CCPA, UTM conventions, iOS ATT attribution windows, and a pre-launch verification checklist. Trigger on 'tracking setup', 'pixel setup', 'CAPI', 'GA4 events', 'conversions are not being recorded', 'Meta and Shopify numbers do not match'. Also use when launch is imminent and nothing has been verified. Not for — auditing a live account broadly, see `21-ads-audit-global`; analyzing data once it flows, see `13-data-analysis-global`; the campaign hierarchy, see `52-account-structure-global`."
4metadata:
5 version: 1.0.1
6 category: performance
7license: MIT
8triggers:
9 - "tracking setup"
10 - "pixel setup"
11 - "conversions API"
12 - "CAPI"
13 - "GA4 setup"
14 - "server-side tracking"
15 - "consent mode"
16 - "UTM convention"
17 - "conversion tracking not working"
18output: "File .md — tracking setup checklist per platform, consent plan, UTM template, event mapping, CRM/offline conversion plan, pre-launch verification checklist, and a troubleshooting table"
19related:
20 - product-marketing-context-global
21 - 52-account-structure-global
22 - 54-media-plan-global
23 - 21-ads-audit-global
24 - 12-landing-page-brief-global
25 - 13-data-analysis-global
26---
27
28# Tracking Setup (Global)
29
30Ads without verified tracking is driving blind. **Hard rule: do not launch ads until tracking verifies green.** Every dollar spent before verification is unmeasurable. Set it up correctly the first time — changing events mid-campaign destroys historical comparability.
31
32> Full per-platform install steps and the consent mode parameter reference: read `references/platform-tracking-setup.md`.
33
34## Information gathering
35
36Ask up to 4 questions:
37
381. **Which ad platforms and objective?** Meta / Google / TikTok / LinkedIn / YouTube — lead (form or message) / purchase / traffic?
392. **What runs the website or landing page?** Shopify / WordPress / Webflow / Framer / custom — and is there access to edit the head tag or install GTM?
403. **Which markets receive traffic?** This decides the consent requirements: EU/UK means GDPR and ePrivacy, California means CCPA/CPRA, other US states have their own opt-out laws.
414. **Where does the sale actually close?** On site (pixel-measurable) or offline via sales calls, demos, or DMs (needs CRM/offline conversion import)?
42
43## Principles
44
451. **No green, no launch.** Verification comes before spend, every time.
462. **Consent is part of tracking, not a legal afterthought.** In the EU/UK, tags must not fire before consent. Getting this wrong risks fines and, on Google, loss of remarketing audiences.
473. **One installation method only.** GTM plus hardcoded tags equals duplicate events and doubled phantom conversions.
484. **Client-side plus server-side, deduplicated.** Browser-only tracking loses a large share of events to ad blockers, ITP, and iOS ATT. Send the same event from both sides with a shared event ID.
495. **Consistent UTMs.** Define the convention once, before anyone builds a link. GA4 cannot repair inconsistent casing or naming after the fact.
506. **Measure to revenue, not to lead.** If 1,000 leads produce 10 sales, you must be able to tell whether the failure is in ads or in sales. That requires CRM or offline conversion import.
517. **Expect platform numbers to disagree.** Ads managers use different attribution windows and modeled conversions. Pick one source of truth for decisions and use the others as directional.
52
53## Workflow
54
55### 1. Choose the measurement architecture
56
57| Layer | Purpose | Minimum |
58|-------|---------|---------|
59| Client-side pixel/tag | Fast setup, on-page events | Meta Pixel, Google tag, TikTok Pixel |
60| Server-side API | Recovers events lost to blockers and ITP | Meta Conversions API, TikTok Events API, Google Enhanced Conversions |
61| Analytics | Cross-channel truth, funnel analysis | GA4 with key events configured |
62| Consent layer | Legal gate in front of everything above | CMP plus Google consent mode v2 |
63| CRM / offline | Connects leads to actual revenue | CRM with source fields, offline conversion import |
64
65Server-side GTM is the recommended container for anything beyond a simple store: it centralizes event forwarding, improves data quality, and keeps first-party cookie lifetimes usable under ITP.
66
67### 2. Consent management (do this before any tag fires)
68
69This is a first-class requirement, not an optional extra.
70
71**EU / UK — GDPR and ePrivacy:**
72- Install a certified consent management platform. Meta requires a CMP for EU traffic; Google requires a Google-certified CMP for EEA/UK traffic to keep personalized advertising and audience features.
73- Implement **Google consent mode v2**. The four signals are `ad_storage`, `analytics_storage`, `ad_user_data`, `ad_personalization`. Default them to `denied` for EEA/UK before the banner is answered, then update on consent.
74- Non-essential tags must not fire before consent is granted. Consent must be as easy to refuse as to accept, and withdrawable.
75- Keep a consent log — which user, which choice, when, which policy version.
76
77**California — CCPA/CPRA (and comparable US state laws):**
78- Provide a visible opt-out of sale/sharing of personal information.
79- Honor the Global Privacy Control browser signal as a valid opt-out.
80- On Meta, apply **Limited Data Use** for California traffic.
81
82**Email and SMS:** CAN-SPAM in the US and GDPR in the EU require documented opt-in for marketing sends and a working unsubscribe. Any list uploaded as a Custom Audience or Customer Match list must have that consent on record — see `14-email-marketing-global`.
83
84Record the decision in the output file: which CMP, which regions gated, who verified.
85
86### 3. Install per platform
87
88Full step-by-step checklists live in `references/platform-tracking-setup.md`. Summary of what must exist:
89
90| Platform | Client-side | Server-side | Verification tool |
91|----------|-------------|-------------|-------------------|
92| Meta | Pixel with standard events (PageView, ViewContent, AddToCart, Lead, Purchase) | Conversions API with `event_id` deduplication, Event Match Quality >= 6.0 | Meta Pixel Helper, Test Events |
93| Google Ads | Google tag / GTM conversion actions | Enhanced Conversions (hashed email/phone), consent mode v2 | Tag Assistant, conversion diagnostics |
94| GA4 | GA4 tag, key events marked as conversions | Measurement Protocol or server-side GTM | GA4 DebugView, Realtime |
95| TikTok | TikTok Pixel (ViewContent, AddToCart, SubmitForm, CompletePayment) | Events API with deduplication | TikTok Pixel Helper, Events diagnostics |
96| LinkedIn | Insight Tag with conversion rules | Conversions API for CRM-side events | LinkedIn Insight Tag Helper |
97
98Only one primary conversion action per objective should be enabled for bidding. Extra enabled conversions inflate counts and confuse smart bidding.
99
100### 4. iOS ATT and attribution windows
101
102Since iOS 14.5, a large share of iOS users opt out of app tracking, so platform-reported conversions are partly modeled rather than observed.
103
104- Meta's post-ATT default is a **7-day click / 1-day view** attribution window. Compare periods on the same window or the trend is meaningless.
105- Verify the domain and configure **Aggregated Event Measurement** with a prioritized list of up to 8 web events per domain. The event you optimize for must be ranked highest.
106- Expect ads manager conversions and GA4 last-click conversions to differ, often materially. Decide up front which one drives budget decisions.
107- Server-side events plus Enhanced Conversions and good Event Match Quality recover a meaningful share of the loss. This is the main reason server-side is no longer optional.
108- Third-party cookie deprecation compounds this. Prioritize first-party data collection — email capture, account creation, CRM — over pixel-only audience building.
109
110### 5. UTM convention
111
112```
113https://domain.com/lp?utm_source=[source]&utm_medium=[medium]&utm_campaign=[campaign]&utm_content=[ad_name]
114```
115
116| Parameter | Convention | Example |
117|-----------|-----------|---------|
118| utm_source | meta / google / tiktok / linkedin / klaviyo | meta |
119| utm_medium | paid_social / paid_search / display / email / organic | paid_social |
120| utm_campaign | `[product]_[audience]_[market]_[MMYY]` | course-a_cold_us_0726 |
121| utm_content | `[creative-type]_[hook-type]_[version]` — matches the ad name | vid_pain_v1 |
122
123Lowercase, no spaces, no special characters. `utm_content` must equal the ad name defined in `52-account-structure-global` so ads manager and GA4 reconcile in both directions. Add `utm_term` only for search keywords.
124
125### 6. GA4 event mapping
126
127| GA4 event | Trigger | Platform equivalent |
128|-----------|---------|---------------------|
129| page_view | All pages | PageView (Meta), ViewContent (TikTok) |
130| view_item | Product or offer page | ViewContent (Meta) |
131| add_to_cart | Cart add | AddToCart (Meta/TikTok) |
132| begin_checkout | Checkout started | InitiateCheckout (Meta) |
133| generate_lead | Form submit or qualified message | Lead (Meta), SubmitForm (TikTok), Conversion (Google) |
134| purchase | Payment confirmed, with value and currency | Purchase (Meta/TikTok/Google) |
135
136Each action fires exactly one event. Mark the event that matches the ads objective as a key event in GA4. Always send `value` and `currency` on purchase — without them ROAS cannot be computed and multi-market revenue cannot be normalized.
137
138### 7. CRM and offline conversions
139
140Required whenever the sale closes off-site (B2B, high-ticket, coaching, agency, phone or DM sales):
141
1421. **Capture source on every lead.** CRM fields: source, medium, campaign, ad content, GCLID or fbclid, timestamp, owner, stage, disqualification reason, closed revenue.
1432. **Import offline conversions weekly.** Meta offline/CAPI conversions and Google Ads offline conversion import via GCLID or Enhanced Conversions for Leads. This teaches bidding from real revenue instead of raw lead count.
1443. **Reconcile monthly.** Compare CRM lead count against ads manager lead count. A gap above 20% signals a tracking or attribution problem, not a sales problem.
145
146Uploaded CRM data must be hashed and covered by consent.
147
148### 8. Verify green before launch
149
150All must pass. One missing item means do not launch:
151
152- [ ] Pixel/tag fires on landing page and confirmation page
153- [ ] Correct conversion event type selected — not PageView
154- [ ] No duplicate events (one action, one event in the events manager)
155- [ ] Server-side API live, deduplication working, Meta EMQ >= 6.0
156- [ ] Google Enhanced Conversions enabled and receiving hashed data
157- [ ] Consent mode v2 implemented; tags blocked before consent in EEA/UK; Limited Data Use applied for California
158- [ ] Test event: complete one real conversion and confirm it is recorded
159- [ ] Domain verified and Aggregated Event Measurement events prioritized
160- [ ] UTMs on all ad links and matching the convention
161- [ ] GA4 receiving paid sessions (confirm in Realtime)
162- [ ] CRM source capture live if the sale closes off-site
163
164### 9. Ongoing checks
165
166**Daily (2 minutes):** events flowing in the last 24 hours on every platform; Google Ads conversions recording; GA4 showing paid sessions.
167
168**Weekly:** server-side match rate above 70%; no duplicate events; lead counts across ads manager, GA4, and CRM within 20% of each other; every live link carries a correct UTM; consent banner still firing correctly after any site release.
169
170## Troubleshooting
171
172| Problem | Common cause | Fix |
173|---------|--------------|-----|
174| Pixel does not fire | Tag missing on the page or blocked by consent gate | Check GTM preview and the consent state; confirm the tag is allowed after consent |
175| Duplicate events | GTM and hardcoded tag both installed | Remove one; verify `event_id` deduplication |
176| Low match rate / low EMQ | No hashed email or phone sent server-side | Add customer parameters to the server payload |
177| Conversion not recorded | Wrong event name or wrong trigger page | Check spelling and that the trigger is the confirmation page |
178| GA4 far below ads manager | Different attribution windows plus modeled conversions | Compare on the same window; treat one source as decision-grade |
179| Remarketing audiences shrinking in the EU | Consent mode v2 missing or misconfigured | Implement all four consent signals and a certified CMP |
180| Leads arrive with no source | No CRM source capture | Add hidden UTM/click-ID fields to every form |
181
182## Output structure
183
184File name: `tracking-setup-[product]-[YYYYMMDD].md`
185
186```markdown
187# Tracking Setup — [Product/Campaign]
188Platforms: [list] · Site platform: [x] · Markets: [x] · Objective: [Lead/Purchase]
189
190## 1. Measurement architecture [client, server, analytics, consent, CRM]
191## 2. Consent plan [CMP, regions gated, consent mode v2, LDU, log owner]
192## 3. Platform setup status [table with status per item]
193## 4. Attribution settings [window per platform, AEM priority list]
194## 5. UTM convention [parameters and real project examples]
195## 6. Event mapping [GA4 to platform events]
196## 7. CRM / offline conversions [fields captured, import cadence]
197## 8. Pre-launch verification [green checklist, verified by, date]
198## 9. Ongoing check schedule [who, when, alert thresholds]
199```
200
201## Related skills
202
203- `52-account-structure-global`: build campaigns only after tracking is green; `utm_content` must match ad names.
204- `54-media-plan-global`: the objective in the plan determines which events must be tracked.
205- `21-ads-audit-global`: periodic tracking audit (match rate, duplicates, EMQ).
206- `12-landing-page-brief-global`: the landing page must expose the events and form fields this setup needs.
207- `13-data-analysis-global`: reads the clean data this system produces.
208
209## Quality checklist
210
211- [ ] Setup checklist complete for every platform in the plan
212- [ ] Consent plan explicit: CMP, consent mode v2 signals, regions, California opt-out, consent log
213- [ ] Server-side layer live with deduplication and a documented match rate
214- [ ] Attribution window stated per platform, with an agreed decision-grade source
215- [ ] UTM convention documented with real examples and matching ad names
216- [ ] Event mapping complete from page_view to purchase, with value and currency
217- [ ] Offline or CRM conversion path exists if the sale closes off-site
218- [ ] Green verification checklist completed, dated, and signed off by a named person
219- [ ] Daily and weekly checks scheduled with alert thresholds (match rate >70%, source gap <20%)
220- [ ] The hard rule is restated in the output: not green means do not launch