Key Takeaways
- Shopify announced on 24 August 2026 that script tags are deprecated. From 1 October 2026 no new script tag can be created or updated; from 1 March 2027 Shopify stops injecting them into storefronts altogether.
- The two replacements Shopify recommends do not behave the same way about consent. Shopify documents that its pixel manager "will only load your pixel if there is visitor permission for all of the settings" the pixel declares as required. It documents no equivalent gate for app embed blocks.
- The Customer Privacy API applies consent decisions to "Shopify-managed surfaces, like pixels, audiences, and checkout" — a list that does not include theme app extensions. Whether an app embed block respects a refusal therefore depends on the app's own code, not on the platform.
- A script tag is removed automatically when the merchant uninstalls the app. A snippet pasted into
theme.liquidis not, which is why the fastest migration is also the one that outlives the vendor relationship. - Your consent banner is an app too. If it was installed as a script tag rather than an app embed, it stops loading on the same date as everything it was supposed to be gating.
Introduction
The migration notices are already arriving in Shopify inboxes, and they read like a tracking problem: move your tags before the date or watch your ad platforms report zeros. That framing is accurate and incomplete. For a store selling into the EU or UK, the mechanism Shopify is switching off is also the mechanism that delivers a large share of the scripts your cookie banner exists to control — and the two sanctioned replacements have measurably different relationships with a visitor's refusal. Get the migration technically right and your consent posture can still end up worse than it started. This piece is informational content, not legal advice.
What Shopify's Script Tag Deprecation Actually Says
Shopify published the entry on 24 August 2026, under the Admin GraphQL API, flagged "Action required": "Script tags are deprecated and will stop running on March 1, 2027." There are two dates, and only the second one is widely understood.
| Date | What happens | What still works |
|---|---|---|
| 1 October 2026 | scriptTagCreate and scriptTagUpdate return a user error; REST POST/PUT requests are rejected | Existing script tags keep running normally |
| 1 March 2027 | Shopify stops injecting script tags into storefronts — "After March 1, 2027, Shopify won't inject those scripts" | Query and delete operations, for auditing |
That five-month gap between the two dates is the part worth planning around. After 1 October your vendors cannot ship a fix through the same channel; they have to have already moved. The scripts you are running on 2 October 2026 are, in practice, the scripts you are running until they are migrated or deleted.
The deprecation is scoped to script tags whose display_scope is set to online_store. Shopify states that script tags scoped to order_status follow a separate, earlier deprecation path — which matters, because that other path is the one most of this year's coverage is actually about.
Which Shopify "Script" Deprecation Is This?
Three different Shopify deprecations with "script" in the name are running concurrently, and most migration guides conflate at least two of them. This one is the ScriptTag API at online_store scope: the storefront-wide mechanism apps use to inject JavaScript, distinct from both Shopify Scripts and Additional Scripts.
| Deprecation | What it is | Key date |
|---|---|---|
| Shopify Scripts | The checkout Script Editor, Plus only | Execution ended 30 June 2026 |
| Additional Scripts and script tags on Thank You / Order Status | Page-scoped, display_scope: order_status | 28 August 2025 (Plus), 26 August 2026 (non-Plus) |
ScriptTag API, display_scope: online_store | Storefront-wide app-injected JavaScript — this article | No new tags 1 Oct 2026; injection stops 1 Mar 2027 |
If you are a non-Plus store, the 26 August 2026 date is the one already on your calendar, and we have written separately about what the Thank You and Order Status rebuild does to your consent settings. The announcement covered here is the larger, later one: it applies to every store, on every page of the storefront.
A script tag, in Shopify's own description, "adds JavaScript to a store's storefront without any changes to the theme's code", loading that JavaScript from a remote server on each page load. It is how a great many apps have put code on your pages for a decade.
Why Is a Tracking Deadline Also a Consent Deadline?
Because the scripts being displaced are disproportionately the ones that read and write to a visitor's device, and the destinations they are moving to do not police that behaviour equally. Shopify guarantees consent gating for web pixels. It documents no such guarantee for app embed blocks, and none at all for theme code.
The legal test does not move with the code. The EDPB's Guidelines 2/2023 confirm that Article 5(3) of the ePrivacy Directive gates "the storing of information, or the gaining of access to information already stored, in the terminal equipment of a subscriber or user", and that the provision "does not exclusively apply to cookies, but also to 'similar technologies'". The analysis attaches to what the script does, not to where it was loaded from. Move a tracker from a script tag to an app embed block and Article 5(3) applies exactly as before — the only thing that changes is whether anything is checking.
What Shopify Documents About Web Pixels
Web pixels are gated by construction, and Shopify says so in one sentence: "Shopify's pixel manager will only load your pixel if there is visitor permission for all of the settings that your pixels declares [sic] as required."
An app pixel declares what it needs in a [customer_privacy] block in its shopify.extension.toml, across four properties: analytics, marketing, preferences and sale_of_data. Shopify's platform documentation adds that web pixel app extensions "honor the consent signals chosen by the customer", that in regions requiring consent the extension's callbacks "are executed only after consent is given", and that previously registered events are then replayed so nothing is lost. Shopify's Help Center names the markets: "In markets configured to require consent (usually the European Economic Area (EEA) and the United Kingdom), web pixels run only when visitors have provided the permissions required in the pixel configuration."
Developers have confirmed the gate from the inside, by filing it as a bug. In a July 2024 thread on Shopify's community forum, a pixel refused to run until the consent banner was accepted, with the conclusion that "if cookie consent is rejected then the Web Pixel API won't load at all." Shopify staff separately confirmed in February 2025 that a custom pixel requiring Marketing loads only when marketingAllowed() returns true. That is a gate behaving correctly, reported as a defect — which tells you how rarely it is understood as a feature.
What Shopify Does Not Document About App Embed Blocks
Here the evidence is negative, and we are going to be precise about it rather than fill the gap with a confident claim.
Shopify's Customer Privacy API is described as "a browser-based, JavaScript API that you can use to verify data processing permissions or build a cookie consent banner", and it "is used to apply consent decisions to Shopify-managed surfaces, like pixels, audiences, and checkout." Theme app extensions are not on that list. The theme app extensions documentation itself never mentions consent, privacy, or the Customer Privacy API anywhere on the page. And the API's own methods — analyticsProcessingAllowed(), marketingAllowed(), the visitorConsentCollected event — are things code has to actively call.
Our read, and it is an inference from the documentation rather than a Shopify statement: an app embed block's consent behaviour is a property of the app, not of the platform. A well-built app embed checks the Customer Privacy API before it does anything; a poorly built one runs on page load like the script tag it replaced. Shopify has published nothing that would stop the second kind. So the honest merchant instruction is not "app embeds are unsafe" — it is ask each vendor which surface they migrated to, and whether their code checks consent before it fires.
Two documented behaviours make that question sharper. First, the gate can fail open. Shopify's reference states: "If the Customer Privacy API isn't available, then tracking and data emission can proceed." Second, consent-first is regional and configuration-dependent, not universal: "For regions that are configured to require consent, non-essential purposes are not allowed by default until consent is given. For other regions, the default behavior is to allow all processing purposes." A store that has never configured that region list correctly does not have a gate at all, whichever surface the script sits on. That failure mode is the same one that makes a correctly installed app embed going silent a consent-gating diagnosis rather than a broken integration.
The theme.liquid Shortcut Costs You the Uninstall
The fastest way to keep any dying script alive is to paste it into your theme. It is also the only migration path that permanently changes who is responsible for it.
Shopify documents that a script tag is automatically removed when the merchant uninstalls the associated app. That is a real privacy control, quietly doing work for years: removing the app removed the tracker. A snippet in theme.liquid has no such lifecycle. Uninstall the app, cancel the contract, forget the vendor entirely — the code keeps loading on every page, still writing to your visitors' devices, still yours to account for under Article 5(2). Our position is that hand-pasting into theme code should be the last resort in this migration, not the first, and that any snippet that does go in needs an owner and a review date recorded the same day.
It is not a hypothetical shortcut, either. On a June 2024 Shopify community thread, a merchant asking how to make Google consent default to "Denied" before the banner is touched was told, in the accepted answer, to paste three script blocks straight into theme.liquid. That was advice given in a consent thread, and nobody in it named the trade-off.
Your Consent Banner Might Be a Script Tag
The deprecation applies to every app-injected online_store script tag regardless of what it does. Consent management platforms are apps. If yours was installed years ago through the ScriptTag API rather than as an app embed block, it stops loading on 1 March 2027 along with everything it was gating.
The failure mode is the uncomfortable one. Your trackers migrate — vendors are motivated to keep their tags alive — while the banner that gated them does not. You would be left with a store that collects no consent, shows no notice, and keeps firing marketing scripts, with an Article 7(1) accountability record that stops on a date you did not choose. Explaining that sequence to a regulator afterwards is a considerably worse afternoon than checking it now.
The check itself is quick, and Shopify has deliberately left the door open for it: query and delete operations continue to work after both cut-offs, specifically for auditing.
How to Audit Your Store Before 1 October 2026
- Enumerate every script tag on the store. Use the Admin API's query operations — they keep working past both dates. What you want out of this is a list of source URLs and the app each one belongs to.
- Map each script tag to a vendor and a purpose. Analytics, marketing, personalisation, support widget, consent banner. Any tag you cannot attribute to a live vendor relationship is a deletion candidate today, not a migration candidate in 2027.
- Find your consent platform in that list. If it is there, it is on the clock. Ask the vendor for their app-embed or theme-app-extension install path and a migration date, in writing.
- Ask every remaining vendor one question: which surface are you migrating to? Web pixel, app embed block, or theme code. The answer determines whether Shopify gates the script for you or whether the vendor's own code has to.
- For anything landing on an app embed block, ask the follow-up: does your code check the Customer Privacy API before it fires? A vendor who cannot answer that has told you something useful.
- Confirm your region configuration requires consent for the EEA and UK. Shopify's default behaviour outside configured regions is to allow all processing purposes — the gate is opt-in.
- Test a refusal, on a real page, after every migration. Decline everything, then check what still loads and what still writes to storage. A migration that looks clean in the admin can still be firing.
- Record the before-and-after. Under Article 7(1) the burden of demonstrating consent sits with you, and "we migrated in the autumn" is not a record.
Common Mistakes
Treating this as the 26 August deadline. They are different deprecations with different scopes, and Shopify separates them explicitly. If you cleared your Thank You and Order Status pages this month, you have not touched your online_store script tags.
Assuming a migrated tag is a gated tag. This is the costliest of the set, because it looks like success. The tag fires, the dashboard fills up, conversions report — and none of that tells you whether a visitor who clicked "Reject" is being tracked. Presence in the page says nothing about the state of the gate.
Letting vendors choose the surface silently. Left alone, a vendor optimises for delivery reliability, not for your consent posture. The choice between a web pixel and an app embed block is being made on your behalf right now, in roadmap meetings you are not in.
Migrating into theme.liquid because it takes ten minutes. It does take ten minutes. It also converts a self-cleaning, app-owned script into a permanent piece of your theme that survives the uninstall, the contract, and usually the person who added it.
Waiting until 2027. The 1 October 2026 gate is the operative one. After it, no vendor can create or update a script tag — so the migration you have not started becomes a migration your vendors cannot patch their way out of.
How PrivacyForge Helps
The hard part of this migration is not technical, it is evidential: knowing which scripts run on your storefront, who owns each one, what purpose it serves, and what a visitor's refusal actually stops. That is the same inventory an Article 30 record of processing needs, which is why the audit above is worth doing properly rather than as a one-off migration chore.
PrivacyForge's consent management keeps a durable record of what each visitor was asked and what they chose, so a change of delivery mechanism does not create a gap in your evidence. Its data mapping holds the vendor-by-vendor picture — which third party receives what, on what basis — so "which of our apps inject scripts, and where did each one land?" is a question with an answer rather than a project. And because the compliance scoring tracks these as ongoing controls rather than a checklist you complete once, a tracker that quietly comes back ungated after a migration shows up as a finding instead of a surprise.
Frequently Asked Questions
What is happening to Shopify script tags?
Shopify announced on 24 August 2026 that script tags are deprecated. From 1 October 2026, the scriptTagCreate and scriptTagUpdate mutations return an error and REST POST/PUT requests are rejected, so no new script tag can be created or changed. From 1 March 2027, Shopify stops injecting script tags into storefronts entirely. Query and delete operations continue to work for auditing.
Is this the same as the 26 August 2026 deadline?
No. They are separate deprecations with different scopes. The 26 August 2026 date applies to script tags scoped to order_status on non-Plus stores' Thank You and Order Status pages. This announcement covers script tags scoped to online_store — the storefront-wide ones, on every store. Shopify states that the two scopes follow separate deprecation paths.
Will my cookie banner still work after 1 March 2027?
Only if it is not installed as an online_store script tag. Consent management platforms are apps and are covered by the same deprecation. If yours was installed through the ScriptTag API rather than as an app embed block, it stops loading on that date. Ask your consent vendor which install method your store uses and what their migration path is.
Do app embed blocks respect cookie consent?
Shopify does not document an automatic consent gate for app embed blocks. It documents one for web pixels — the pixel manager loads a pixel only where the visitor has granted every permission the pixel declares — and describes the Customer Privacy API as applying consent decisions to "Shopify-managed surfaces, like pixels, audiences, and checkout". Theme app extensions are not on that list, so the behaviour depends on the app's own code.
Can I just paste the script into my theme instead?
You can, and it is the fastest fix, but it costs you a control you currently have. Shopify removes a script tag automatically when the merchant uninstalls the app; a snippet in theme.liquid survives uninstallation indefinitely. It also makes your store, rather than the app, the party placing the script. Treat theme code as the last resort and record an owner and review date for anything you put there.
Conclusion
Shopify has given the ecosystem eighteen months and two clearly dated gates, which is more warning than platform changes usually come with. The risk is not that the deadline is tight. It is that the migration will be run as a tracking-continuity exercise by people measuring its success in restored conversions, while the property that actually matters to an EU or UK store — whether a refusal still stops anything — is not on anyone's checklist.
So put it on yours, in the order that matters: find your consent platform in the script-tag list first, then ask every remaining vendor which surface they are migrating to and whether their code checks consent before it fires. Do that before 1 October 2026, while your vendors can still change their minds.
Map your storefront's scripts and consent records with PrivacyForge — or start with your proof-of-consent records, which is where a regulator will start.
Sources
- Shopify developer changelog: Script tags are deprecated and will stop running on March 1, 2027 — the 24 August 2026 announcement, both dates, and the
display_scopescoping - Shopify.dev: ScriptTag (legacy resource) — what a script tag is, automatic removal on app uninstall, and the full sunset timeline
- Shopify.dev: Pixel Privacy — the pixel manager's permission gate and the
[customer_privacy]declaration properties - Shopify.dev: About web pixels — consent-signal handling, callback execution after consent, and event replay
- Shopify Help Center: Pixels overview — the EEA/UK region note and when web pixels run in markets configured to require consent
- Shopify.dev: Customer Privacy API — the Shopify-managed surfaces the API applies to, the permission methods, the fail-open behaviour, and regional defaults
- Shopify.dev: Theme app extensions — app embed blocks, and the absence of any consent reference
- Shopify Help Center: Migrate your pixels — "Web pixels always respect your store's privacy settings" and the Customer Privacy API integration guidance
- EDPB Guidelines 2/2023 on the technical scope of Art. 5(3) of the ePrivacy Directive — version 2.0, adopted 7 October 2024; the storage-or-access test and its application beyond cookies
- Shopify Community: Incorrect Customer Privacy API & Web Pixel connection — July 2024, the gate reported as a bug
- Shopify Community: Custom app consent — February 2025, Shopify staff confirming
marketingAllowed()gating - Shopify Community: Cookies and consent settings — June 2024, the accepted answer recommending
theme.liquid