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
Hey Community! As we jump into 2025, we want to give a big shout-out to all of you wh...
By JasonH Jan 7, 2025Hey Community! As the holiday season unfolds, we want to extend heartfelt thanks to a...
By JasonH Dec 6, 2024Dropshipping, a high-growth, $226 billion-dollar industry, remains a highly dynamic bus...
By JasonH Nov 27, 2024