The real symptom
- A script pasted into an order confirmation never runs.
- A button, countdown, dynamic price, or tracking widget works on the storefront but not in email.
- Liquid renders, but browser APIs and DOM events do nothing.
- The merchant wants customers to interact inside the email.
Likely causes
- Most email clients block JavaScript for security.
- Notification Liquid runs server-side before the email is delivered.
- Email HTML support is much more limited than theme HTML.
- Interactive behavior belongs on a storefront, account, order-status, or app page.
Fix path
- Replace client-side logic with Liquid conditions where possible.
- Move interactive behavior to a linked page.
- Keep notification markup simple and table-friendly when needed.
- Preview and send test notifications before relying on custom HTML.
- Use Shopify Flow or an app for post-order workflows that require logic after send time.
Simple checks
- Test in Gmail, Apple Mail, Outlook, and mobile clients.
- Use Liquid to render the value, not JavaScript to calculate it later.
- Avoid external scripts, form submissions, and unsupported CSS.
Useful code or DevTools check
{% if order.total_price > 10000 %}
<p>Thanks for your large order. We will review it shortly.</p>
{% endif %}
Do not do this
Do not paste storefront widgets or analytics scripts into notification templates and expect them to run in inboxes.

