Skip to main content
Setting Up Affiliate Tracking on Shopify: A Practical Guide

Affiliate Growth · ~11 min read

Setting Up Affiliate Tracking on Shopify: A Practical Guide

Barron Zuo

Barron Zuo

CEO, xark.io

August 29, 2026

Last updated 2026-08-29

A technical walkthrough of Impact, Awin, and CJ's Shopify integrations, UTM/postback configuration, and the Checkout Extensibility migration that quietly broke a lot of older affiliate tracking setups.

Quick Answer

Do I need a developer to set up affiliate tracking on Shopify?

For the standard case — installing Impact, Awin, or CJ's official Shopify app and entering your program/advertiser ID — no. These are built as no-code installs. A developer becomes necessary if you're implementing tracking manually through Google Tag Manager, customizing MasterTag placement outside the app's default behavior, or building custom pixels to capture events the official app doesn't cover, such as certain subscription or gifting flows.

Related from xark.io

# Setting Up Affiliate Tracking on Shopify: A Practical Guide

Affiliate tracking on Shopify breaks in predictable places — a checkout script that stopped firing, a UTM parameter that never reaches the network's postback, a coupon-only publisher who converts but never gets credited. Most of these failures trace back to one root cause: Shopify rebuilt its checkout, and a large share of affiliate integrations were never rebuilt to match. This guide walks through the three major network integrations (Impact, Awin, CJ Affiliate), the UTM and postback layer that ties them to attribution, and the Shopify-specific pitfalls that quietly cap a program's reported performance.

Why Shopify Affiliate Tracking Breaks More Than Other Platforms

Shopify's checkout is not a static page you can drop a script tag into anymore. Since August 2024, Shopify has been retiring `checkout.liquid` and additional/order-status scripts in stages: the Information, Shipping, and Payment steps stopped supporting legacy checkout.liquid customizations on August 13, 2024, and the Thank You and Order Status pages — along with additional scripts and script tags on those pages — were sunset on August 28, 2025 ([Codilar](https://www.codilar.com/blog/shopify-checkout-extensibility-august-26-deadline/), [Analyzify](https://analyzify.com/hub/shopify-checkout-extensibility-conversion)). Any affiliate tracking pixel that was hand-placed into checkout via the old "additional scripts" box in Settings → Checkout is now non-functional, full stop.

