Shopify 跟踪已损坏,total_price总是返回'null'



我在客户的Shopify商店中遇到了问题,我们的PPC转换跟踪突然停止工作,我们不太确定原因。我们在结账>附加脚本部分中安装了 Google Ads,如下所示:

<!-- Global site tag (gtag.js) - Google Ads: ***** -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-*****"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-*****');
</script>
<!-- Event snippet for Purchase conversion page -->
<script>
gtag('event', 'conversion', {
'send_to': 'AW-*****/*****',
'value': {{ total_price | money_without_currency }},
'currency': 'USD',
'transaction_id': '{{order.order_number}}'
});
</script>
{% endif %}

这与我们在其他几家商店中使用的安装相同,并且效果很好。它曾经在这个店面上工作,直到上周,大约是我们切换到另一个销售渠道的时间(后来被关闭了(。

在故障排除过程中,我检查了源代码,注意到一堆 shopify 变量现在返回 null。具体来说,total_price解析为 null 并导致以下 Javascript 错误:

Uncaught SyntaxError: Unexpected token ','

这就是我检查页面源代码时的样子。

<!-- Global site tag (gtag.js) - Google Ads: ***** -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-*****"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-*****');
</script>
<!-- Event snippet for Purchase conversion page -->
<script>
gtag('event', 'conversion', {
'send_to': 'AW-*****/*****',
'value': ,
'currency': 'USD',
'transaction_id': '3947'
});
</script>

所以'total_price | money_without_currency'显然没有返回正确的值,这破坏了javascript。如果我将钱作为货币输出,它看起来像这样:

// This...
<script>console.log({{ total_price | json }});</script>
// Resolves to this
<script>console.log(null);</script>

我从未见过这样的问题,其中 shopify 全局变量只是不返回任何内容。

我注意到这家商店和我们的其他工作商店之间还有一个奇怪的区别。在标签之间,我注意到Shopify.Checkout.token也返回null

<script type="text/javascript">
Shopify = window.Shopify || {};
if (window.opener) {
window.opener.postMessage(JSON.stringify({"current_checkout_page": null}), "*");
}
Shopify.Checkout = Shopify.Checkout || {};
Shopify.Checkout.apiHost = "*****.myshopify.com";
Shopify.Checkout.assetsPath = "//cdn.shopify.com/s";
Shopify.Checkout.i18n = {"orders":{"order_updates":{"title":"Order updates"}}};
Shopify.Checkout.isOrderStatusPage = true;
Shopify.Checkout.token = null;
</script>

我不确定Shopify.Checkout.token应该是什么,但我只是注意到它是为我们的其他工作店面定义的。我已经尝试了我能想到的一切,所以任何和所有的帮助都将不胜感激。

谢谢!

我不知道在过去某个时候您是否可以访问全局范围内的total_price变量,但截至 2020 年 6 月,官方 Shopify 文档中关于"添加其他脚本"的部分说:

"其他脚本"框用于将代码插入到订单状态页的模板中。您可以添加以下任何内容:

  • 液体代码 -您可以访问checkoutshop液体对象。要了解有关其属性的更多信息,请参阅结帐对象和商店对象

checkout对象具有total_price属性。我怀疑如果您在结帐命名空间中引用该属性,您将获得所需的内容。

<script>
gtag(
'event',
'conversion', {
'send_to': 'AW-*****/*****',
'value': {{ checkout.total_price | money_without_currency | json }},
'currency': 'USD',
'transaction_id': '{{order.order_number}}'
}
);
</script>

顺便说一下,您可能会注意到我进一步将checkout.total_price | money_without_currency管道传输到json过滤器,该过滤器将根据其底层类型自动转义和自动引用值。当你在javascript中做liquid-in-script时非常方便。

我发现total_price没有为我返回任何东西,checkout.total_price也没有。但是,我确实发现order.total_price有效,返回任何内容也是如此,例如:order_number

最新更新