Install the Admaxxer Web Pixel on Shopify — capture checkout_completed
If your Shopify storefront is connected to Admaxxer but your dashboard shows "Shopify vs Admaxxer Revenue: +100% gap" or your Match Score is low, the most common cause is that the Admaxxer Web Pixel never registered on your shop. The Web Pixel is what captures checkout_completed from Shopify's sandboxed checkout pages — the only place a pixel can “see” the order being placed. This guide explains why the Web Pixel matters, how to install it reliably with a two-minute Custom Pixel paste, and when the automatic install applies.
Why Admaxxer needs a checkout pixel
Shopify isolates the checkout pages from the rest of the storefront. A “script tag” pixel installed via theme.liquid (the legacy Admaxxer install path) loads on collection pages, product pages, and the cart — but Shopify deliberately strips it from the checkout funnel. This is by design: checkout is a high-trust surface, and arbitrary script execution there is a fraud / data-leak risk.
The supported way to receive checkout events is the Customer Events API. A Customer Events pixel runs in a sandboxed Web Worker, subscribes to events via analytics.subscribe(eventName, callback), and POSTs to your collector. The Admaxxer Custom Pixel does exactly this — see the architecture deep-dive at /documentation/architecture/shopify-pixel.
Without a working Web Pixel, Admaxxer captures pageviews (via the legacy script_tag install) but not the checkout. That is why the dashboard reports a 100% revenue gap and a low Match Score: the visitor session is recorded, the product views are recorded, but the order itself never reaches the pixel. The daily Shopify polling fallback eventually fills the dashboard tiles 24+ hours later, but real-time attribution — the join from ad-click to revenue — never happens.
The Web Pixel subscribes to all 15 standard Shopify Customer Events, including checkout_completed, checkout_started, payment_info_submitted, and product_added_to_cart. Each event is POSTed to https://collect.admaxxer.com/v1/shopify/collect with keepalive: true so the request survives the post-checkout redirect.
How the pixel installs
The install is the Custom Pixel paste: Shopify Admin › Settings › Customer events › Add custom pixel, paste the Admaxxer snippet, Save, then Connect — about two minutes, and it captures checkout on every store. With the pixel permissions granted on your Custom App, Admaxxer also verifies the install is present, connected, and healthy on every reconnect.
If you connect with your own Custom App instead (Settings › Connections › Shopify › paste your Access Token), the OAuth callback attempts the webPixelCreate Admin GraphQL mutation and then verifies the result. In practice this attempt does not reliably register a working checkout pixel on a Custom App, so the dependable path there is the Custom Pixel paste described below — it captures checkout on every store in about two minutes.
Granting the three pixel permissions together — write_pixels and read_customer_events to attempt the registration, plus read_pixels so Admaxxer can read the result back and monitor your pixel's install health — is what enables that automatic attempt and the health check. An app missing any of the three returns ACCESS_DENIED from the mutation, and Admaxxer records the pixel as not registered. On a Custom App the trio is optional: it powers the attempt and the install-health monitor, but it is not required for checkout capture, because the Custom Pixel paste handles that. Pageviews fire regardless (they don't require the pixel permissions).
However you install it, the pixel is visible in Shopify Admin › Settings › Customer events. Status reads “Connected” and the “Account ID” setting shows your Admaxxer workspace's account ID (e.g., admx_abc123).
How to verify the Web Pixel is installed
- Open your Shopify Admin and go to Settings › Customer events.
- Look for an entry titled “Admaxxer Pixel” (or similar, depending on your install path) under “App pixels.”
- Click the entry and confirm the status is Connected and the Account ID setting is populated with a value that starts with
admx_. - Place a test order on your storefront. Within 10–30 seconds, your Admaxxer dashboard should show the order in the Live Visitor stream (Settings › Pixel › Live), and within ~5 minutes the order should appear in visitor_payments.
If you administer multiple shops, you can also check pixel status for every connected shop from the Integrations page in Admaxxer — it shows each shop's registration state at a glance and lets you re-attempt registration where your app permits it.
Install the Custom Pixel — the reliable path
On a Custom App this is the dependable way to capture checkout: it works on every store in about two minutes, whether or not your app carries the pixel permissions. Paste the Custom Pixel snippet directly:
- In Admaxxer, open /integrations/shopify. Copy the snippet displayed under “Custom Pixel snippet” — it's pre-filled with your workspace's Admaxxer account ID. (Programmatic access:
GET /api/integrations/shopify/custom-pixel-snippet.) - In Shopify Admin, go to Settings › Customer events.
- Click Add custom pixel. Name it “Admaxxer”.
- Set Customer privacy to require Analytics consent (and Marketing consent if you operate in GDPR regions). Without these, the pixel is gated off in compliant regions.
- Paste the snippet into the Code editor. Click Save first. Then click Connect. Saving before connecting is required — if you click Connect first, the snippet is lost. (See /documentation/architecture/shopify-pixel for the full sandbox model and the destructure pattern that satisfies Shopify's ESLint dot-notation rule.)
The Custom Pixel snippet runs in Shopify's sandboxed pixel environment via analytics.subscribe() and lives in your store's Customer Events configuration directly — you can open it, read it, and remove it at any time.
Scope recovery — adding the pixel permissions to your Shopify app
If you connected Admaxxer via a Custom App (Shopify Admin › Apps › Develop apps for your store), the access scopes are baked into the app. Granting the pixel trio — write_pixels, read_customer_events, and read_pixels — lets Admaxxer attempt automatic registration on your next reconnect and verify your pixel's install health. It is not required for checkout capture on a Custom App: the Custom Pixel paste above already handles that reliably. If you do want the automatic attempt and the health monitor, and Shopify's newer Dev Dashboard doesn't show your app's current scopes, paste the complete scope list from the Custom App walkthrough rather than guessing the delta:
The steps below cover legacy custom apps created in your Shopify admin before Jan 1, 2026. For apps created in the Shopify Dev Dashboard (the path for all new apps since Jan 1, 2026), the dashboard no longer shows which scopes an app already has and every scope change ships as a new app version — so paste the complete scope list from the Custom App walkthrough, release the new version, then reconnect.
- In Shopify Admin, go to Apps and sales channels › Develop apps.
- Click your Admaxxer Custom App.
- Under Configuration › Admin API integration, click Configure.
- In the Admin API access scopes picker, make sure all three pixel permissions are checked —
write_pixels,read_customer_events, andread_pixels. Shopify needs the first two to register the pixel and the third lets Admaxxer confirm it installed. To avoid guesswork, paste the complete scope list from the Custom App walkthrough. - Click Save. Shopify prompts you to reinstall the app (or, in the Dev Dashboard, to release a new app version) to apply the new scopes. Apply it.
- Reconnect on Admaxxer from Integrations › Shopify › Reconnect. Admaxxer re-checks your permissions and your pixel's install health.
Either way, the manual Custom Pixel paste described above is the reliable path to checkout capture — it needs no scope changes and works on every store, so you never have to touch the Custom App to close a revenue gap.
Related Admaxxer documentation
- Install hub — every install path for the Admaxxer pixel across 30+ platforms.
- Shopify install — theme.liquid script_tag install (legacy, captures pageviews only).
- Shopify Custom Pixel sandbox — deep-dive on the Web Worker runtime, the destructure pattern, and the full install saga.
- Shopify Custom App walkthrough — step-by-step Custom App creation with the right scopes.
- /integrations/shopify — in-app Shopify connection page with the Custom Pixel snippet pre-filled.
- Revenue data flow — the four ingestion paths into our analytics warehouse and how source-additive aggregation works.
- Dashboard analytics card reference — what Match Score and the Shopify-vs-Admaxxer revenue gap mean.
- Shopify revenue connector — Admin webhook registration for orders/paid + refunds/create.
FAQ
Why is my Match Score low / Shopify-Admaxxer revenue gap +100%?
The most common cause is that the Admaxxer Web Pixel never registered on your shop. The legacy script_tag pixel only fires on storefront pages; Shopify isolates the checkout from script_tag pixels, so checkout_completed never reaches Admaxxer's collector. Your daily Shopify polling fallback fills dashboard tiles 24 hours later, but real-time attribution — the join from the visitor's original ad click to revenue — never happens. The fix: paste the Custom Pixel (Settings › Customer events › Add custom pixel) — it captures checkout on every store in about two minutes.
How do I install the Admaxxer Web Pixel on Shopify?
The install is the manual Custom Pixel: Shopify Admin › Settings › Customer events › Add custom pixel, paste the snippet from /integrations/shopify, and click Save before Connect. It captures checkout on every store and needs no scope changes. With the pixel permissions write_pixels, read_customer_events, and read_pixels granted on your Custom App, Admaxxer additionally verifies your pixel's install health on every reconnect — but the Custom Pixel paste is what captures checkout.
What is the Admaxxer checkout pixel?
It is Admaxxer's checkout-tracking pixel, running in Shopify's sandboxed Web Worker on every storefront and checkout page via the Custom Pixel you paste. It subscribes to all 15 standard Shopify Customer Events (page_viewed, product_viewed, cart_viewed, checkout_started, checkout_completed, etc.) via analytics.subscribe(eventName, callback) and sends each event to Admaxxer's collector tagged with your workspace's account ID.
Why does the pixel status show ACCESS_DENIED?
ACCESS_DENIED means your app is missing one of the three pixel permissions Shopify checks together: write_pixels to register the pixel, read_customer_events to subscribe to checkout events, and read_pixels so Admaxxer can read the result back. Granting all three lets Admaxxer attempt the registration and verify your pixel's install health on reconnect. On a Custom App, though, that attempt is not what reliably captures checkout — the Custom Pixel you paste in Settings › Customer events is. So the dependable fix is to paste the Custom Pixel (about two minutes, works on every store); grant the trio as well if you want Admaxxer to monitor install health. Because Shopify's new Dev Dashboard no longer shows an app's currently-granted scopes, paste the complete scope list from the Custom App walkthrough and release a new app version rather than guessing the delta.
Will pageviews still work without the Web Pixel?
Yes. The legacy script_tag pixel install path (theme.liquid) loads on every storefront page (collections, products, cart) and captures pageviews, sessions, click IDs, and UTMs. Shopify only isolates the checkout from script_tag pixels — so without the Web Pixel you'll see traffic, sessions, and visitor profiles but no checkout_completed events and a 100% gap on real-time order revenue. The daily polling fallback eventually fills the order count and revenue tiles, but real-time attribution is broken.
How do I verify the Web Pixel is firing?
In Shopify Admin, go to Settings › Customer events and confirm there is an entry whose status reads “Connected” and whose Account ID setting starts with admx_. Place a test order; within ~30 seconds the order should appear in your Admaxxer dashboard's Live Visitor stream, and within ~5 minutes in your revenue tables. You can also check your pixel's install health at any time from the Integrations page in Admaxxer.
Can I remove or pause the Admaxxer pixel?
Yes. Go to Settings › Customer events, open your Admaxxer pixel entry, and click Disconnect — checkout events stop immediately, and you can reconnect at any time. Deleting the pixel entry removes it entirely.
Does the Web Pixel respect customer privacy / GDPR consent?
Yes. The extension manifest declares customer_privacy.analytics = true and customer_privacy.marketing = true. Shopify gates pixel firing on these consent categories — in GDPR regions, the pixel does not execute until the visitor grants both Analytics and Marketing consent. The same applies to the manual Custom Pixel install, where you set the consent requirements at the Customer Event level.
Connect Shopify and start seeing checkout-completed in real time
If you haven't connected your Shopify yet, it takes about five minutes: connect your store at /integrations/shopify, then add the Custom Pixel in Shopify Admin › Settings › Customer events (Add custom pixel, paste the snippet, Save before Connect). That's the reliable path that captures checkout on every store. If you already connected and your Match Score is low, check your pixel's install health on the Integrations page in Admaxxer, or follow the Custom Pixel paste steps above.
Connect Shopify · Browse all install paths · Read the architecture deep-dive