
QA checklist for verifying GA4, Meta Pixel, and GTM tracking on your funnel — test procedures, debugging tools, and common failure points.
TL;DR: Before you spend a dollar on ads, verify every tracking event fires correctly on every funnel page. This checklist walks you through testing GA4 events, Meta Pixel events, and GTM container setup using Realtime reports, Pixel Helper, and GTM Preview mode. If any event is missing or misfiring, you will find it here.
You installed GA4. You added the Meta Pixel. You set up Google Tag Manager. Everything looks right in the settings.
But is it actually working?
The most expensive tracking mistake is not a broken pixel -- it is a pixel you think is working but is not. You launch ads, spend $500, and then discover that your "Lead" event was firing on page load instead of form submission. Now your ad data is garbage, your cost-per-lead is fictional, and you have no idea what is actually converting.
This checklist catches those problems before you launch. Run through it once per funnel, and again whenever you change a page, event, or tag.
Install these before starting:
<style>.cf-tbl-1{width:100%;max-width:720px;border-collapse:separate;border-spacing:0;background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,0.04),0 4px 12px rgba(0,0,0,0.06);font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;color:#1a1a2e}.cf-tbl-1 th{background:#1a1a2e;color:#fff;font-weight:600;font-size:13px;letter-spacing:0.03em;text-transform:uppercase;padding:16px 24px;text-align:left}.cf-tbl-1 th:not(:first-child){text-align:center}.cf-tbl-1 td{padding:18px 24px;font-size:14.5px;line-height:1.5;border-bottom:1px solid #f0f0f5}.cf-tbl-1 td:first-child{font-weight:600;color:#1a1a2e;position:relative;padding-left:36px}.cf-tbl-1 td:first-child::before{content:'';position:absolute;left:12px;top:50%;transform:translateY(-50%);width:4px;height:20px;border-radius:4px}.cf-tbl-1 tr:nth-child(6n+1) td:first-child::before{background:#6366f1}.cf-tbl-1 tr:nth-child(6n+2) td:first-child::before{background:#f59e0b}.cf-tbl-1 tr:nth-child(6n+3) td:first-child::before{background:#10b981}.cf-tbl-1 tr:nth-child(6n+4) td:first-child::before{background:#ec4899}.cf-tbl-1 tr:nth-child(6n+5) td:first-child::before{background:#8b5cf6}.cf-tbl-1 tr:nth-child(6n+6) td:first-child::before{background:#06b6d4}.cf-tbl-1 td:not(:first-child){text-align:center;color:#555}.cf-tbl-1 tr:hover td{background:#f8f7ff}.cf-tbl-1 tr:last-child td{border-bottom:none}@media(max-width:540px){.cf-tbl-1 th,.cf-tbl-1 td{padding:12px 14px;font-size:13px}}</style><table class="cf-tbl-1"><thead><tr><th>Tool</th><th>What It Does</th><th>Where to Get It</th></tr></thead><tbody><tr><td>GA4 Realtime Report</td><td>Shows events as they fire in real time</td><td>Built into GA4 (Reports > Realtime)</td></tr><tr><td>Meta Pixel Helper</td><td>Chrome extension that shows pixel events on any page</td><td>Chrome Web Store (search "Meta Pixel Helper")</td></tr><tr><td>GTM Preview Mode</td><td>Debug mode that shows which tags fire and when</td><td>Built into Google Tag Manager</td></tr><tr><td>Meta Events Manager - Test Events</td><td>Shows server and browser events with deduplication status</td><td>business.facebook.com/events_manager</td></tr></tbody></table>
Before checking individual events, make sure your GTM container is loading on every page.
If GTM is not loading on a page: Check that the GTM container code is installed in the page's `<head>` section in ClickFunnels. Each page must have the container code -- it does not inherit from other pages.
Opt-In Page:
Form Submission (fill out the form with a test email):
Thank-You Page:
Booking Page:
Opt-In Page:
Form Submission:
Thank-You Page:
Booking Page:
`https://yourdomain.com/ai-readiness-scorecard?utmsource=test&utmmedium=qa&utm_campaign=tracking-check`
If UTMs are not showing: Make sure your form submission redirects to the thank-you page via server-side redirect, not a JavaScript redirect that strips the URL parameters.
<style>.cf-tbl-2{width:100%;max-width:720px;border-collapse:separate;border-spacing:0;background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,0.04),0 4px 12px rgba(0,0,0,0.06);font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;color:#1a1a2e}.cf-tbl-2 th{background:#1a1a2e;color:#fff;font-weight:600;font-size:13px;letter-spacing:0.03em;text-transform:uppercase;padding:16px 24px;text-align:left}.cf-tbl-2 th:not(:first-child){text-align:center}.cf-tbl-2 td{padding:18px 24px;font-size:14.5px;line-height:1.5;border-bottom:1px solid #f0f0f5}.cf-tbl-2 td:first-child{font-weight:600;color:#1a1a2e;position:relative;padding-left:36px}.cf-tbl-2 td:first-child::before{content:'';position:absolute;left:12px;top:50%;transform:translateY(-50%);width:4px;height:20px;border-radius:4px}.cf-tbl-2 tr:nth-child(6n+1) td:first-child::before{background:#6366f1}.cf-tbl-2 tr:nth-child(6n+2) td:first-child::before{background:#f59e0b}.cf-tbl-2 tr:nth-child(6n+3) td:first-child::before{background:#10b981}.cf-tbl-2 tr:nth-child(6n+4) td:first-child::before{background:#ec4899}.cf-tbl-2 tr:nth-child(6n+5) td:first-child::before{background:#8b5cf6}.cf-tbl-2 tr:nth-child(6n+6) td:first-child::before{background:#06b6d4}.cf-tbl-2 td:not(:first-child){text-align:center;color:#555}.cf-tbl-2 tr:hover td{background:#f8f7ff}.cf-tbl-2 tr:last-child td{border-bottom:none}@media(max-width:540px){.cf-tbl-2 th,.cf-tbl-2 td{padding:12px 14px;font-size:13px}}</style><table class="cf-tbl-2"><thead><tr><th>Symptom</th><th>Likely Cause</th><th>Fix</th></tr></thead><tbody><tr><td>No events at all</td><td>GTM container not installed on the page</td><td>Add the GTM code to the page's <head> in ClickFunnels</td></tr><tr><td>Events fire on wrong pages</td><td>Tag trigger is set to "All Pages" instead of specific page</td><td>Update the GTM trigger to fire only on the correct URL path</td></tr><tr><td>Lead event fires twice</td><td>Pixel code installed both in GTM AND directly in ClickFunnels</td><td>Remove the direct code; use only GTM</td></tr><tr><td>Lead event fires on page load, not form submit</td><td>Trigger is "Page View" instead of "Form Submission"</td><td>Change the trigger to "Form Submission" or custom event</td></tr><tr><td>GA4 events not marked as conversions</td><td>Events exist but not toggled as conversions</td><td>Go to Admin > Events and toggle "Mark as conversion"</td></tr><tr><td>Pixel Helper shows "Pixel not found"</td><td>Pixel tag is not firing or is blocked</td><td>Check GTM Preview mode for tag errors; test in incognito mode</td></tr><tr><td>UTM parameters disappear on redirect</td><td>JavaScript redirect strips query parameters</td><td>Use server-side redirect or pass UTMs through hidden form fields</td></tr><tr><td>CAPI events not deduplicating</td><td>Mismatched event_id between browser and server</td><td>Use ClickFunnels native CAPI integration</td></tr></tbody></table>
Run this before every funnel launch and after every page change:
Before every funnel launch, after every page edit, and monthly as part of your regular maintenance. Platforms update, pages get cloned with broken tracking, and integrations break silently. A monthly check catches drift before it costs you money.
Yes. All testing is done using organic page visits, GA4 Realtime reports, Meta Pixel Helper, and GTM Preview mode. You do not need to run ads to verify tracking. Test everything before you turn on ads.
This usually means the Meta Pixel tag in GTM is not firing correctly. Check GTM Preview mode to verify the Meta Pixel tag fires on the correct trigger. Also verify the Pixel ID in your tag matches your actual pixel.
Use Chrome DevTools device emulation (F12 > toggle device toolbar) for basic testing. For real mobile testing, browse your funnel on your phone and check GA4 Realtime for the events. Meta Pixel Helper only works on desktop Chrome.

CEO Of Bezalel Digital
Get the latest insights on digital marketing, entrepreneurship, leadership, and faith-based topics from CEO Carlos Vargas. At Best Blog Ever, you'll find the best information available to help you level up your success and grow your business. With content tailored to your individual needs, you'll be equipped to take on any challenge. Get started today and join the Best Blog Ever community!

Bezalel Digital © 2023 | All Rights Reserved | CarlosVargas.com
Terms | Income Disclaimer