// Step 1. Add and initialize your third-party JavaScript pixel (make sure to exclude HTML) // Replace with you GA4 Tag const TAG_ID = 'G-XXXXXXXXXX'; const script = document.createElement('script'); script.setAttribute('src', `https://www.googletagmanager.com/gtag/js?id=${TAG_ID}`); script.setAttribute('async', ''); document.head.appendChild(script); window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', TAG_ID); gtag('config', TAG_ID, {'send_page_view': false}); // Disable default page view tracking, doesn't send decent page view data to GA4, reference: https://help.shopify.com/en/manual/promoting-marketing/pixels/custom-pixels/gtm-tutorial // Step 2. Subscribe to customer events using the analytics.subscribe() API const sendGAEvent = (eventName, eventData) => { gtag("event", eventName, eventData); }; const createItemData = (product) => { return { item_id: product.sku, item_name: product.product.title, item_variant: product.title, currency: product.price.currencyCode, item_brand: product.product.vendor, price: product.price.amount, }; }; const createLineItemsData = (lineItems) => { return lineItems.map((item) => { return { item_id: item.variant.sku, item_name: item.title, item_variant: item?.variant.title, currency: item.variant.price.currencyCode, item_brand: item.variant.product.vendor, price: item.variant.price.amount, quantity: item.quantity, }; }); }; // Send page view data with custom event instead, reference: https://developers.google.com/tag-platform/gtagjs/reference/events#page_view analytics.subscribe("page_viewed", event => { gtag("event", "page_view", { page_location: event.context.window.location.href, page_title: event.context.document.title, language: event.context.navigator.language, page_encoding: event.context.document.characterSet, user_agent: event.context.navigator.userAgent, client_id: event.clientId }); }); analytics.subscribe("search_submitted", (event) => { const { query } = event.data.searchResult; sendGAEvent("search", { search_term: query }); sendGAEvent("view_search_results", { search_term: query, items: [] }); }); analytics.subscribe("collection_viewed", (event) => { const { id, title } = event.data.collection; sendGAEvent("view_item_list", { item_list_id: id, item_list_name: title, items: [] }); }); analytics.subscribe("product_added_to_cart", (event) => { const { cartLine } = event.data; const totalPrice = cartLine.merchandise.price.amount * cartLine.quantity; const itemData = createItemData(cartLine.merchandise.product); sendGAEvent("add_to_cart", { currency: cartLine.merchandise.price.currencyCode, value: totalPrice.toFixed(2), items: [Object.assign(itemData, { quantity: cartLine.quantity })], }); }); analytics.subscribe("product_viewed", (event) => { const { productVariant } = event.data; const itemData = createItemData(productVariant); sendGAEvent("view_item", { currency: productVariant.price.currencyCode, value: productVariant.price.amount, items: [itemData], }); }); analytics.subscribe("checkout_started", (event) => { const checkoutData = ga4CheckoutEvents(event); sendGAEvent("begin_checkout", checkoutData); }); analytics.subscribe("payment_info_submitted", (event) => { const checkoutData = ga4CheckoutEvents(event); sendGAEvent("add_payment_info", checkoutData); }); analytics.subscribe("checkout_completed", (event) => { const checkoutData = ga4CheckoutEvents(event); const { checkout } = event.data; checkoutData.transaction_id = checkout.order?.id || checkout.token; checkoutData.shipping = checkout.shippingLine?.price.amount || checkout.shipping_line?.price.amount || 0; checkoutData.tax = checkout.totalTax?.amount || 0; sendGAEvent("purchase", checkoutData); }); function ga4CheckoutEvents(event) { const { checkout } = event.data; const lineItems = createLineItemsData(checkout.lineItems); return { currency: checkout.totalPrice.currencyCode, value: checkout.totalPrice.amount, items: lineItems, }; }
如果“增强转化
”功能无法正常工作。你可以通过自定义事件添加出站链接跟踪
,也可以在GA4配置
里关闭出站链接(Outbound clicks)
。另外建议禁用下图中的所有这些功能,这样网页加载会变快,主要这些你也用不上。