| A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Client Name | [Client] | ||||||||||||||||||||||||
2 | Step 1 | What conversions do we want to track? | Answer | |||||||||||||||||||||||
3 | Pimary SEO Objectives | Leads, Bookings Revenue or Engagement | ||||||||||||||||||||||||
4 | Secondary SEO signals | Scroll depth, Time on page, Micro-conversions | ||||||||||||||||||||||||
5 | Page that drive SEO value | Services, Locations, Blogs, Guides etc. | ||||||||||||||||||||||||
6 | Dependent on Access to client's GA4, GTM & GSC | |||||||||||||||||||||||||
7 | ||||||||||||||||||||||||||
8 | ||||||||||||||||||||||||||
9 | Step 2 | Property-Level Setup Checks | ||||||||||||||||||||||||
10 | Property Type | Check | Complete | How to | ||||||||||||||||||||||
11 | GA4 | Correct GA4 property for the website | FALSE | GA4 → Admin → Property Settings → confirm property name + domain | ||||||||||||||||||||||
12 | Single GA4 property per domain (unless multi-brand) | FALSE | GA4 account list → confirm one reporting property | |||||||||||||||||||||||
13 | Correct web data stream connected | FALSE | GA4 → Admin → Data Streams → Web → confirm website URL | |||||||||||||||||||||||
14 | page_view fires once per page load | FALSE | GA4 DebugView or GTM Preview → reload page | |||||||||||||||||||||||
15 | Correct Measurement ID in use across pages | FALSE | GTM Preview → load multiple page types → confirm same G-XXXX | |||||||||||||||||||||||
16 | No duplicate GA4 tags or legacy UA remnants | FALSE | View page source + GTM → search for gtag / UA- | |||||||||||||||||||||||
17 | Time zone & currency set correctly | FALSE | GA4 → Admin → Property Settings | |||||||||||||||||||||||
18 | Enhanced Measurement reviewed | FALSE | GA4 → Data Stream → Enhanced Measurement | |||||||||||||||||||||||
19 | Internal IP addresses excluded (office/home) | FALSE | GA4 → Admin → Data Settings → Data Filters | |||||||||||||||||||||||
20 | Referral exclusions reviewed | FALSE | GA4 → Admin → Data Streams → Tag Settings → Referral exclusions | |||||||||||||||||||||||
21 | Cross-domain tracking configured (if required) | FALSE | GA4 → Admin → Data Streams → Configure tag settings → Domains | |||||||||||||||||||||||
22 | Consent mode respected (if applicable) | FALSE | GTM Preview → confirm GA4 fires after consent | |||||||||||||||||||||||
23 | Data retention set appropriately | FALSE | GA4 → Admin → Data Settings → Data Retention → Set both to 14 months | |||||||||||||||||||||||
24 | DebugView working for validation | FALSE | GA4 → DebugView → confirm events appear | |||||||||||||||||||||||
25 | GSC | Correct GSC property type in place (Domain preferred) | FALSE | GSC → Property Settings → confirm Domain property | ||||||||||||||||||||||
26 | All protocol & host variants covered (incl. subdomains if relevant) | FALSE | GSC → Settings → Ownership verification | |||||||||||||||||||||||
27 | XML sitemap(s) submitted and readable | FALSE | GSC → Sitemaps → status = Success | |||||||||||||||||||||||
28 | No critical coverage errors on SEO pages | FALSE | GSC → Pages → filter by Error | |||||||||||||||||||||||
29 | Manual actions checked | FALSE | GSC → Manual Actions | |||||||||||||||||||||||
30 | Security issues checked | FALSE | GSC → Security Issues | |||||||||||||||||||||||
31 | GSC landing pages align with GA4 organic landing pages | FALSE | Compare GSC Pages vs GA4 Landing Pages | |||||||||||||||||||||||
32 | GTM | GTM container present on all site templates | FALSE | GTM Preview → navigate multiple page types | ||||||||||||||||||||||
33 | Single GTM container per domain (unless intentional subdomain strategy) | FALSE | View source → search for GTM-XXXX | |||||||||||||||||||||||
34 | GTM installed via CMS / global layout (not page-level embeds) | FALSE | Check CMS theme / global header | |||||||||||||||||||||||
35 | Container loads before GA4 and other tags | FALSE | GTM Preview → check firing order | |||||||||||||||||||||||
36 | No duplicate or legacy GTM containers | FALSE | View source + Tag Assistant | |||||||||||||||||||||||
37 | GA4 implemented via GTM only (not hard-coded) | FALSE | GTM → Tags / View source | |||||||||||||||||||||||
38 | GTM Preview & Debug mode functioning | FALSE | Click “Preview” → connect successfully | |||||||||||||||||||||||
39 | page_view fires once per page load | FALSE | GTM Preview → reload page | |||||||||||||||||||||||
40 | Cookie consent respected (GA4 fires after consent, if applicable) | FALSE | GTM Preview → test consent flow | |||||||||||||||||||||||
41 | Step 3 | Check Current Tracking (if relevant) | ||||||||||||||||||||||||
42 | Property Type | Check | Complete | How to | ||||||||||||||||||||||
43 | GA4 | Core conversion events exist (forms / bookings / purchases) | FALSE | GA4 → Configure → Events | ||||||||||||||||||||||
44 | Correct events marked as key events | FALSE | GA4 → Admin →Data Display → Events → Star Key Events | |||||||||||||||||||||||
45 | Conversion fires on success (not click) | FALSE | GA4 DebugView → complete action | |||||||||||||||||||||||
46 | No duplicate conversion events | FALSE | DebugView → repeat action | |||||||||||||||||||||||
47 | Events fire once per user action | FALSE | DebugView → observe event count | |||||||||||||||||||||||
48 | Events not firing on page load unintentionally | FALSE | DebugView → reload page | |||||||||||||||||||||||
49 | Event names follow GA4 conventions | FALSE | GA4 → Events list | |||||||||||||||||||||||
50 | Micro-conversions exist (scroll / CTA) | FALSE | GA4 → Events | |||||||||||||||||||||||
51 | Conversions attribute to Organic Search | FALSE | GA4 → Traffic acquisition | |||||||||||||||||||||||
52 | Unused or legacy events removed | FALSE | GA4 → Events | |||||||||||||||||||||||
53 | Events consistent across page templates | FALSE | Test multiple page types | |||||||||||||||||||||||
54 | Events usable for SEO decision-making | FALSE | Analyst judgement | |||||||||||||||||||||||
55 | GTM | All GA4 events fired via GTM | FALSE | GTM → Tags | ||||||||||||||||||||||
56 | Single GTM tag per event | FALSE | GTM → Tags | |||||||||||||||||||||||
57 | No overlapping or duplicate triggers | FALSE | GTM → Triggers | |||||||||||||||||||||||
58 | Click triggers scoped correctly | FALSE | GTM Preview | |||||||||||||||||||||||
59 | Form submit triggers fire on success only | FALSE | GTM Preview → submit form | |||||||||||||||||||||||
60 | No events firing on page load unintentionally | FALSE | GTM Preview | |||||||||||||||||||||||
61 | Event firing order correct | FALSE | GTM Preview | |||||||||||||||||||||||
62 | Events do not fire before consent | FALSE | Preview with consent declined | |||||||||||||||||||||||
63 | Events fire after consent accepted | FALSE | Preview with consent accepted | |||||||||||||||||||||||
64 | Event logic documented | FALSE | GTM → Notes / internal doc | |||||||||||||||||||||||
65 | Events fire across all templates | FALSE | Preview multiple pages | |||||||||||||||||||||||
66 | GTM version published & tracked | FALSE | GTM → Versions | |||||||||||||||||||||||
67 | Step 4 | Create optimal Tracking (if relevant) | ||||||||||||||||||||||||
68 | Example: | Install tracking for forms | FALSE | form_submit or create thank you page and track thank_you_page_view. | ||||||||||||||||||||||
69 | Install tracking for tel: clicks | FALSE | click trigger urls for tel: | |||||||||||||||||||||||
70 | Install tracking for mailto: clicks | FALSE | click trigger urls for mailto: | |||||||||||||||||||||||
71 | Install tracking for live chat | FALSE | chat_start, chat_lead | |||||||||||||||||||||||
72 | Install tracking for bookings | FALSE | form_submit/booking_complete or create thank you page and track booking_thank_you_page_view. | |||||||||||||||||||||||
73 | Install tracking for purchases (ecom) | FALSE | view_item, add_to_cart, purchase | |||||||||||||||||||||||
74 | Install tracking funnels for forms/bookings | FALSE | Step progression events (optional but recommended where relevant) | |||||||||||||||||||||||
75 | ||||||||||||||||||||||||||
76 | ||||||||||||||||||||||||||
77 | ||||||||||||||||||||||||||
78 | ||||||||||||||||||||||||||
79 | ||||||||||||||||||||||||||
80 | ||||||||||||||||||||||||||
81 | ||||||||||||||||||||||||||
82 | ||||||||||||||||||||||||||
83 | ||||||||||||||||||||||||||
84 | ||||||||||||||||||||||||||
85 | ||||||||||||||||||||||||||
86 | ||||||||||||||||||||||||||
87 | ||||||||||||||||||||||||||
88 | ||||||||||||||||||||||||||
89 | ||||||||||||||||||||||||||
90 | ||||||||||||||||||||||||||
91 | ||||||||||||||||||||||||||
92 | ||||||||||||||||||||||||||
93 | ||||||||||||||||||||||||||
94 | ||||||||||||||||||||||||||
95 | ||||||||||||||||||||||||||
96 | ||||||||||||||||||||||||||
97 | ||||||||||||||||||||||||||
98 | ||||||||||||||||||||||||||
99 | ||||||||||||||||||||||||||
100 | ||||||||||||||||||||||||||