Executive summary
- What: Shopify is retiring script tags. From October 1, 2026 you cannot create or update them, and from March 1, 2027 they stop being injected into storefronts.
- Why: script tags load JavaScript merchants cannot see or control, while the replacements are visible in the theme editor or sandboxed as pixels.
- Who: any merchant running apps that still load storefront JavaScript this way, which in practice means older vendor apps and bespoke internal apps.
What changed
A script tag lets an app load JavaScript onto a storefront without touching theme code. Two dates matter. On October 1, 2026 the scriptTagCreate and scriptTagUpdate mutations start returning a user error, and the REST ScriptTag resource rejects POST and PUT. Pinning an older API version defers nothing, since the deprecation applies to every version. Existing tags keep running until March 1, 2027, when Shopify stops injecting them.
The read paths survive. The scriptTags query and scriptTagDelete mutation keep working, which is what audit and cleanup need. Tags scoped to the order status page were retired earlier.
Why it matters
The failure mode is quiet. Nothing errors on March 1, 2027. A script simply stops loading. If it was a review widget, the widget vanishes. If it was a currency switcher, subscription upsell, or tag manager loader, revenue-affecting behaviour vanishes with no alert. Because this JavaScript never appears in theme code, a routine theme audit will not surface it.
For a Plus merchant carrying 20 to 40 apps accumulated over years, the question is not whether to migrate but which apps are exposed and who owns the fix. Vendor apps should ship app embed blocks on their own schedule and your job is to verify they have. Anything built by an agency or internal team is yours, a reason to inventory your custom Shopify apps and what each injects.
The replacement is better on the merits. An app embed block ships inside a theme app extension and appears in the theme editor, so an admin can see the app running and switch it off. That visibility carries one catch: embed blocks are enabled per theme, so a theme swap can deactivate one silently.
Role-specific impact
- Marketers: analytics and conversion scripts that arrived via script tag should move to a web pixel, which needs no admin action. Confirm attribution survives the migration rather than finding a reporting gap later.
- Developers: replace each script tag with an app embed block in a theme app extension, or a web pixel where the script only collects behavioural data. Audit with scriptTags, clean up with scriptTagDelete.
- Store admins: after migration, app embed blocks must be active on the published theme. Add that check to your theme launch checklist.
Use-case example
Real-world scenario
A footwear brand runs 28 apps on Shopify Plus. An audit via scriptTags returns 6 active tags: 4 from vendor apps, 2 from a loyalty app a former agency built three years ago. The vendors confirm app embed support, so that work is a theme editor toggle plus a QA pass. The custom app needs a theme app extension built and deployed, roughly 3 to 5 developer days. The brand schedules it for mid 2026 rather than early 2027, because after October 1 the legacy tag cannot be updated if a bug appears mid transition.
Implementation checklist
- Run the scriptTags query and export every result with its display_scope and src.
- Attribute each tag to an app, and mark it vendor-maintained or bespoke.
- Ask every vendor in writing for their app embed migration date. Treat silence as risk.
- For bespoke tags, choose per script: an app embed block for functional code, a web pixel for analytics only.
- Build and deploy the theme app extension, then enable the embed block on a theme preview first.
- Verify parity in preview, then delete the old tag with scriptTagDelete so behaviour does not run twice.
- Add app embed verification to your theme deployment checklist so a future swap does not drop it.
- Finish bespoke migrations before October 1, 2026, while the legacy tag can still be updated if you need to roll back.
FAQ
Q: Can we pin an older API version to buy time?
A: No. The create and update block applies to all API versions, including older ones. Pinning defers nothing, and the March 1, 2027 storefront cutoff is independent of API version.
Q: How do we tell whether a script tag still matters before migrating it?
A: Compare the src URL against your installed app list, then load a storefront page with the network tab filtered to that domain and watch what it does. If you cannot attribute it to a live app, it is likely orphaned from an uninstall and can go after a staging check.
Resources
Storefront script tag deprecation
Need guidance? Talk to Makro.