Checklists that catch intent, not only syntax
A correctly spelled Purchase on the landing page will pass the validator and wreck the model. Staging that trains production will too. These pages are who does what before go-live.
Validate a pixel or CAPI All docs
PM checklist
Ship the event dictionary, owners, environments, PII rules, and the success metric before anyone pastes a snippet. A tag without a dictionary is how Purchse reaches production.
Marketer checklist
Before go-live: both pipes, shared event_id, Test Events showing matched user data, value and currency on money events, and a plan for refunds. Empty Test Events means you are not live, even if GTM says the tag fired.
Engineer checklist
Hash the fields the vendor named, with their normalization. Leave IP and user-agent in the clear. Keep raw email out of query strings and out of shared HARs. CI should catch the inverse bugs.
QA pixels in staging
Staging must not train production. Use test_event_code, debug_mode, or a separate pixel / measurement id. Pointing staging at the production pixel because 'it is easier' is a data incident.
Contract-test pixels and CAPI payloads in CI
Keep fixture URLs and JSON next to the code. pixellint validate url and pixellint validate json on every PR. Weekly HAR archaeology does not catch the merge that shipped Date.now() to Meta.
Debugging pixels in Chrome Network
Filter by collector host: facebook.com/tr, google-analytics.com/g/collect, ads.tiktok.com. Preserve log across redirects. Status 200 is the start of the story, not the end.
HAR files for pixel debugging
A HAR is a fired artifact plus cookies plus whatever PII the page put in query strings. Share it like a password dump. Prefer staging HARs and redaction.
GTM loader and preview
The GTM loader is googletagmanager.com/gtm.js?id=GTM-XXXX. That request is not the conversion hit. Preview attaches a debug cookie to a draft. Users without it get the published container. Shipping on preview alone is how unpublished tags look fine.
Pixel not firing
Facebook pixel not firing, TikTok pixel not tracking, GTM says the tag fired and Network is empty. Check the collector URL, ad blockers, consent, SPA routes, duplicate installs, and GTM environments. Then paste the URL into a pixel validator.
Facebook Pixel Helper vs Network
Facebook Pixel Helper is a vendor overlay. Chrome Network is the fired facebook.com/tr URL. Events Manager is delayed. A tracking pixel validator lints that URL against Meta's documented parameters before you wait on the UI.