网站仅触发标准Google Ads代码,gtag未触发问题排查
我在页面中部署了以下标准Google网站代码用于跟踪转化:
<!-- Google Code for sale Conversion Page --> <script type="text/javascript"> /* <![CDATA[ */ var google_conversion_id = AW-MYAWID; var google_conversion_language = "en"; var google_conversion_format = "3"; var google_conversion_color = "ffffff"; var google_conversion_label = "MY_LABEL"; if (1.0) { var google_conversion_value = <?php echo round($order_total['value'],2);?>; } var google_remarketing_only = false; /* ]]> */ </script> <script type="text/javascript" src="//www.googleadservices.com/pagead/conversion.js"> </script> <noscript> <div style="display:inline;"> <img height="1" width="1" style="border-style:none;" alt="" src="//www.googleadservices.com/pagead/conversion/AW-MYAWID/?value=<?php echo round($order_total['value'],2);?>&label=MY_LABEL&guid=ON&script=0"/> </div> </noscript>
紧接着部署了以下gtag代码:
<script type="text/javascript"> gtag('event', 'conversion', { 'send_to': 'AW-MYAWID/MYLABEL', 'value': <?php echo round($order_total['value'],2);?>, 'currency': 'CAD', 'transaction_id': '' }); </script> <!--google enhanced conversions !--> <script type="text/javascript"> gtag('set', 'user_data', { "email": <?php echo $customer_info['email_address'];?>, "phone_number": <?php echo $customer_info['telephone'];?>, "address": { "first_name": <?php echo $customer_info['firstname']; ?>, "last_name": <?php echo $customer_info['lastname']; ?>, "street": <?php echo $customer_info['street_address'];?>, "city":<?php echo $customer_info['city'];?>, "region": <?php echo $customer_info['state'];?>, "postal_code": <?php echo $customer_info['postcode'];?> } }); </script>
页面头部包含以下代码:
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-MYUAUD"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'AW-MYAWID') ; gtag('config', 'UA-MYUAUD'); </script>
目前在Tag Assistant中能看到CDATA标签,但全局站点标签(gtag)无元数据信息,只有标准版本的代码触发了转化事件。请问我遗漏了什么配置?为什么只有标准代码能触发事件?
1. send_to参数格式不匹配
你的gtag转化事件中send_to值是AW-MYAWID/MYLABEL,但标准代码里的转化标签是MY_LABEL,两者格式不一致(少了下划线)。这个参数必须和Google Ads后台的转化标签完全一致,包括大小写、符号,否则gtag无法识别对应的转化目标。
2. 用户数据输出存在JS语法错误
增强转化的user_data配置中,所有字符串类型的字段(邮箱、手机号、姓名等)都需要用双引号包裹,但你直接输出PHP变量,例如:
"email": <?php echo $customer_info['email_address'];?>
如果用户邮箱是test@example.com,输出后会变成"email": test@example.com,这属于语法错误,会直接导致整个gtag脚本停止执行。正确写法应该给所有字符串字段加引号:
"email": "<?php echo $customer_info['email_address'];?>", "phone_number": "<?php echo $customer_info['telephone'];?>", "address": { "first_name": "<?php echo $customer_info['firstname']; ?>", "last_name": "<?php echo $customer_info['lastname']; ?>", "street": "<?php echo $customer_info['street_address'];?>", "city": "<?php echo $customer_info['city'];?>", "region": "<?php echo $customer_info['state'];?>", "postal_code": "<?php echo $customer_info['postcode'];?>" }
3. 异步脚本加载顺序问题
头部的gtag/js是异步加载的,如果你的gtag转化事件代码在这个脚本加载完成之前执行,会出现gtag is not defined的错误,导致事件无法触发。解决方法:
- 将gtag转化事件代码放到页面底部,确保在gtag核心脚本加载完成后执行;
- 或者用
window.onload包裹事件代码,确保DOM和脚本都加载完毕:window.onload = function() { gtag('event', 'conversion', { 'send_to': 'AW-MYAWID/MY_LABEL', 'value': <?php echo round($order_total['value'],2);?>, 'currency': 'CAD', 'transaction_id': '' }); gtag('set', 'user_data', { // 修正后的用户数据 }); };
4. 新旧代码冲突
同时部署旧版conversion.js转化代码和新版gtag转化事件,可能会导致跟踪逻辑冲突,或者Tag Assistant优先展示旧版事件。建议保留其中一套即可,推荐使用gtag版本以支持增强转化等功能。
5. Google Ads后台增强转化未启用
即使代码正确,若未在Google Ads后台为该转化动作开启增强转化功能,相关元数据也不会被收集。需登录后台找到对应转化跟踪设置,开启增强转化并完成配置。
快速排查步骤
- 打开浏览器控制台(F12),检查是否有JavaScript语法错误,这是最直接的问题线索;
- 在Tag Assistant中查看gtag标签的状态,是否有错误提示;
- 对比Google Ads后台的转化ID和标签,确保代码中的参数完全一致;
- 临时注释旧版标准转化代码,单独测试gtag代码是否能触发事件。
内容的提问来源于stack exchange,提问作者Sackling

