我正在尝试创建一个结帐事件以发送到 Pinterest 广告。我正在使用自定义 JavaScript 来转换我的数据,特别是我需要对商品总数和购物车总价值进行求和,因为这些没有通过数据层传递。
我已经能够为 Pinterest 所需的大部分参数(产品 ID 除外)编写自定义 JavaScript。系统未在阵列中拾取它。我尝试查看是否可以获得产品名称或产品 ID 来传递。我最初尝试了 id: items[i].id 并且系统没有拾取它,所以我后来尝试了product_id: items[i].id,但仍然没有运气。
function() {
var items = {{dlv - olo - all products}};
var numItems = 0;
var totalValue = 0;
var transformedItems = [];
for (var i = 0; i < items.length; i++) {
transformedItems.push({
product_id: items[i].id,
product_name: items[i].name,
product_category: 'product',
quantity: items[i].quantity,
price: items[i].price
});
numItems += items[i].quantity;
totalValue += items[i].price
}
return {
value: totalValue,
currency: 'USD',
line_items: transformedItems,
order_quantity: numItems,
order_id: {{dlv - olo - transaction ID}}
};
}
这是我用来拉入 cjs 的 GTM 自定义 HTML 标签:
<!-- Pinterest Pixel Code -->
<script>
pintrk('track', 'checkout', {{cjs - Pinterest Data For Purchases}})
</script>
<!-- End Pinterest Pixel Code -->
这里是数据层推送:
{
event: "begin_checkout",
ecommerce: {
items: [
{
item_id: "42353541",
item_name: "Avocado Hummus",
currency: "USD",
price: 8,
quantity: 1
},
{
item_id: "41371457",
item_name: "Avocado Caesar Salad",
currency: "USD",
price: 10.95,
quantity: 1
}
]
}
}
在您的自定义 JavaScript 中,您正在转换来自数据层的数据,但您面临着未获取产品 ID 的问题。我注意到在数据层推送中,您使用的是 item_id 而不是 id。让我们对齐数据层推送和自定义 JavaScript 中的键以确保一致性。
这是更新版本:
function() {
var items = {{dlv - olo - all products}};
var numItems = 0;
var totalValue = 0;
var transformedItems = [];
for (var i = 0; i < items.length; i++) {
transformedItems.push({
product_id: items[i].item_id, // Use 'item_id' from the data layer
product_name: items[i].item_name, // Use 'item_name' from the data layer
product_category: 'product',
quantity: items[i].quantity,
price: items[i].price
});
numItems += items[i].quantity;
totalValue += items[i].price;
}
return {
value: totalValue,
currency: 'USD',
line_items: transformedItems,
order_quantity: numItems,
order_id: {{dlv - olo - transaction ID}}
};
}
确保使用与您的数据层结构匹配的键(item_id 和 item_name)。此外,您可能需要检查数据层中的 id 是否为 item_id,因为它可能会根据您的实现而有所不同。
请记住,键名称的一致性对于数据完整性至关重要。根据数据层推送中的实际键相应地调整 JavaScript 中的键名称。