У меня проблема с магазином Shopify клиента, из-за которого наше отслеживание конверсий PP C внезапно перестало работать, и мы не совсем уверены, почему. У нас есть стандартная установка Google Реклама в разделе «Оформление заказа»> «Дополнительные скрипты», которая выглядит следующим образом:
<!-- 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 просто ничего не возвращает.
I заметил еще одно странное отличие этого магазина от других наших действующих магазинов. Между тегами я заметил, что 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, но я просто заметил, что он определен для нашего другие рабочие витрины. Я перепробовал все, что мог придумать, поэтому любая помощь будет очень признательна.
Спасибо!