发生这种情况的原因有多种。
发生这种情况的一个原因是购买时没有将货币推入数据层。
在英国和美国,我们会写出价值一千三十二 [英镑|美元],四十九 [cents|pence],如下所示:-
1,032.49
但是,在欧洲,您可以使用以下格式编写相同的值:-
1.032,49
要解决此问题,您只需在 dataLayer 对象中指定货币代码,或者将其设置为将增强型电子商务数据发送到 Google Analytics 的标记中的字段。
Google Analytics(分析)会自动选择这一点,并正确格式化 Analytics 中显示的值。
一旦您推送正确的货币价值;您可能还需要调整 Google Analytics 中的货币显示为设置。
可以通过导航到以下位置找到此设置:
Google Analytics console >>
Admin (cog, bottom left) >>
View Settings (far right) >>
"Currency Display As"
选项 1:-
window.dataLayer.push({
event: 'gtm.dom',
ecommerce: {
currencyCode: 'EUR', // NOTE: We have now told google to use EUR formatting
purchase: {
actionField: {
id: '5000000038',
affiliation: 'redacted',
order_id: '5000000038',
subtotal: '1,321.49',
shipping: '0.00',
tax: '277.51',
total: '1,599.00',
revenue: '1,321.49',
discount: '0.00',
coupon:''
},
products: [{}] // ...
选项 2:-
您可以将货币代码设置为标签中的字段。
在 GTM 中导航到“要设置的字段”(在“更多设置”下拉菜单下),然后添加一个新字段:
字段名称:currencyCode
价值:欧元
如果您的网站提供了使用多种货币支付的功能,您还可以编写一些逻辑来从数据层、浏览器 cookie 或其他变量中检测用户的货币以动态设置货币。
Google's Developer reference 中有很多有用的示例,它们应该有助于进一步了解正在发生的事情。
另一个原因可能在于您的转换功能。
我发现您的转换不会影响原始字符串,而是返回未转换的原始值 (return {{DLV - ecommerce.purchase.actionField.revenue}};)
要解决该特定问题,请按如下方式调整功能:
function () {
var eRev = {{ecommerce.purchase.actionField.revenue}};
var dRev = {{DLV}};
eRev = Number(eRev.replace(/,/g,''));
ecommerce_purchase_revenue = dRev - eRev;
return ecommerce_purchase_revenue;
// You might need to convert it back to a string
// if this is the case, use the following return instead:
// return ecommerce_purchase_revenue.toString();
}
重要的是我们使用正则表达式在函数中进行替换,以允许包含多个逗号分隔的情况。 (例如 1,234,234.12)。
祝你好运解决问题!