⚽ taboola和newsbreak针对YY像素
PageView--页面查看,所有页面生效。
ViewContent-商品查看,商品页面生效。
AddToCart-加入购物车,点击商品页面卡支付,加购按钮生效,
InitiateCheckout--开始结账,购物车页面点击支付生效,
Purchase--付款完成生效,
checkout_started,,initiatedCheckout,page_viewed,product_added_to_cart,product_viewed
GTM事件
初始化和页面查看
(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-WB6Z5S3T");
window.dataLayer = window.dataLayer || [];
var ls = localStorage.getItem("_mtg");
// 页面加载时推送 page_view
window.dataLayer.push({
event: "page_view",
});
ViewItem事件
window.dataLayer.push({
event: "view_item",
mtg_token: ls, // 假设 ls 已通过之前代码获取
shopify: {
data: {
checkout: {
subtotalPrice: {
amount: meta.product.variants[0].price / 100, // 假设 payload.value 已定义
},
},
},
},
});
加购事件
document.addEventListener("DOMContentLoaded", function () {
document
.querySelector(".product-form__submit")
.addEventListener("click", function () {
// 构造 shopify e 对象
const variant = meta.product.variants[0];
const e = {
data: {
checkout: {
subtotalPrice: {
amount: (variant.price / 100).toString() // 转换为字符串,与 payload.value 格式一致
}
}
}
};
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: "add_to_cart",
mtg_token: ls,
shopify: e
});
});
});
开始结账和结账完成
// 跟踪结账开始事件
function trackCartCheckout(cartData) {
console.log("自动解析并触发结账跟踪");
try {
// 验证 cartData
if (!cartData || !cartData.items || !Array.isArray(cartData.items)) {
throw new Error("无效的 cart.js 数据");
}
// 获取 ls
var ls = localStorage.getItem('_mtg') || '{}';
// 构造 shopify e 对象
const e = {
data: {
checkout: {
subtotalPrice: {
amount: ((cartData.total_price || 0) / 100).toString() // 转换为字符串
}
}
}
};
// 推送至 window.dataLayer
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: "begin_checkout",
mtg_token: ls,
shopify: e
});
console.log("dataLayer begin_checkout 事件已发送", {
event: "begin_checkout",
mtg_token: ls,
shopify: e
});
} catch (error) {
console.error("解析或发送 begin_checkout 数据失败:", error.message);
}
}
// 跟踪购买完成事件
function trackPurchase(cartData) {
console.log("自动解析并触发购买跟踪");
try {
// 验证 cartData
if (!cartData || !cartData.items || !Array.isArray(cartData.items)) {
throw new Error("无效的 cart.js 数据");
}
// 获取 ls
var ls = localStorage.getItem('_mtg') || '{}';
// 构造 shopify e 对象
const e = {
data: {
checkout: {
subtotalPrice: {
amount: ((cartData.total_price || 0) / 100).toString() // 转换为字符串
}
}
}
};
// 推送至 window.dataLayer
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: "purchase",
mtg_token: ls,
shopify: e
});
console.log("dataLayer purchase 事件已发送", {
event: "purchase",
mtg_token: ls,
shopify: e
});
} catch (error) {
console.error("解析或发送 purchase 数据失败:", error.message);
}
}
// 页面加载时自动触发
document.addEventListener("DOMContentLoaded", function () {
fetch("/cart.js")
.then(response => {
if (!response.ok) {
throw new Error("无法获取 cart.js 数据");
}
return response.json();
})
.then(data => {
trackCartCheckout(data); // 触发 begin_checkout
trackPurchase(data); // 触发 purchase
})
.catch(error => console.error("获取 cart.js 数据失败:", error));
});
yy的gtm事件
开始结账,商品详情页底部
<script>
(function () {
// 初始化 Google Tag Manager
(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-WB6Z5S3T");
// 初始化 dataLayer 和 mtg_token
window.dataLayer = window.dataLayer || [];
var ls = localStorage.getItem("_mtg") || "{}";
window.dataLayer.push({
event: "page_view",
});
function trackCartCheckout() {
console.log("trackCartCheckout 函数被调用");
try {
// 获取 mtg_token
console.log("获取的 mtg_token", { ls });
// 尝试获取 XPath 对应的元素值
const xpath = "/html/body/main/div[2]/div/div[2]/div[2]/div/div[3]/div[1]/div/div[1]";
console.log("尝试查找 XPath", { xpath });
let element = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
// 如果 XPath 失败,尝试 CSS 选择器
if (!element) {
console.warn("XPath 元素未找到,尝试 CSS 选择器");
element = document.querySelector("main > div:nth-child(2) > div > div:nth-child(2) > div:nth-child(2) > div > div:nth-child(3) > div:nth-child(1) > div > div:nth-child(1)");
}
// 提取并格式化金额,失败时使用默认值 "0"
let amountDigits = "0"; // 默认金额
if (element) {
const rawAmount = element.textContent.trim();
console.log("提取的原始金额", { rawAmount });
const numericAmount = rawAmount.replace(/[^0-9]/g, '') || "0"; // 只保留数字
amountDigits = (parseInt(numericAmount, 10) / 100).toString(); // 除以 100 并转为字符串
console.log("格式化后的金额 (除以 100)", { amountDigits });
} else {
console.warn("未找到金额元素,使用默认金额", { amount: amountDigits });
}
// 构造 shopify e 对象
const e = {
data: {
checkout: {
subtotalPrice: {
amount: amountDigits
}
}
}
};
// 推送至 window.dataLayer
window.dataLayer.push({
event: "checkout_started",
mtg_token: ls,
shopify: e
});
console.log("dataLayer begin_checkout 事件已发送", {
event: "checkout_started",
mtg_token: ls,
shopify: e
});
} catch (error) {
console.error("trackCartCheckout 执行过程中发生错误,但仍推送事件:", error.message, error.stack);
// 即使发生错误,也推送默认事件
const fallbackE = {
data: {
checkout: {
subtotalPrice: {
amount: "0"
}
}
}
};
window.dataLayer.push({
event: "begin_checkout",
mtg_token: ls,
shopify: fallbackE
});
console.log("推送默认 begin_checkout 事件", {
event: "begin_checkout",
mtg_token: ls,
shopify: fallbackE
});
}
}
// 绑定点击事件到具有指定类的按钮
function init() {
console.log("初始化 trackCartCheckout,绑定 BUY IT NOW 按钮事件");
const buyNowButtons = document.querySelectorAll(".main_btn.product-now.control-product_detail-buy");
if (buyNowButtons.length > 0) {
buyNowButtons.forEach(button => {
button.addEventListener("click", function () {
console.log("BUY IT NOW 按钮被点击", { buttonId: button.id, buttonClasses: button.className });
trackCartCheckout();
});
});
} else {
console.error("未找到 BUY IT NOW 按钮,class: main_btn product-now control-product_detail-buy");
}
}
// 确保脚本在页面加载时绑定事件
if (document.readyState === "complete" || document.readyState === "interactive") {
console.log("DOM 已加载,立即触发 init");
init();
} else {
document.addEventListener("DOMContentLoaded", function () {
console.log("DOM 已加载,通过事件触发 init");
init();
});
}
})();
</script>
初始化,所有页面顶部
<script>
(function (){
var url = new URL(window.location.href);
var campaign = url.searchParams.get('utm_mtg_campaign_uuid');
var clickid = url.searchParams.get('utm_mtg_click_id');
if (campaign && clickid) {
localStorage.setItem('_mtg', JSON.stringify({"d":{"_default":{"u":campaign,"c":clickid,"t":parseInt(Date.now()/1000)}}}));
console.log('mtg_write_ls',localStorage.getItem('_mtg'))
}
})()
</script>
taboola和newsbreak的YY事件
初始化,所有页面顶部,
<!-- Google Tag Manager -->
<script>
(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-NWJMXWKF');
</script>
<!-- End Google Tag Manager -->
购买事件
页面底部,购买完成页
<script>
const order = window.C_SETTINGS.order;
const product = order.products[0];
const data = {
transaction_id: order.order_number,
value: parseFloat(order.total_price),
currency: 'USD',
content_type: 'product',
items: [
{
item_id: product.variant_id,
item_name: product.variant_title,
quantity: product.quantity || 1,
price: parseFloat(product.price)
}
]
};
dataLayer.push({
event: 'make_purchase',
...data
});
dataLayer.push({
event: 'complete_payment',
...data
});
</script>
