QA Ultimate Stack
Check ad-platform pixels and console errors alongside GA4
See Google Ads, Floodlight, Meta, TikTok, Microsoft Ads, LinkedIn, Pinterest, Snap and Taboola beacons with the same delivery and CSP checks as GA4, and read the console errors that explain a failure.
Ad pixels get the same delivery check
The same page load that captures GA4 hits also captures ad-platform beacons, in a separate Ad-platform pixels list so the GA4 results stay unchanged. Each beacon gets the same treatment as a GA4 hit: its platform, endpoint, the account or pixel ID it carries, the events it reports, a delivery outcome and its CSP status.
Read it carefully. A platform that doesn't fire on a page isn't a failure; plenty of pages don't carry every pixel. A pixel that fires and is refused, by CSP or a blocker, is the finding.
A table of ad-platform beacons for Google Ads, Meta, Microsoft Ads and LinkedIn with delivered and blocked outcomes.
Which platforms are recognised
Google Ads and Floodlight, Meta, TikTok, Microsoft Ads (UET), LinkedIn, Pinterest, Snap and Taboola. A beacon is matched by the platform's own request format, so its events and IDs can be read.
A two-column list of the recognised ad platforms.
What to look for in the pixel rows
- Refused: the outcome says blocked. Check the CSP status on the same row; ad hosts are often missing from img-src or connect-src.
- The wrong ID: the account or pixel ID column shows another brand's ID. This is the most common result of copying one brand's container to the next, and it sends one brand's conversions to another brand's ad account.
- The same event twice: two rows for one action usually means two tags (a platform template and an old Custom HTML version, say) both fire.
- Missing where it matters: inspect the confirmation page itself, where the conversion pixel should be, not only the form page.
- Firing before consent: the test visitor hasn't accepted anything. A marketing pixel that fires anyway is worth checking against the brand's consent rules.
A checklist of pixel problems: refused, wrong ID, duplicate event, missing on the confirmation page, and firing before consent.
Console errors explain failures
The Console tab records every console message and uncaught error from the whole page load, including the browser's own "Refused to connect" CSP lines and failed resource loads. Each entry is marked when it's analytics-related (it mentions GTM, gtag, GA, the dataLayer, collect, a G- or GTM- id, or CSP), so you can filter down to the ones that matter.
Console errors are informational: they never change a verdict. But an error like dataLayer.push is not a function or a CSP refusal is often the explanation for a missing hit.
A console table filtered to analytics-related entries, with a CSP refusal and a dataLayer TypeError kept and an unrelated warning hidden.
ODDVX for Windows
From the page to the hit, proved.
Start free with one saved form, one page and one parity check. Premium adds batch runs, exports and scheduled QA.