Pixel Auditor Documentation

Debug your website's tracking pixels without touching developer tools. Open the side panel, browse your site, and see everything that's being tracked — what fires, where it goes, and what's broken.


Getting Started

Installation

Install Pixel Auditor from the Chrome Web Store, then pin it to your toolbar for easy access.

Basic Workflow

  1. Open the side panel — Click the Pixel Auditor icon in your Chrome toolbar, or right-click and select "Open side panel"
  2. Browse your site — Navigate through your website as you normally would. The extension captures tracking events automatically as you move from page to page.
  3. Check the Status tab first — This gives you an at-a-glance health overview. Green means OK, yellow means warnings, red means errors.
  4. Drill into specific issues — Use the Pixels, Activity, and Requests tabs to investigate anything flagged in Status.

How Data Persistence Works

All captured data — pixels, events, statuses — persists as you browse from page to page. Nothing disappears when you navigate. The extension keeps accumulating data across every page you visit so you can browse your entire site and build up a complete picture of what's firing and where.

Data is only cleared when you click the Clear button. The browser does not clear your data between page views, tab switches, or navigations. You stay in control.

The extension supports up to 1,000 pixel requests and 1,000 dataLayer events per tab. Use the Export button to copy all captured data as JSON before clearing.


The Four Tabs

Pixels Tab

Shows every tracking vendor detected on your site.

What you'll see:

Use this tab to:

Pixels Tab showing Meta pixel with ID and location count

The Pixels tab shows detected vendors with their IDs. Click any ID to copy it.

Pixels Tab with multiple vendors detected

On a complex site, you'll see multiple vendors with their respective measurement IDs, conversion IDs, and container IDs.

Status Tab

Your at-a-glance health dashboard.

What you'll see:

Issue types you may encounter:

"Copy & Debug with AI" button: Copies a plain-language diagnostic summary to your clipboard and opens Claude AI for step-by-step fix instructions.

Status Tab showing vendor health overview with consent mode

The Status tab gives you an instant health check. Green "OK" means no issues. Yellow/orange badges need attention. Consent Mode status appears at the bottom.

Activity Tab

A unified timeline of all tracking events in chronological order.

What you'll see:

Flow matching: The extension automatically links a dataLayer.push() to the network requests it triggered, showing the full journey from collection to delivery.

Expandable detail panel: Click any event to see the full dataLayer payload and request URLs.

"Ask AI to review" button: Opens Claude with the event data pre-loaded for analysis.

System events: Low-noise events like gtm.js, session_start, user_engagement, and scroll are collapsed into a single expandable "System events" group at the bottom.

Activity Tab showing event timeline with issues

The Activity tab shows every event in chronological order. Red badges highlight problems — "Privacy Issue", "Missing required fields", and "No account ID found" flagged on specific events.

Activity Tab with clean event flow

A cleaner view showing events that were collected and successfully sent to their destinations. The "System events" group at the bottom collapses noise.

Activity Tab on a simple site

On a simpler implementation, you'll see a clear flow of events firing to GA4.

Requests Tab

Raw network request view for deep debugging.

What you'll see:

Available actions per request:


Search & Filtering

Search Box

The search box at the top filters across all tabs in real time. It matches against event names, request URLs, and parameter values.

Examples:

Vendor Filter Bar

A row of clickable vendor logo icons appears below the search box: Google, Meta, LinkedIn, Microsoft, TikTok, Snapchat, Other.


Diagnostics & Validation

PII Detection

Every request is scanned for plaintext emails, phone numbers, and unhashed personal data. Fields that should be SHA256-hashed (like em, ph, fn, ln) are flagged if they contain raw values.

What to do when PII is detected:

  1. Identify the source — check the Activity tab to see which dataLayer event pushed the PII
  2. Fix your GTM tags or site code to hash personal data before sending
  3. For Meta CAPI events, ensure you're using SHA256 hashing for all user data fields

GA4 Schema Validation

The extension checks 17 standard e-commerce events against Google's official schemas:

purchase, add_to_cart, remove_from_cart, begin_checkout, add_payment_info, add_shipping_info, view_item, view_item_list, select_item, view_cart, add_to_wishlist, view_promotion, select_promotion, sign_up, login, search, generate_lead

Validation levels:

