Playbook · Shopify ScriptTag / legacy app script not firing

Shopify ScriptTag / legacy app script not firing on Online Store 2.0 after Checkout Extensibility.

Written for a Shopify DTC owner whose ScriptTag (Admin API) or legacy app script stopped firing on Online Store 2.0 after Checkout Extensibility — missing injection in content_for_header, CSP / Customer Privacy blocks, or tags that only lived on retired checkout.liquid. DIY-first: prove the tag still exists, prove the src loads on Current theme, then isolate header / consent / checkout migration. Distinct from customer events pixels broken, webhooks not delivering, analytics not matching GA4, theme app embed blocking, and Scripts not applying after Plus. Soft-link customer events when the real product is a Web Pixel / custom pixel, not a ScriptTag. No earnings claims, no invented case studies.

Nico at Latch AI Ops · Sep 10, 2026 · ~12 minute read

Buy the 72-hour install — $997Customer events pixelsScripts after PlusMerchant FAQ

01

ScriptTag / legacy app script not firing — not customer events pixels, webhooks, GA4 analytics, theme app embed, Scripts after Plus.

Several products can look like “our tracking / chat / loyalty script vanished after we upgraded checkout.” They do not share a settings panel. This page is only when an Admin API ScriptTag or a legacy app that still injects via ScriptTag / asset script should load on the Online Store and does not. Sandboxed customer events / custom pixels (Web Pixels API) is customer-events-pixels-broken. App HTTP callbacks failing is webhooks-not-delivering. Admin reports disagreeing with GA4 is analytics-not-matching-ga4. Theme App embeds breaking layout or editor save is app-embed-blocking-theme. Plus Script Editor line- item / shipping scripts after Functions migration is scripts-not-applying-after-plus. Soft-link app-embed-not-loading when the modern product is a theme app extension that never mounts — not a ScriptTag.

02

Prove the ScriptTag exists and whether the src injects on Current theme.

In the Partner / custom app that owns the tag, or via ScriptTag Admin API, list tags and note src, display_scope (online_store, order_status, or all), and created/updated timestamps. On the Current theme live URL (not only a draft Preview iframe), View Source / Elements and search for that hostname or a known query string. Open Network → JS: does the request return 200, 404, CORS, or never appear? A tag that still exists in Admin but never injects means theme header / CSP / consent. A tag that is gone after app reinstall means the app failed to recreate ScriptTags on install — reauth or reinstall the app. Duplicate tags with stale src hosts often leave one firing and one 404ing — delete the dead ones.

03

theme.liquid content_for_header, CSP, Customer Privacy consent blocking injection.

Shopify injects ScriptTags through {{ content_for_header }} in layout/theme.liquid. If a theme edit or agency removed that Liquid tag, or wrapped the head so scripts never land, every ScriptTag goes dark while App embeds may still work. Restore content_for_header exactly once in <head>. Console CSP errors (script-src / connect-src) and Customer Privacy / CMP banners that refuse marketing/analytics often block third- party ScriptTag hosts even when the tag is present — grant consent and retest, or ask the app for a consent-aware loader. Cookie banners that freeze checkout are a different product: cookie-banner-blocking-checkout.

04

Checkout Extensibility / checkout.liquid retirement vs Online Store ScriptTags.

Checkout Extensibility retired checkout.liquid additional scripts on thank-you / order status for upgraded stores. ScriptTags with order_status or checkout-only placement will not fire the way they did under the old checkout. That is expected — migrate purchase / thank- you logic to Web Pixels / customer events, checkout UI extensions, or thank-you additional scripts where your plan still allows them. Online Store storefront ScriptTags (display_scope=online_store) should still inject via theme header; if those died at the same moment you upgraded checkout, look for a coincidental theme publish or app reauth, not “Checkout Extensibility deleted all ScriptTags.” Soft-link checkout-extensibility-upgrade-broken when thank-you / order-status extensions themselves broke, and customer-events-pixels-broken when you already moved to custom pixels and those are the ones silent.

05

App reauth, ScriptTag display_scope, duplicate tags, src 404.

After custom-app scope changes or staff uninstall/reinstall cycles, ScriptTags can vanish until the app recreates them — open the app and run its “reinstall scripts / reconnect store” action, or reauth scopes (see also custom-app-scopes-missing). Confirm display_scope matches where you test (home/PDP = online_store; thank-you = order_status / pixels). Stale CDN hosts and renamed app domains return 404 while the ScriptTag row still exists — update src or delete and let the app recreate. Two apps injecting the same tracker can race; disable the older one. Theme app extensions that replaced ScriptTags for that vendor should be toggled under App embeds — if the embed never appears, use theme-app-extensions-not-appearing.

06

You tested customer events pixels, webhooks, GA4, theme app embed, or Scripts after Plus instead.

Custom / Web Pixels not firing in Customer events is customer-events-pixels-broken. App webhook delivery failures are webhooks-not-delivering. Admin analytics vs GA4 mismatch is analytics-not-matching-ga4. Theme app embed blocking editor/layout is app-embed-blocking-theme. Plus Script Editor line-item scripts after Functions is scripts-not-applying-after-plus. Do not rebuild GA4 or webhook endpoints until you have proven whether the missing asset is still a ScriptTag on Online Store 2.0 versus a checkout pixel that Checkout Extensibility retired.

07

When to stay DIY vs pay $997.

Stay DIY if you can restore content_for_header, reauth the app, and confirm the ScriptTag src 200s in under an hour. Pay for the Latch AI Ops install when you want lead capture, ops alerts, and a checkout-ready workflow on the live store — including ScriptTag / pixel / storefront exception alerts landing in a channel you already check. Clock starts when collaborator access is in. 72 hours. One live store. Written by Nico. No earnings claims. No ranking-lift or conversion-lift number.

Buy the 72-hour install — $997Customer events pixelsScripts after Plus

Also on Latch

Latch AI Ops · Nico · $997 one-time · 72h after collaborator access · No earnings claims.