v1.22.0ADDEDMay 27, 2026
Conversion Tracking + Site-Wide Custom Scripts
Custom Script Injection
- Site-wide scripts (
/admin/settings→ Custom Scripts) — head + body injection on every Liquid storefront page. Intended for GTM, GA4, chat widgets. Stored inanalytics_config.custom_head_script/custom_body_script. - Order Confirmation scripts (
/admin/preferences→ Checkout Scripts) — head + body injection scoped exclusively to the Thank You page. Intended for Google Ads conversion events, Facebook Pixel Purchase, TikTok purchase events. Fires only when(!error && order)— the error branch never triggers, preventing inflated conversion counts. Stored inanalytics_config.order_status_head_script/order_status_body_script. - Disjoint JSONB keys — site-wide and order-status scripts now live in separate keys. The previous collision (last save wins) is fixed.
- CSP nonce auto-injection —
injectScriptNonce()in the Liquid render service patches every<script>tag with the per-request nonce; merchants do not add nonces manually. - Multi-script support — paste a Google Ads snippet with two
<script>tags; both execute viadocument.createElement('script'). - Platform governance — super-admin can disable custom scripts globally via
PATCH /platform/analytics. Merchant editor shows a clear hint when disabled.
Admin Polish
- Dashboard default analytics window flipped from 7d to 30d for a more stable baseline on low-traffic shops.
/admin/settingsremoved duplicate Payment + Domain blocks — those surfaces live on their dedicated pages now./admin/marketstax_inclusive checkbox renamed "Tax Inclusive (VAT-style)" with inline two-branch numeric explainer.