The replacement is Shopify Customer Events — a pub/sub event bus (`page_viewed`, `checkout_started`, `payment_info_submitted`, `checkout_completed`, etc.) that fires from every page of the store, including checkout, and that pixels subscribe to from inside a sandboxed environment ([Shopify Help Center](https://help.shopify.com/en/manual/promoting-marketing/pixels), [Shopify dev docs](https://shopify.dev/docs/api/web-pixels-api/emitting-data)). Pixels reach that bus in one of two ways: app pixels, installed automatically by a marketing/tracking app such as the official network apps, or custom pixels, added manually in the Customer Events section of the admin ([Shopify Help Center](https://help.shopify.com/en/manual/promoting-marketing/pixels/overview)). If a third-party affiliate or analytics tool was reading data off the old Order Status Page and Shopify doesn't natively support it in the sandbox, the vendor has to explicitly support sandboxed data transmission — otherwise it silently stops receiving events ([Analyzify](https://analyzify.com/hub/shopify-checkout-extensibility-conversion)).

This is the single most common root cause of "affiliate sales stopped showing up" tickets on Shopify stores that migrated checkout without re-auditing tracking.

The Three Network Apps: What They Actually Do

Impact.com

Impact's Shopify integration is a no-code plugin — Impact completes several of the integration steps on the backend, and the app itself installs and connects in a few clicks, with the overall program configuration typically finishable in a single sitting ([Impact Integrations Hub](https://integrations.impact.com/integration-guides/for-brands/plugin-integrations/e-commerce/integrate-with-shopify)). Configuration requires your Program ID, Event Type ID, and account credentials entered into the app's settings tabs. Out of the box it tracks online sales and first-time subscription purchases; recurring subscription revenue requires a secondary integration with Recharge or Bold Subscriptions ([Impact docs](https://integrations.impact.com/impact-brand/docs/shopify)). Impact has also integrated creator/influencer management directly into its performance platform, letting brands manage affiliate programs and influencer campaigns from the same dashboard with consistent, sales-based tracking across both partner types ([Impact.com press release](https://impact.com/press-releases/impact-com-announces-influencer-creator-management-platform/)).

Awin

Awin's Shopify app installs from the Shopify App Store under "Awin – Affiliate Marketing," and you enter your Awin advertiser ID during setup ([Awin developer docs](https://help.awin.com/developers/docs/shopify)). Awin's tracking runs on its MasterTag — a script that, in manual implementations, gets placed in `theme.liquid` just before the closing `</head>` tag and handles click tracking, cookie placement, and consent management site-wide ([HulkApps](https://www.hulkapps.com/blogs/topics/how-to-integrate-awin-tracking-within-shopify)). The official app version handles this placement for you and triggers tracking tags on the order confirmation flow through a hybrid tracking approach. One Shopify-specific default worth flagging for finance and affiliate teams together: Awin's plugin excludes shipping costs from the commissionable total by default but includes applicable taxes, and that base can be adjusted manually inside the Awin backend if your program terms differ ([HulkApps](https://www.hulkapps.com/blogs/topics/how-to-integrate-awin-tracking-within-shopify)).

CJ Affiliate

CJ's official "CJ Network Integration" app targets fast setup with minimal developer work and supports concurrent tracking — running more than one tracking method at once to improve attribution resilience if one method drops a conversion — plus automated order corrections to keep commission data accurate without manual reconciliation ([CJ developer docs / Shopify App Store listing](https://apps.shopify.com/cj-network-integration)). It also supports optional new-vs-returning customer tracking, which feeds CJ's Customer Analysis Insights and situational commissioning tools. You need an existing CJ advertiser account before installing, since the account itself is created outside the Shopify app. Merchants running more complex, tag-management-driven setups can alternatively implement CJ tracking via Google Tag Manager by importing CJ's GTM container and configuring it against Shopify's Customer Events, which is the pattern larger technical teams tend to prefer over the packaged app when they already run GTM for everything else ([Elevar](https://www.getelevar.com/guides/integrations/shopify-commission-junction-conversion-tracking/)).

Comparison: Impact vs. Awin vs. CJ on Shopify

| | Impact.com | Awin | CJ Affiliate |

|---|---|---|---|

| Setup model | No-code app; Impact completes backend steps | App install + MasterTag in `theme.liquid` (or automated via app) | Official app, or manual GTM container |

| Key IDs needed | Program ID, Event Type ID | Advertiser ID | CJ advertiser account (created outside Shopify) |

| Subscription tracking | Native for first purchase; recurring needs Recharge/Bold integration | Handled via order confirmation trigger | Depends on implementation method |

| Commission base default | Program-configured in dashboard | Excludes shipping, includes tax by default (adjustable) | Configured in CJ advertiser settings |

| Redundancy features | Single tracking pipeline | Hybrid tracking on confirmation page | Concurrent tracking + automated order corrections |

| Influencer/creator overlap | Unified in same platform | Separate | Separate |

| Typical setup time | Fast, no-code install; full config in one sitting | Similar app-based install | Fast per CJ's own listing; longer if using GTM |

Sources: [Impact Integrations Hub](https://integrations.impact.com/integration-guides/for-brands/plugin-integrations/e-commerce/integrate-with-shopify), [Awin developer docs](https://help.awin.com/developers/docs/shopify), [HulkApps Awin guide](https://www.hulkapps.com/blogs/topics/how-to-integrate-awin-tracking-within-shopify), [CJ Network Integration listing](https://apps.shopify.com/cj-network-integration), [Elevar CJ/GTM guide](https://www.getelevar.com/guides/integrations/shopify-commission-junction-conversion-tracking/).

UTM Parameters and Postback Configuration

Network tracking pixels handle the server-to-server or client-side conversion event, but UTM parameters are what let you cross-reference network-reported conversions against Shopify's own analytics, Google Analytics, and any BI layer sitting on top. In practice, affiliate links should carry a consistent UTM schema even though the network's own click ID — a network-specific query parameter appended by each platform's link-generation tool (Impact's is commonly `irclickid`, Awin's `awc`, CJ's `cjevent`) — is doing the actual attribution work:

  • `utm_source` — the network or publisher identifier, kept consistent across every link a given partner uses
  • `utm_medium=affiliate` — held constant so affiliate traffic is filterable as one channel, distinct from paid or organic
  • `utm_campaign` — the specific promotion, content piece, or seasonal push
  • Network click ID (`irclickid`, `awc`, `cjevent`) — appended automatically by the network's link-generation tool, not something you construct by hand

The common mistake is treating UTMs as the tracking mechanism itself. They aren't — they're a labeling layer. The actual conversion crediting happens through the network's cookie/click-ID matching or, increasingly, through server-side postbacks fired from Shopify's order webhook (or from the app's own backend integration) directly to the network's conversion API, bypassing the browser entirely. Server-side postbacks are what keep tracking alive against ad blockers, Safari's Intelligent Tracking Prevention, and iOS in-app browsers that strip or block third-party cookies — all of which degrade client-side-only pixel tracking regardless of which network app you're running.

Common Shopify-Specific Tracking Pitfalls

1. Checkout Extensibility migration gaps. As covered above, any tracking that depended on the legacy Order Status Page "additional scripts" field stopped working entirely once Shopify sunset it on August 28, 2025 ([Analyzify](https://analyzify.com/hub/shopify-checkout-extensibility-conversion)). If your affiliate tracking predates that migration and nobody re-verified it after, assume it is either broken or running in a degraded, unsupported mode.

2. Shopify Plus vs. non-Plus checkout customization limits. Standard Shopify plans lock down `checkout.liquid`-equivalent customization to branding only — logo, colors, limited text — with no ability to add fields or custom logic. Shopify Plus unlocks full Checkout Extensibility: custom UI extensions, Shopify Functions, and a Branding API that supports significantly deeper checkout modification. That gap affects how much control you have over where and how a tracking pixel or app-based extension can be injected relative to the payment step — a real constraint worth checking against your specific plan before assuming a network's "standard" implementation will behave identically on a non-Plus store.

3. Shipping and tax handling in commissionable totals. As the Awin example above shows, networks differ in whether they commission on subtotal, subtotal-plus-tax, or full order value including shipping. If this isn't explicitly reconciled against your program terms, publishers and finance will eventually disagree on payout math — and by the time it surfaces, it's usually a backlog of disputed transactions rather than a single easy fix.

4. Subscription and recurring-order blind spots. Native Shopify checkout tracking generally covers the first transaction. Recharge- or Bold-powered recurring billing runs through a separate flow that most affiliate apps do not track by default — Impact explicitly calls this out as requiring its own integration layer. If subscriptions are a meaningful share of revenue, recurring-order tracking needs to be verified as its own line item, not assumed to be covered by the base app install.

5. App pixel vs. custom pixel conflicts. Running a network's official app pixel alongside a manually added custom pixel for the same network (a leftover from a pre-migration setup, for example) can produce duplicate conversion events, inflating reported affiliate GMV and payouts. Audit the Customer Events section in Shopify admin for redundant pixels whenever a network app is newly installed.

6. Consent/cookie banners blocking MasterTag-style scripts. Awin's MasterTag explicitly handles consent management, but if your cookie consent platform is configured to block third-party scripts before consent is granted, the network's tracking script may not fire for visitors who haven't yet interacted with the banner — undercounting clicks from regions with strict consent requirements.

7. Coupon-code-only publisher attribution. Publishers who drive sales primarily through coupon codes rather than tracked links (a common pattern with deal and cashback sites) may convert without a valid click ID reaching the network, especially if the shopper closes the affiliate tab and returns later via direct navigation or a bookmark. This is a known limitation of click-based attribution generally, not a Shopify-specific bug, but Shopify's checkout redesign makes it worth re-testing coupon-code capture specifically after any theme or checkout change.

Testing and QA Before Scaling Publisher Outreach

None of the network apps above should be trusted on install alone. Before adding a single publisher to a live program, run a structured test pass:

  • Order Status / Thank You page verification. Open Shopify's Customer Events dashboard (Settings → Customer events) after installing a network app and confirm the app's pixel shows as "Connected" and is actually firing `checkout_completed` events — an app can be listed as installed while its pixel silently fails to register.
  • Incognito or private-window click-throughs. Test tracking links in a fresh browser session with no existing cookies, since a normal browser session may already carry stale first-party data that masks a broken click-ID handoff.
  • A real, refundable transaction. Coupon codes and UTM parameters alone won't surface postback failures — only a completed order confirms the full chain from click to network-reported conversion. Refund it after confirming it appears correctly in the network dashboard.
  • Cross-device and cross-browser spot checks. Safari's Intelligent Tracking Prevention and mobile in-app browsers (Instagram, TikTok) handle cookies differently than desktop Chrome; a program that tracks perfectly on one doesn't guarantee the same on the other.
  • Duplicate-pixel audit. Re-check the Customer Events section specifically for leftover custom pixels from a pre-migration setup running alongside the new app pixel — this is the single most common source of inflated, duplicated conversion counts after a network app install.

Treat this test pass as a release gate, not a one-time step — repeat it after any theme change, checkout customization, or network app update, since Shopify's sandbox behavior and each vendor's compatibility with it both continue to evolve independently of each other.

A Practical Setup Sequence

  1. Confirm your Shopify plan and checkout version. Note whether you're on Shopify Plus (more checkout customization) or standard Shopify, and confirm Checkout Extensibility migration is complete.
  2. Install the official network app(s) — Impact, Awin, and/or CJ Network Integration — rather than hand-rolling script tags, since the packaged apps are built against the current Customer Events sandbox.
  3. Enter program/advertiser IDs and event type IDs exactly as issued by the network; a mismatched ID is the single most common reason a correctly installed app reports zero conversions.
  4. Standardize your UTM schema across every affiliate link-generation tool the network provides, and confirm the network's own click ID is appending automatically.
  5. Test a real transaction end-to-end — click a tracking link in an incognito window, complete checkout with a real (refundable) order, and confirm the conversion appears in the network dashboard before scaling any publisher outreach against the program.
  6. Re-audit after every major Shopify or theme update. Checkout Extensibility is not a one-time migration; Shopify continues to change what the sandbox supports, and third-party tracking vendors update their sandbox compatibility on their own release schedule.
  7. Reconcile commission base rules (shipping, tax, subscriptions) against your program terms in writing before publishers start earning against them.

Frequently Asked Questions

Why did my affiliate tracking suddenly stop working after a Shopify update?

The most common cause is Shopify's Checkout Extensibility migration. Shopify sunset legacy checkout.liquid customizations for the Information, Shipping, and Payment steps in August 2024, and for the Thank You and Order Status pages (plus additional scripts on those pages) in August 2025. Any tracking pixel added the old way through checkout scripts no longer fires. Tracking now needs to run through Shopify Customer Events, either via an app pixel or a properly configured custom pixel.

Does UTM tracking replace the need for a network's tracking pixel or postback?

No. UTM parameters are a labeling convention that helps you cross-reference traffic sources in Shopify analytics or GA — they do not by themselves attribute a sale to a publisher. Attribution happens through the network's own click ID (commonly irclickid for Impact, awc for Awin, cjevent for CJ) and the tracking pixel or server-side postback that matches that click ID to a completed order.

How does Shopify handle affiliate tracking for subscription or recurring orders?

Native checkout tracking generally only captures the first, one-time transaction. Recurring subscription revenue processed through apps like Recharge or Bold typically requires a separate integration layer — Impact, for example, explicitly documents Recharge and Bold as add-on integrations rather than something covered automatically by the base Shopify app.

Why do Impact, Awin, and CJ calculate commissions differently on the same order?

Each network's Shopify app applies its own default rules for what counts toward the commissionable total. Awin, for instance, excludes shipping but includes tax by default, with that base adjustable in the Awin backend. These defaults aren't standardized across networks, so it's worth confirming the commission base explicitly in your program setup rather than assuming all three networks compute it the same way.

Affiliate GrowthGrowthAutomation

Get affiliate insights in your inbox

Terms in this article

— Stay Updated —

Get weekly affiliate marketing insights from Xark.

Further Reading

Ask an Expert

Have a question about this topic?

Our affiliate program specialists answer within 1 business day.

Related Reading