Revenue Connectors · Shopify
Connect Shopify to Admaxxer
Connect Shopify through your own custom app so every order — physical, digital, subscription — flows into your revenue attribution, blended MER, cohort LTV, and Match Quality score. You create the app in the Shopify Dev Dashboard, enable the 12 Admin API scopes, paste the Client ID + Client Secret into Admaxxer, and approve one OAuth prompt. The storefront pixel installs separately via Shopify's Customer Events (Custom Pixel), and visitors stitch to orders via note_attributes.admaxxer_visitor_id.
Open Shopify Integration Custom App walkthrough Back to all connectors
1. Prerequisites
- An active Shopify store on any plan (Basic, Shopify, Advanced, Plus).
- Permission to create a custom app: the store owner, or a staff member with the App development › Develop permission. Since January 1, 2026 custom apps are created in the Shopify Dev Dashboard (dev.shopify.com), not inside the store admin.
- An Admaxxer workspace. Your Shopify connection lives at Integrations › Shopify.
2. Connect Shopify (custom app + OAuth)
To connect Shopify, create your own custom app in the Shopify Dev Dashboard (dev.shopify.com), enable the 12 Admin API access scopes, copy the app's Client ID and Client Secret, and paste them into Admaxxer › Integrations › Shopify for a one-time OAuth approval.
- In the Shopify Dev Dashboard, create a new app for your store and open Configure Admin API access scopes.
- Enable the 12 canonical Admaxxer scopes (9 read-only plus the 3 pixel scopes
read_pixels,write_pixels, andread_customer_events):read_customers,read_customer_events,read_discounts,read_fulfillments,read_inventory,read_locations,read_marketing_events,read_orders,read_pixels,read_products,read_reports,write_pixels. - Copy the app's Client ID and Client Secret.
- In Admaxxer, open Integrations › Shopify, paste the Client ID + Client Secret, and submit.
- Admaxxer redirects you to Shopify's standard OAuth consent screen. Approve it once — Shopify hands back the access token and Admaxxer auto-installs the Web Pixel App Extension (via
webPixelCreate) so checkout events start flowing.
There is no public one-click Admaxxer Shopify app for this path — you bring your own custom app and its credentials. The full screenshot-by-screenshot walkthrough lives at /documentation/shopify-custom-app.
The 3 pixel scopes are what let Admaxxer install the Web Pixel and subscribe to checkout_completed. Without them, OAuth still succeeds but storefront checkouts never reach Admaxxer, leaving a +100% Shopify revenue gap on your dashboards.
3. Install the storefront pixel
The pixel installs separately from the data connection, via Shopify's Customer Events (Custom Pixel) — not a theme.liquid <script> tag (that path was retired) and not native admin webhooks.
- Automatic (recommended): once OAuth completes with
write_pixels+read_customer_eventsgranted, Admaxxer registers a Web Pixel App Extension for you (Shopify'swebPixelCreatemutation). Nothing to paste. - Manual fallback (Online Store 2.0 themes): add a Custom Pixel in Shopify admin under Settings › Customer events and paste the Admaxxer snippet. See the Shopify pixel install guide.
However it's installed, the pixel runs on every page view, writes the visitor ID to a first-party cookie + localStorage, and stamps it onto the order so revenue joins back to the original acquisition source.
4. How visitor stamping works on Shopify
Once the pixel from step 3 is installed:
- The Admaxxer pixel runs on every page view and writes the visitor ID to
localStorage+ a first-party cookie. - At checkout, the pixel appends a note attribute to the order:
{ "name": "admaxxer_visitor_id", "value": "<visitor-id>" }. - Shopify carries note attributes through checkout to the resulting Order. The Order includes the entry under
note_attributes. - Admaxxer reads
note_attributes.admaxxer_visitor_idfrom the order and joins it to the visitor's session graph.
This works for every checkout flow Shopify supports, including Shop Pay and accelerated checkout buttons.
5. Verify the connection
- In Integrations › Shopify, confirm the connection status reads Connected and that no missing-scope banner is showing. If a banner appears, enable the listed scope(s) on your custom app in the Dev Dashboard and re-authorize.
- Place a real test order. After it completes, inspect the order in Shopify admin (Orders › click the order › Additional details, or via Shopify's API) and confirm
note_attributescontains{ "name": "admaxxer_visitor_id", "value": "..." }. - Within a few seconds of the order completing, it appears in the Admaxxer attribution dashboard, joined to the visitor's acquisition source.
- Open the Shopify Match Quality tile on Marketing Acquisition — a healthy connection shows your pixel-captured revenue reconciling against Shopify-reported revenue.
6. Troubleshooting
- Missing-scope banner after connecting
- Your custom app didn't grant every required scope. Open the app in the Shopify Dev Dashboard, enable the listed scope(s) under Configure Admin API access scopes — most often one of the pixel trio (
read_pixels,write_pixels,read_customer_events) — and re-authorize from Integrations › Shopify. - Orders arrive but checkouts/pixel events don't
- The Web Pixel didn't register. This requires
write_pixels+read_customer_eventsat OAuth time. Re-authorize after enabling them, or add a manual Custom Pixel under Shopify Settings › Customer events (see the pixel install guide). - Order appears as unattributed
- The visitor ID wasn't stamped onto the order. Confirm the pixel loaded before checkout (consent banners, theme caching, or a not-yet-installed Custom Pixel are the usual causes). Inspect the order's
note_attributes— it should containadmaxxer_visitor_id. - Can't create the custom app inside the store admin
- Expected — since January 1, 2026 custom apps are created in the Shopify Dev Dashboard (dev.shopify.com), not the store admin. You need the store owner account, or a staff member with the App development › Develop permission.
Frequently asked
- Do I need a Shopify custom app to connect Shopify?
- Yes. Admaxxer connects through a custom app that you create in the Shopify Dev Dashboard (dev.shopify.com). Since January 1, 2026 custom apps can no longer be created inside the store admin — the store owner, or a staff member with the 'App development → Develop' permission, creates the app in the Dev Dashboard. You enable the Admin API scopes, copy the app's Client ID + Client Secret, paste them into Admaxxer, and complete a one-time OAuth approval. There is no public one-click Admaxxer Shopify app for this path. Full step-by-step: /documentation/shopify-custom-app.
- How many Shopify scopes does Admaxxer need, and why?
- Admaxxer's custom app requests 12 Admin API access scopes: read_customers, read_customer_events, read_discounts, read_fulfillments, read_inventory, read_locations, read_marketing_events, read_orders, read_pixels, read_products, read_reports, write_pixels. 9 are read-only (orders, customers, products, discounts, reports, etc.) and 3 are pixel scopes — read_pixels, write_pixels, and read_customer_events — that let Admaxxer auto-install the Web Pixel App Extension via Shopify's webPixelCreate mutation so checkout_completed events flow in. Without the pixel trio, the OAuth still succeeds but storefront checkouts never reach Admaxxer (a +100% Shopify revenue gap). The canonical, always-current list is enforced from a single source of truth so the doc can never drift from what the install actually requests.
- How does the storefront pixel get installed?
- The pixel installs separately from the data connection, via Shopify's Customer Events (Custom Pixel) — not a theme.liquid script tag (that path was retired) and not native admin webhooks. When you complete OAuth with the write_pixels + read_customer_events scopes granted, Admaxxer registers a Web Pixel App Extension automatically (webPixelCreate). For Online Store 2.0 themes there is also a manual Custom Pixel fallback. The pixel writes the visitor ID to a first-party cookie and localStorage on every page view, and stamps it onto the order so revenue joins back to the original acquisition source. See /documentation/install/shopify.
- How are visitors stitched to Shopify orders?
- Shopify orders don't have a generic metadata field — every order has a note_attributes array of { name, value } entries. The Admaxxer pixel appends a note attribute named admaxxer_visitor_id with the visitor ID at checkout, and Shopify carries it through to the resulting Order. Admaxxer reads the entry whose name === 'admaxxer_visitor_id' from note_attributes and joins it to the visitor's session graph. This works for every checkout flow Shopify supports, including Shop Pay and accelerated checkout buttons.
- What about cart abandonment and discount-code attribution?
- The visitor ID is written to a first-party cookie and localStorage on every page view, so even cart-abandonment recovery orders (created later from a saved cart) carry the original visitor ID. Discount codes don't affect attribution — the visitor ID is the link, not the code. The read_discounts scope additionally powers promo-code and discount-driven revenue breakdowns inside Admaxxer.
Next steps
- All revenue connectors — back to the hub.
- Shopify custom app walkthrough — full step-by-step for the Dev Dashboard + OAuth.
- Shopify pixel install guide — Customer Events (Custom Pixel) setup.
- Stripe, Paddle, Lemon Squeezy, Polar, Dodo, WooCommerce.
- Analytics docs — how analytics pipelines consume revenue events.