Starting October 1, 2026, you can no longer create or update them; starting March 1, 2027, Shopify stops injecting script tags into the storefront. Pinning an API version won't buy you time. You need to move to a theme app extension App embed block or a Web pixel.
scriptTagCreate / scriptTagUpdate returns a user error. In the REST Admin API, the ScriptTag resource rejects POST and PUT. Existing script tags still run at this point.
Shopify stops injecting script tags into the storefront. If your app loads JavaScript via a script tag, you need to replace it before then.
scriptTagCreateStarts returning a user error. You cannot create new script tags.
scriptTagUpdateStarts returning a user error. You cannot modify existing script tags.
ScriptTag POST / PUTThe REST Admin API resource also rejects creates and updates.
scriptTags queryKeeps working. Useful for auditing the script tags you still have.
scriptTagDelete mutationKeeps working. Lets you delete script tags you no longer need after migrating.
| Who | How this deprecation applies | What to do |
|---|---|---|
display_scope: online_store script tag-creating apps |
In scope for this deprecation | Replace with an App embed block or a Web pixel |
display_scope: order_status script tags |
Already covered by a separate, earlier deprecation | See the earlier "Order status script tags" announcement |
| Apps that don't use script tags | Not affected | — |
The replacement for script tags is the App embed block.Bundle and distribute it as a theme app extension, and app users enable it in the theme editor.
If your script onlycollects analytics and conversion data, use a Web pixel. No action is required from app users.
scriptTags shows what's still out therequery still works after the deprecation, so map out which stores still have which script tags.
For UI or functionality, move to a theme app extension's App embed block; for tracking only, move to a Web pixel.
scriptTagDeleteDelete the existing script tags from stores that have migrated. The delete mutation stays available.
The deprecationapplies to every API version, old ones included. The usual breaking-change assumption — "we pinned a stable version, so we have some breathing room" — doesn't hold this time.
Create / Update will return a user error, but thescriptTags query and scriptTagDelete keep working. The audit and cleanup path is deliberately left intact.
Not just GraphQL's scriptTagCreate / scriptTagUpdate , but also POST / PUT on the REST Admin API's ScriptTag resource are rejected. Legacy apps built on REST are hit on the same date.
Existing script tags keep working until March, but from October onwardCan't deliver script tags to new stores. For apps that keep getting new installs, if the migrated version isn't shipping by October, stores with missing functionality will start appearing.
App embed blocks are distributed via theme app extensions, andapp users must enable them in the theme editor. Web pixels, usable for tracking-only purposes, on the other handrequire no action from app users. Even within the same "migration off script tags,"whether you take on activation-rate risk differs, so sorting scripts by purpose is the first step in a migration plan.
scriptTags Use the query to mechanically list script tags across all installations → display_scope extract the ones whose online_store is set as in scope for this change → label them by purpose (UI or tracking) and assign a migration target.scriptTags The query and scriptTagDelete keep working after deprecation, so you can still build the inventory and deletion batches on or after October 1, 2026. The replacement implementation, however, cannot wait.scriptTags periodically use the query to find stores that still have the old script tags, and re-notify only the stores that haven't migrated.scriptTags query and scriptTagDelete are still available."