我们在加载页面时根据条件逻辑手动跟踪转化。 PHP 脚本将包含 gtag 脚本的 HTML 返回到用户所在的页面。
这是我们知道正在发送的代码:
return <<<HTML
<script>
try {
gtag('config', $GOOGLE_AD_CONVERSION_ID);
gtag('set', 'user_data', {
"email": $email_string,
"phone_number": $phone
});
function gtag_report_conversion(url) {
var callback = function () {
console.log('gtag conversion tracked');
// We don't use this
if (typeof(url) != 'undefined') {
window.location = url;
}
};
gtag('event', 'conversion', {
'send_to': $GOOGLE_AD_CLICK_SEND_TO,
'value': $amount,
'currency': $currency_string,
'transaction_id': $transaction_id,
'event_callback': callback
});
return false;
}
gtag_report_conversion(undefined);
} catch (e) {
console.error("Error during gtag conversion", e);
}
</script>
HTML;
除了 $amount 和 $phone 之外的所有变量都用引号括起来,以便它们在 Javascript 中是有效的字符串。
收到此错误后我意识到 $phone 也需要包装。这会是它无法识别电子邮件格式正确的原因吗?服务器正在记录它发送的 HTML,所以我看了一下,电子邮件字段对我来说看起来完全正常。删除识别信息的示例:
"[email protected]".
它给出的另一种可能性是电子邮件未经过哈希处理,但在此页面上表示:“该功能在您的第一方客户数据上使用一种名为 SHA256 的安全单向哈希算法,例如作为电子邮件地址,在发送给 Google 之前”,这意味着它不应该被预先散列。
我会等到尝试将 $phone 用引号括起来后才问这个问题,但我的公司非常渴望让它尽快运行。如果问题解决了,我会报告。
总结:这个实现方式有什么问题吗?如果是这样,那有什么问题吗?或者在 Javascript 中不带引号的 $phone 变量也会破坏电子邮件部分吗?
将电话号码用引号引起来后,错误消失。