跟实例一没有什么大区别,仅仅记录一下。
const script = document.createElement('script'); script.setAttribute('src', 'https://www.googletagmanager.com/gtag/js?id=XXXXXXXXXX'); script.setAttribute('async', ''); document.head.appendChild(script); window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'XXXXXXXXXX'); analytics.subscribe("search_submitted", (event) => { gtag("event", "search", {search_term: event.data.searchResult.query}); gtag("event", "view_search_results", { search_term: event.data.searchResult.query, items: [] }) }); analytics.subscribe("collection_viewed", (event) => { gtag("event", "view_item_list", { item_list_id: event.data.collection.id, item_list_name: event.data.collection.title, items: [] }); }); analytics.subscribe("product_added_to_cart", (event) => { let totalPrice = event.data.cartLine.merchandise.price.amount * event.data.cartLine.quantity; gtag("event", "add_to_cart", { currency: event.data.cartLine.merchandise.price.currencyCode, value: totalPrice.toFixed(2), items: [ { item_name: event.data.cartLine.merchandise.product.title, item_id: event.data.cartLine.merchandise.sku, item_variant: event.data.cartLine.merchandise.title, currency: event.data.cartLine.merchandise.price.currencyCode, item_brand: event.data.cartLine.merchandise.product.vendor, price: event.data.cartLine.merchandise.price.amount, quantity: event.data.cartLine.quantity } ] }); }); function ga4CheckoutEvents(event) { let checkout = event.data.checkout; let lineItems = []; for (const checkoutLineItem of event.data.checkout.lineItems){ lineItems.push({ item_id: checkoutLineItem.variant.sku, item_name: checkoutLineItem.title, item_variant: checkoutLineItem?.variant.title, currency: checkoutLineItem.variant.price.currencyCode, item_brand: checkoutLineItem.variant.product.vendor, price: checkoutLineItem.variant.price.amount, quantity: checkoutLineItem.quantity }); } payload = { currency: checkout.totalPrice.currencyCode, value: checkout.totalPrice.amount, items: lineItems }; return payload; } analytics.subscribe("product_viewed", (event) => { gtag("event", "view_item", { currency: event.data.productVariant.price.currencyCode, value: event.data.productVariant.price.amount, items: [ { item_id: event.data.productVariant.sku, item_name: event.data.productVariant.product.title, item_variant: event.data.productVariant.title, currency: event.data.productVariant.price.currencyCode, item_brand: event.data.productVariant.product.vendor, price: event.data.productVariant.price.amount, } ] }); }); analytics.subscribe("checkout_started", (event) => { gtag("event", "begin_checkout", ga4CheckoutEvents(event)); }); analytics.subscribe("payment_info_submitted", (event) => { gtag("event", "add_payment_info", ga4CheckoutEvents(event)); }); analytics.subscribe("checkout_completed", (event) => { let payload = ga4CheckoutEvents(event); let checkout = event.data.checkout; payload.transaction_id = checkout.order?.id || checkout.token; payload.shipping = checkout.shippingLine?.price.amount || checkout.shipping_line?.price.amount || 0; payload.tax = checkout.totalTax?.amount || 0; gtag("event", "purchase", payload); });