Two dates are about to matter to anyone whose Shopify store measures conversions. On 1 October 2026, Shopify stops accepting the creation or update of script tags. On 1 March 2027, it stops injecting them into storefronts at all. Most of the coverage focuses on the March date, because that is when things visibly break. I think October is the one worth your attention, for a reason that is easy to miss.
What actually changes, precisely
Script tags are a long-standing mechanism for injecting JavaScript into a Shopify storefront. Plenty of tracking got installed that way: analytics snippets, conversion pixels, and a great deal of what third-party apps add to a store on your behalf.
Shopify has been winding this down for a while, and the endgame has two steps:
- 1 October 2026. The GraphQL scriptTagCreate and scriptTagUpdate mutations return a user error, and the REST ScriptTag resource stops accepting POST and PUT. In plain terms: nothing new can be created, and nothing existing can be changed. Script tags already in place keep running.
- 1 March 2027. Shopify stops injecting script tags into storefronts entirely. Whatever was still running stops running.
One detail closes off the usual escape route: this applies across API versions, including older ones. Pinning an app to an earlier API version does not defer either date. If you have heard someone suggest that as a workaround, it is not one.
Why October is the date that should worry you
Here is the part that gets skipped. On 1 October nothing breaks. Your store looks exactly the same on 2 October as it did on 30 September. Your tracking keeps firing, your dashboards keep populating, and nobody has any reason to investigate anything.
What has actually happened is that a piece of your measurement infrastructure became frozen. Still running, and no longer changeable.
Think about what that means for the five months between October and March. Suppose in December you need to fix a bug in a tracking script. Or change a pixel ID after an agency handover. Or update an event name because you restructured your conversions. Or an app you depend on needs to push a fix to its own script tag.
None of that is possible. The only route is migration, and you will be attempting it in the middle of peak season with a live problem, rather than calmly in September.
There is a second-order version of this that is worse, because it happens without you doing anything at all. Apps maintain their script tags by updating them. After October they cannot. So an app that would normally have quietly patched something on your store can no longer do so, and its installed script slowly drifts out of step with whatever it is meant to talk to. You will experience that as a tracking problem with no apparent cause, months after the change that caused it.
This is the same failure shape covered in the hidden cost of broken tracking: nothing errors, nothing alerts, and the gap between the change and the discovery is where the money goes.
How to find out whether this affects you
Many stores are unaffected, and quite a few that think they are unaffected are not. Three checks, from quickest to most thorough.
- Ask the API what is installed.The most direct answer comes from querying your store's script tags. The response tells you what exists and which app owns each one. If the list is empty, you are clear on this specific issue, though still worth reading the next section on checkout.
- Inventory your apps and how each one injects.For every app that touches tracking, analytics, personalisation, pop-ups, reviews, upsells or A/B testing, find out whether it uses a script tag, a web pixel, or a theme app extension. App developers have had a long runway here and most have migrated, but "most" is not "all", and abandoned apps are exactly the ones that will not migrate.
- Look at what your storefront actually loads. Open your site, open the browser developer tools, and look at the scripts on the page. This catches things the app list will not, including code added by a developer years ago and never documented.
Pay particular attention to anything installed by someone who no longer works with you. Agency handovers and departed contractors are the single most common source of tracking nobody can account for, and this deadline is going to surface a lot of it.
What to move to
Shopify's guidance splits by what the script is actually doing, and the distinction matters because the replacements are not interchangeable.
If it collects analytics or conversion data, the replacement is a web pixel. This is the purpose-built path for measurement, it runs in a sandboxed environment, and it subscribes to Shopify's customer events rather than reaching into the page. For most tracking use cases this is where you are going.
If it needs to render something or alter the page, the replacement is an app embed block, shipped in a theme app extension. Pop-ups, widgets, visible UI.
The sandboxing is the part that catches teams out. A web pixel does not have the same free access to the page that a script tag had, which is deliberate and good for store performance and security. It also means a lift-and-shift of your old code may not work. Anything that read the DOM directly, waited for a specific element, or relied on globals set by the theme will need rewriting rather than relocating. Budget for that rather than discovering it on the day.
The checkout question, which is separate but related
Worth separating two things that often get conflated, because a store can be exposed to both.
Script tag deprecation is about how code gets injected into your storefront. Checkout extensibility, the earlier migration away from checkout.liquid and additional scripts on the thank-you and order status pages, is about the checkout flow specifically. They are different changes with different deadlines, but they rhyme, and a store that dealt with one carelessly may well have papered over the other.
The reason it matters for measurement is that the thank-you page is where the Purchase event usually fires. If your purchase tracking was ever patched in through one of these legacy routes, it is worth verifying directly rather than assuming. The symptoms of a broken purchase event are covered in how Shopify's checkout change breaks tracking, and they are the same symptoms you will get here.
A realistic plan for the next week
If you are reading this close to the October date, you cannot complete a migration in a few days and you do not need to. What you need is to not get caught frozen.
- Inventory now, before the first deadline. Produce the list of script tags on your store and who owns each one. This takes minutes and it is the only thing that genuinely must happen before the window closes, because after October you can no longer create a script tag even temporarily.
- Sort the list into three piles. Things that are measurement, things that render something, and things nobody can identify. The third pile is the interesting one and it is usually bigger than people expect.
- Check with the apps that own them. Most vendors have a migration path and many have already moved you without saying so. The ones that do not respond are your real risk, and that is worth knowing in September rather than February.
- Record what your tracking looks like today. Write down what your platform reports against what your backend records for a normal week. This is your baseline, and after any migration it is the only way to prove the new setup measures what the old one did. Without it you are comparing a new number to a memory.
- Then migrate deliberately, before peak. For most stores the sensible window is now through to the end of January. Doing it in February, against the March cutoff, with a live store, is the version of this that goes badly.
How to verify a migration actually worked
Migrations get marked done when the new thing is installed. That is the wrong completion criterion, and it is how stores end up discovering in January that December was measured wrong.
Four checks, and none of them take long:
- Put a real order through.Not a test event, an actual transaction you can find in your admin afterwards. Then confirm it appears in the ad platform's reporting with the right value and currency. Test tooling verifies that a pixel can fire; a real order verifies that it does.
- Check for doubles as carefully as you check for zeroes. The riskiest migration outcome is not the new setup failing, it is the new setup working while the old one is still running. Two live paths reporting the same purchase without a shared event ID gives you double-counted conversions, a halved cost per acquisition, and a dashboard that looks like your best month ever. The mechanics are in fixing duplicate events.
- Compare the week after to the week before. This is what the baseline was for. You are not looking for identical numbers, you are looking for the relationship between platform-reported conversions and backend orders to be roughly where it was. A shift there is the migration, not the market.
- Watch match quality, not just event counts. A web pixel that fires reliably but passes less customer information than the old script did will look perfectly healthy by volume while quietly attributing worse. Event count and match quality answer different questions, as covered in improving event match quality.
Do all four in the week after you migrate, while you still remember what you changed. Diagnosing this in February, against a deadline, with no record of what normal looked like, is a materially harder job than doing it now.
The pattern underneath
Platform deprecations are a recurring category of tracking failure and they behave differently from the everyday kind. A developer renaming an event or a token expiring is random and can happen any day. A deprecation is scheduled, announced years in advance, and still catches people out, because the announcement arrives when the deadline is abstract and the deadline arrives when the announcement is forgotten.
The thing that makes this particular one worth writing about is the gap between the two dates. October is a silent change with no symptom. March is a loud one. Between them sits five months in which your measurement is running and unmaintainable, and the only way to know you are in that position is to have checked.
Which is the general lesson, really. Tracking almost never tells you when it has stopped being trustworthy. The stores that come through a migration like this cleanly are not the ones with the best setup. They are the ones who knew what their numbers looked like before they changed anything, and noticed quickly when that relationship moved.
Stop finding out about broken tracking from your client.
Taglert monitors your pixels and conversion tracking 24/7 and alerts you the moment something breaks. 7-day free trial, no credit card.
Start your free trial