Consent Mode Decoding

The extension reads Google's gcs parameter to show whether tracking is running in full or restricted mode:

Request Status Tracking

Each pixel request shows its delivery status:

Missing Account ID Warnings

When a vendor's tracking request doesn't contain a recognizable property/pixel ID, you'll see a warning. This usually means the pixel is misconfigured or firing before configuration is complete.


DataLayer Interception

The extension captures all tracking events pushed to the dataLayer, including:

Technical details:


Troubleshooting

"I don't see any pixels loading"

Possible causes:

  1. The side panel isn't active — Make sure you opened the side panel before navigating to your site. Events that fire before the panel opens won't be captured.
  2. Ad blockers are interfering — Disable ad blockers or add your site to the allowlist.
  3. No tracking is implemented — Check that your site actually has tracking pixels installed.

Fix: Open the side panel first, then navigate to your site. Try refreshing the page with the panel already open.

"Events show as Collected but not Sent"

This means the dataLayer received the event, but no network request was triggered.

Possible causes:

  1. Consent not granted — Check the Status tab for consent mode status.
  2. GTM trigger isn't configured — The event exists in the dataLayer but no GTM tag is listening for it.
  3. Tag firing rules not met — The GTM tag has conditions that aren't being satisfied.

Fix: Check your GTM container to ensure a tag is configured to fire on this event. Verify consent settings in your CMP.

"PII detected in request"

You're sending personal data in plaintext when it should be hashed.

Common sources:

Fix:

  1. Identify the source event in the Activity tab
  2. Update your GTM tag or site code to SHA256-hash personal data before it reaches the dataLayer
  3. For Meta CAPI: hash em, ph, fn, ln, ct, st, zp, country, db, ge fields

"Missing required parameters on GA4 event"

Your e-commerce event is missing fields that GA4 needs for proper reporting.

Common missing fields:

Fix: Update your dataLayer push or GTM tag to include the missing parameters.

"Request failed"

Possible causes:

  1. Network issues — Temporary connectivity problems
  2. Ad blocker — Request was blocked by browser extension
  3. CSP blocking — Your site's Content Security Policy is blocking the request
  4. Invalid endpoint — The tracking endpoint URL is incorrect

Fix: Check browser DevTools Network tab for the specific error. Disable ad blockers to test. Review your CSP headers if using them.

"No account ID detected"

Possible causes:

  1. Pixel firing before configuration — The tracking code is executing before the ID is set
  2. Misconfigured GTM variable — The property ID variable is empty or undefined
  3. Hardcoded ID removed — Someone deleted the ID from the tracking code

Fix: Check your GTM variables or hardcoded tracking snippets to ensure the property/pixel ID is present and loads before any events fire.

"I'm seeing duplicate events"

Possible causes:

  1. Multiple GTM containers — You have more than one GTM container on the page
  2. Multiple pixel implementations — Both GTM and hardcoded pixels are installed
  3. Tag firing multiple times — GTM trigger is configured to fire more than once

Fix: Audit your page source for duplicate tracking implementations. Check GTM for duplicate tags or overly broad triggers.

"Consent Mode shows Pending indefinitely"

Possible causes:

  1. CMP not initialized — Your consent management platform isn't loading properly
  2. Consent callback not firing — The CMP isn't communicating with GTM
  3. Missing default consent state — No default consent mode is configured

Fix: Verify your CMP is loading and initializing correctly. Check that your GTM container has a Consent Initialization trigger with default consent settings.


Supported Vendors


Tips for Efficient Debugging

  1. Start with Status — Always check the Status tab first for the quickest overview of issues.
  2. Use search liberally — Type specific event names, transaction IDs, or user identifiers to filter down to exactly what you need.
  3. Export before clearing — If you're documenting issues or sharing with a team, export the JSON data before hitting Clear.
  4. Test the full funnel — Don't just check the homepage. Browse through product pages, add to cart, start checkout, and complete a test purchase to validate the entire tracking implementation.
  5. Use the AI review — When you're stuck, the "Ask AI to review" button provides specific guidance based on your actual event data.
  6. Check consent first — Many tracking "failures" are actually consent mode working correctly. Always verify consent status before assuming something is broken.

Built by Jesper Astrom & Claude Code (Opus 4.6)