Discuss and resolve questions on Liquid, JavaScript, themes, sales channels, and site speed enhancements.
Hello! I've set up this customer pixel sending ecommerce events with datalayer to GTM
window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer', 'GTM-MYGTM'); analytics.subscribe("checkout_completed", (event) => { dataLayer.push({ ecommerce: null }); const items = event.data?.checkout?.lineItems?.map((item) => { return { item_id: item.variant.product.id, item_name: item.variant.product.title, price: item.variant.price.amount, quantity: item.quantity } }); dataLayer.push({ event: "purchase", url: event.context.document.location.href, ecommerce: { currency: event.data?.checkout?.currencyCode, value: event.data?.checkout?.subtotalPrice?.amount, transaction_id: event.data?.checkout?.order?.id, coupon: event.data?.checkout?.discountAllocations, shipping: event.data?.checkout?.shippingLine?.price?.amount, tax: event.data?.checkout?.totalTax?.amount, items: items } }); }); analytics.subscribe("payment_info_submitted", (event) => { dataLayer.push({ ecommerce: null }); const items = event.data?.checkout?.lineItems?.map((item) => { return { item_id: item.variant.product.id, item_name: item.variant.product.title, price: item.variant.price.amount, quantity: item.quantity } }); dataLayer.push({ event: "add_payment_info", url: event.context.document.location.href, ecommerce: { currency: event.data?.checkout?.currencyCode, value: event.data?.checkout?.subtotalPrice?.amount, items: items } }); }); analytics.subscribe("checkout_shipping_info_submitted", (event) => { dataLayer.push({ ecommerce: null }); const items = event.data?.checkout?.lineItems?.map((item) => { return { item_id: item.variant.product.id, item_name: item.variant.product.title, price: item.variant.price.amount, quantity: item.quantity } }); dataLayer.push({ event: "add_shipping_info", url: event.context.document.location.href, ecommerce: { currency: event.data?.checkout?.currencyCode, value: event.data?.checkout?.subtotalPrice?.amount, items: items } }); }); analytics.subscribe("checkout_started", (event) => { dataLayer.push({ ecommerce: null }); const items = event.data?.checkout?.lineItems?.map((item) => { return { item_id: item.variant.product.id, item_name: item.variant.product.title, price: item.variant.price.amount, quantity: item.quantity } }); dataLayer.push({ event: "begin_checkout", url: event.context.document.location.href, ecommerce: { currency: event.data?.checkout?.currencyCode, value: event.data?.checkout?.subtotalPrice?.amount, items: items } }); }); analytics.subscribe("cart_viewed", (event) => { dataLayer.push({ ecommerce: null }); const items = event.data?.cart?.lines?.map((item) => { return { item_id: item.merchandise.product.id, item_name: item.merchandise.product.title, price: item.merchandise.price.amount, quantity: item.quantity } }); dataLayer.push({ event: "view_cart", url: event.context.document.location.href, ecommerce: { currency: event.data?.cart?.cost?.totalAmount?.currencyCode, value: event.data?.cart?.cost?.totalAmount?.amount, items: items } }); }); analytics.subscribe("product_added_to_cart", (event) => { dataLayer.push({ ecommerce: null }); dataLayer.push({ event: "add_to_cart", url: event.context.document.location.href, ecommerce: { currency: event.data?.cartLine?.cost?.totalAmount?.currencyCode, value: event.data?.cartLine?.cost?.totalAmount?.amount, items: [ { item_id: event.data?.cartLine?.merchandise?.product?.id, item_name: event.data?.cartLine?.merchandise?.product?.title, price: event.data?.cartLine?.merchandise?.price?.amount, quantity: event.data?.cartLine?.quantity } ] } }); }); analytics.subscribe("product_viewed", (event) => { dataLayer.push({ ecommerce: null }); dataLayer.push({ event: "view_item", url: event.context.document.location.href, ecommerce: { currency: event.data?.productVariant?.price?.currencyCode, value: event.data?.productVariant?.price?.amount, items: [ { item_id: event.data?.productVariant?.product?.id, item_name: event.data?.productVariant?.product?.title, price: event.data?.productVariant?.price?.amount, quantity: 1 } ] } }); }); analytics.subscribe("page_viewed", (event) => { window.dataLayer.push({ event: "shopify_page_view", url: event.context.document.location.href }); });
Everything is working fine with the tags built in GTM. They are working properly using the events sent by the pixel.
There is an issue I'm facing regarding additional "no-ecom" tags. I'm talking about tracking email clicks.
I set up a GADS/GA4 event tag to track email clicks using "Just links" as trigger with click url --> contains --> "mailto", but it's not working. Events have not been registered (I'm using the deprecated version of Google Tag assistant and GA4 live report).
Am i missing something? Should i be able to track additional conversions apart from ecommerce events?
How can I handle this situation?
Thank you very much in advance and Merry Chs
June brought summer energy to our community. Members jumped in with solutions, clicked ...
By JasonH Jun 5, 2025Learn how to build powerful custom workflows in Shopify Flow with expert guidance from ...
By Jacqui May 7, 2025Did You Know? May is named after Maia, the Roman goddess of growth and flourishing! ...
By JasonH May 2, 2025