You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google增强转化未处理:邮箱格式错误及代码问题咨询

问题分析与解决方案

核心问题:未给$phone加引号导致JS语法错误

你的代码里$phone未添加引号,这会直接引发两个关键问题:

  • 如果$phone包含非数字字符(比如+32123456789、012-345678),会触发JavaScript语法错误,导致整个gtag('set', 'user_data')代码块执行失败——邮箱字段根本没被正确传递给Google,这就是你收到"邮箱格式错误"提示的本质原因:不是邮箱格式真的有问题,而是邮箱数据根本没传过去。
  • 就算$phone是纯数字,不加引号会被JS解析为数字类型,但Google增强转化要求phone_number必须是字符串类型,数字类型的数据会被判定为无效格式,同样会导致整个user_data对象处理失败。

当前实现的其他潜在隐患

除了$phone的引号问题,手动给变量加引号的方式无法处理特殊字符(比如邮箱里的反斜杠、双引号),容易引发JS语法错误甚至XSS风险。更稳妥的做法是用PHP的json_encode()函数处理所有要传入JS的变量,它会自动处理引号、转义特殊字符,确保输出完全符合JS语法规范。

修正后的代码示例

快速修复(给$phone加引号)

return <<<HTML
    <script>
        try {
            gtag('config', {$GOOGLE_AD_CONVERSION_ID});
            gtag('set', 'user_data', {
                "email": {$email_string},
                "phone_number": "{$phone}" // 给$phone添加双引号
            });
            function gtag_report_conversion(url) {
                var callback = function () {
                    console.log('gtag conversion tracked');
                    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;

更稳妥的写法(用json_encode避免所有语法问题)

// 先将所有变量转成符合JS规范的格式
$adConversionId = json_encode($GOOGLE_AD_CONVERSION_ID);
$email = json_encode($email_value); // 假设原邮箱变量为$email_value,而非已加引号的$email_string
$phone = json_encode($phone);
$sendTo = json_encode($GOOGLE_AD_CLICK_SEND_TO);
$currency = json_encode($currency_string);
$transactionId = json_encode($transaction_id);

return <<<HTML
    <script>
        try {
            gtag('config', {$adConversionId});
            gtag('set', 'user_data', {
                "email": {$email},
                "phone_number": {$phone}
            });
            function gtag_report_conversion(url) {
                var callback = function () {
                    console.log('gtag conversion tracked');
                    if (typeof(url) != 'undefined') {
                        window.location = url;
                    }
                };
                gtag('event', 'conversion', {
                    'send_to': {$sendTo},
                    'value': {$amount}, // $amount为数字类型,无需json_encode
                    'currency': {$currency},
                    'transaction_id': {$transactionId},
                    'event_callback': callback
                });
                return false;
            }
            gtag_report_conversion(undefined);
        } catch (e) {
            console.error("Error during gtag conversion", e);
        }
    </script>
HTML;

关于Google增强转化的哈希说明

你提到的Google自动用SHA256哈希处理用户数据是正确的,不需要提前对邮箱或手机号做哈希,只要传递原始字符串数据即可,Google会自动完成哈希和格式校验。

内容的提问来源于stack exchange,提问作者ZacheryMarcum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 08:12:53