There are two halves: a Chrome extension that watches while you browse your own store, and — for Pro — a check that runs once a day from our servers. This page describes exactly what each one does.
When you enter your store address and browse your store, the extension watches the network requests your browser sends to a fixed list of tracking domains:
facebook.com, connect.facebook.net — Metagoogle-analytics.com, analytics.google.com,
googletagmanager.com — GA4 and Google Tag Managerdoubleclick.net — Google Adsanalytics.tiktok.com — TikTokklaviyo.com, ct.pinterest.com,
tr.snapchat.com, monorail-edge.shopifysvc.com —
detected so we can tell you they're presentFrom each request it reads the event name, the pixel or account ID, the page path, the order value and currency, and the timestamp. That is what lets it say "your Purchase event fired, but it carried no value".
This isn't a promise of restraint — it's the shape of the tool. The extension looks at request URLs going to the domains above. It has no reason to touch, and does not touch:
One exception is worth naming, because it's the opposite of what you'd expect: some pixels put the customer's email address into the tracking request itself, sometimes unhashed. PixelAlert has to notice this, because sending unhashed customer data to an ad platform is one of the problems it reports. So it detects the value, strips it at the moment of capture, and keeps only a flag saying "this request contained an email". The value itself is never stored.
If you separately grant access to admin.shopify.com and open it,
the extension reads your order list — order number, date, cancelled status, amount,
currency — so it can compare your real sales against the purchases your pixels
reported. Nothing else from the admin panel is read. This permission is optional
and the rest of the product works without it.
Continuous monitoring can't run in your browser, because your browser isn't open at 3am. So once a day our servers visit your storefront and walk the same funnel — home page, a product page, the cart, the start of checkout — to see whether tracking still fires.
The whole point is to see what your customers' browsers see, so the scan behaves like a shopper. A scan that behaved like anything else would measure something other than your customers' experience.
What stops the scan: removing the store from monitoring (which also deletes its monitoring data), removing the verification string from your theme, or your Pro subscription ending — a cancelled or expired licence drops its stores off the scan list entirely.
The scan visits public storefront pages only. It does not log in, does not place an order, and does not touch your Shopify admin. It runs once a day.
| Kept from each scan | Not kept |
|---|---|
| Date · your store domain · whether the funnel completed · how many Meta tracking requests were seen · whether a bot-challenge page appeared · the region the scan ran from · whether a consent banner was present | Page content · screenshots · product data · customer data · the tracking request URLs themselves |
From those counts we derive a small monitoring state per store: the last day tracking looked normal, how many days in a row something has been failing, and which alerts have already been sent so you aren't told the same thing twice. It's stored in Cloudflare Workers KV under keys named after your store domain.
The ownership check that reads your theme identifies itself as
PixelAlert. The daily funnel scan runs a real Chrome browser and sends a
standard Chrome user agent — for the reason above: pixels and consent tools behave
differently when they detect a bot, so an announced scan would measure the wrong
thing.
Some things are structurally outside what any browser extension can observe, and the product says so rather than reporting them as clean:
That distinction runs through the whole product. "We measured this and it's fine" and "we didn't measure this" are different results, and PixelAlert never shows the second as the first.
Everything the extension records stays in your own browser's local storage and is deleted after 60 days. The only things that leave your device are the licence check (your email address, to confirm your subscription) and the daily store check described above — and neither happens unless you subscribe to Pro. Full detail in the privacy policy.