Ad Tracking Gap Checker
Pricing
Pay per usage
Ad Tracking Gap Checker
Finds online stores that pay for ads but cannot measure them: no Meta pixel, no tag manager, no GA4/Google Ads tag on the homepage. Reports only what is verifiable in the page source, and says how to confirm it in ten seconds.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Gabriel Barreto
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Finds online stores that are paying for ads but cannot measure them — no Meta pixel, no tag manager, no Google Analytics or Google Ads tag on the homepage.
Give it a list of domains. It returns, for each one, what is missing, how bad it is, and how to confirm it yourself in ten seconds. You are only charged for sites where there is a real, verifiable finding.
Who this is for
- Agencies and freelancers building a prospect list: a store running ads with no pixel is a conversation that starts with a fact, not a pitch.
- Anyone auditing their own portfolio of stores, landing pages or client sites after a migration or a theme change.
What it will not do
This is the part that matters, because a scanner that overreports is worse than no scanner at all. Three guards stop false findings, and two of them exist because the naive version got them wrong:
- A purchase event never fires on a homepage.
fbq('track', 'Purchase')belongs on the thank-you page. Reporting "no purchase event" from the homepage would be false, so it is not reported. - A tag manager can inject the pixel at runtime. If GTM is present but no inline pixel, the honest answer is indeterminate — not a finding, and not charged.
- A consent manager can load every tag after consent, or server-side. Found while testing against
shopify.com: 726 KB of homepage and zero tracking signals in the source. The site measures perfectly well; it simply loads tags behind its own cookie banner. Any consent platform or tag loader present ⇒ indeterminate.
Everything the Actor claims is claimed about the HTML of the homepage, and the output says so in those words.
Input
| Field | Type | Description |
|---|---|---|
urls | string list | Domains or full URLs, one per line. example.com works; so does https://example.com/. |
onlyTargets | boolean | Return only sites with a verifiable gap. Off by default. |
maxConcurrency | integer | How many sites to fetch at once. Default 8. |
{"urls": ["allbirds.com", "example.com"],"onlyTargets": false,"maxConcurrency": 8}
Output
One row per site:
| Field | Meaning |
|---|---|
finding | What is missing, in plain words. Empty when there is nothing to report. |
severity | 1 = no pixel and no tag manager (worst). 2 = no Google tags at all. 8 = indeterminate. 9 = measurement found. |
how_to_verify | The exact string to search for in View Source. |
consent_or_loader | Whether a consent manager or tag loader was detected. |
meta_pixel, ga4, gtm, google_ads, tiktok | Raw per-signal detection. |
status_code, error | HTTP status; network or TLS failures are reported rather than hidden. |
Example row:
{"name": "example.com","url": "https://example.com","finding": "no Meta pixel and no tag manager on the homepage","severity": 1,"is_target": true,"how_to_verify": "Open the site, View Source, search for \"connect.facebook.net\" and \"GTM-\". Neither is there.","consent_or_loader": "no","status_code": 200}
Pricing
Pay per finding. Sites that measure correctly, sites where the answer is indeterminate, and sites that fail to load are all returned in the dataset free of charge — you pay only for rows you can act on.
Notes
TLS certificates are verified. An invalid certificate is not noise to be skipped: it is a finding in its own right, and it appears in the error field.