The single most common script in Shopify's Additional Scripts box is the Google Ads conversion tag. After August 26, 2026 it stops firing on non-Plus stores. Here is how to rebuild it as a Custom Pixel without losing your conversion label or order values.
The legacy snippet
Your Additional Scripts version looks something like this:
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-XXXXXXXXX"></script>
<script>
gtag('event', 'conversion', {
'send_to': 'AW-XXXXXXXXX/LabelHere',
'value': {{ checkout.total_price | money_without_currency }},
'currency': '{{ checkout.currency }}',
'transaction_id': '{{ checkout.order_number }}'
});
</script>
What must change
- Liquid is gone.
{{ checkout.total_price }}becomesevent.data.checkout.totalPrice.amount. - The trigger changes. Instead of "this code runs on the thank-you page", you subscribe to the
checkout_completedevent. - Keep the conversion label. The part after the slash in
send_toidentifies the specific conversion action. Lose it and Google Ads records nothing.
The Custom Pixel version
const script = document.createElement("script");
script.src = "https://www.googletagmanager.com/gtag/js?id=AW-XXXXXXXXX";
script.async = true;
document.head.appendChild(script);
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag("js", new Date());
gtag("config", "AW-XXXXXXXXX");
analytics.subscribe("checkout_completed", (event) => {
const checkout = event.data.checkout;
gtag("event", "conversion", {
send_to: "AW-XXXXXXXXX/LabelHere",
value: checkout.totalPrice?.amount ?? 0,
currency: checkout.totalPrice?.currencyCode ?? "USD",
transaction_id: String(checkout.order?.id ?? checkout.token),
});
});
Paste it in Settings → Customer events → Add custom pixel, connect, place a test order, and watch the conversion appear in Google Ads (allow up to a few hours of reporting lag).
Common mistakes
- Running both versions at once. Until you delete the legacy script, purchases may double-count. Migrate, verify, then delete.
- Dropping the transaction ID. Without it, Google can't deduplicate conversions across retries and refreshes.
- Assuming it works forever. Pixels break silently — a consent banner update or app conflict can stop events with no error. Monitoring catches that; PixelWard does both the conversion and the monitoring.