博客
适用于 WordPress 的 SignalHost:用一个插件实现服务器端 Google Tag Manager 和 WooCommerce 事件
发布于 · 阅读约 8 分钟
SignalHost 插件无需粘贴代码,就能把服务器端 Google Tag Manager 装到 WordPress 网站上。它把跟踪代码加到每个页面,按你的容器所需的格式发送 WooCommerce、表单和注册事件,在你自己的跟踪域名上线时自动切换过去,并提醒你任何会被重复计数的东西。本指南按照你遇到它们的顺序展开:安装、连接、检查,以及修复不起作用的地方。
开始之前
- WordPress 6.6 或更高版本,PHP 7.4 或更高版本,以及一个管理员账号。
- 以 https:// 开头的网站地址,连接时需要它。其他网站仍可通过粘贴代码片段来使用该插件,详见下文。
- 一个 SignalHost 账号。免费套餐足以试用:每月 10,000 次请求和一个容器。你可以在连接时创建账号。
- 如果你需要店铺事件,还需要 WooCommerce。表单和注册事件没有它也能使用。
1. 安装插件
在 WordPress 中,前往「插件 → 安装插件」,搜索 SignalHost,然后安装并启用 SignalHost – Server-Side Tag Hosting for Google Tag Manager。它会在你的管理菜单中添加一个 SignalHost 菜单项,并且在你连接网站之前不会联系任何外部服务。
2. 把网站连接到容器
在菜单中打开 SignalHost,按「Connect with SignalHost」;如果你是新用户,则按「Create a free account」。你的浏览器会前往 signalhost.io,完成后再回来。
在那里,「连接网站」页面会列出插件能做的事——把你的跟踪代码加到每个页面、保持代码最新,以及读取容器的状态——以及它不能做的事:使用你的 Google 账号、你的广告平台令牌或你的账单。然后它会询问网站应使用哪个容器。容器就是你自己的跟踪服务器:一个 Tag Manager 网页容器和一个服务器容器,构建在你自己的 Google 账号中,因此始终归你所有。
选择一个容器并按「连接」;或者选择「为你的网站新建容器」,再按「创建容器」进入简短的向导,它会在构建完成之前就提出连接网站;容器一准备好,插件就会添加代码。回到 WordPress,会有一条通知告诉你网站已连接。
3. 检查是否生效
「Status」选项卡是一份从上到下逐项变绿的清单:「Connected to SignalHost」、「Tracking code on your site」、「SignalHost served the code to a visitor」和「Data arriving」。第二步来自插件以未登录访客的身份获取你的首页;「Check again」会重新检查一次。
在浏览器中打开你的网站,把一件商品加入购物车,提交一个表单。第三步会在首次访问后一分钟内变绿,之后「Data arriving」会统计最近 7 天的页面浏览。「Advanced」下的「Log events in the browser console」会在每个事件离开页面时把它显示出来;从 Growth 套餐起,signalhost.io 上的容器页面还会在「实时事件监控」下列出这些事件。
插件在你的网站上添加了什么
Google Tag Manager 加载器,位于每个页面的 head 部分,指向你自己的跟踪地址而不是 googletagmanager.com,放在你的 Cookie 横幅之后,并排除在常见性能插件的“延迟 JavaScript”功能之外。除了你的容器发送的页面浏览之外,插件还会推送以下事件,每个事件都带有自己的 event_id,这样 Meta、TikTok 和其他平台会把一个浏览器像素事件和它在服务器端的孪生事件只计一次:
- WooCommerce:view_item_list、view_item、add_to_cart、remove_from_cart、view_cart、begin_checkout、add_shipping_info、add_payment_info 和 purchase,经典版和区块版的购物车与结账都支持。每个订单只发送一次,标记记在订单本身上,无论感谢页被打开多少次。
- 表单:Contact Form 7、WPForms、Gravity Forms、Elementor Pro 表单和 Fluent Forms 的成功提交,可按表单选择作为潜在客户线索(generate_lead)、联系(contact)、预约(schedule)、申请(submit_application)或订阅(subscribe)发送。
- 注册:访客创建账号时发送 sign_up,无论是在注册页、「My Account」中还是在结账时。
每一类事件都是「What is tracked」下的一个开关。购物车、结账、表单和注册事件来自访客自己的会话,绝不来自页面的 HTML,因此页面缓存不会把一位访客的事件交给下一位访客。
「Send customer details for better ad matching」在你打开之前一直是关闭的。打开后,只有当访客允许了广告 Cookie 时,电子邮件、电话和地址才会随转化一起发送,并在到达广告平台之前经过哈希处理。同意状态通过 Google Consent Mode 跟随你的 Cookie 横幅;如果你的横幅不设置它,请在这里的「Consent & privacy」下选择「Set “denied until consent”」。
如果你已经在使用 GTM4WP 或其他 Google 代码
插件会读取你的首页并检查你的其他插件,然后在「Double-counting check」下列出任何会被重复计数的东西:你之前粘贴的 SignalHost 代码片段、同一媒体资源的 Google 自己的 Tag Manager 代码片段或 Google 代码、Site Kit、MonsterInsights、ExactMetrics 或 Google Analytics for WooCommerce。
GTM4WP 有一键修复。「Turn off GTM4WP’s container code」会阻止它直接从 Google 加载同一个容器,同时它的数据层继续工作;「Turn off GTM4WP’s shop tracking」则把店铺事件交给 SignalHost。「Undo」可以撤销其中任何一项。
你自己的跟踪域名
你的容器起初使用 signalhost.io 下的一个地址。在付费套餐中,容器页面上的「设置您自己的域名」会一步步引导你用一条 DNS 记录设置你自己网站的子域名,例如 metrics.yoursite.com。浏览器把它视为第一方,因此它的 Cookie 算作你自己的 Cookie,广告点击也能继续被归因。它上线后,插件会在下一次同步时把你的网站切换过去,通常在一小时内,并清除你的页面缓存。不需要手动替换任何东西。
手动添加 SignalHost
你也可以不用插件,在 WordPress 上运行 SignalHost。在 signalhost.io 上打开你的容器,在「安装到您的网站」卡片中找到代码片段,按「复制」。把它粘贴到每个页面的 head 部分,尽量靠前,但要放在 Cookie 横幅的脚本之后:可以用 WPCode 之类的页眉插件(它的 Header 框),也可以用主题的 header.php。如果网站已经为同一个 Analytics 媒体资源加载了 Google Tag Manager 或 Google 代码,请替换那段代码片段,而不是再加一段。然后按「我已完成」。
这样你的 Tag Manager 容器就会出现在每个页面上,带有页面浏览以及你的网站自己推送到数据层的任何内容。但它会失去插件添加的一切:WooCommerce、表单和注册事件,每个订单只计一次的购买,以及两项检查。当你自己的域名上线时,你需要自己替换代码片段。
对于无法连接的网站,例如没有 https:// 的网站,还有一个折中办法:在插件中选择「I already have a snippet from SignalHost」,粘贴代码并按「Use this snippet」。事件仍然会照常发送,但插件无法切换到你自己的域名,也无法显示数据是否到达。
管理与断开连接
「Status」选项卡上的「Disconnect」会先询问一次,然后立即从每个页面移除跟踪代码。你的容器及其数据会保留,随时按「Connect with SignalHost」即可把网站接回来。signalhost.io 上的「设置 › 已连接的网站」也会列出该网站;在那里按「断开连接」,会在插件下一次同步时移除代码,通常在一小时内。
删除插件会断开网站连接,并移除插件存储的所有内容。在预发布(staging)副本上,插件会注意到地址变了并暂停跟踪,因此测试流量不会混入你的线上数据。
出现问题时
- 没有 Connect 按钮:网站地址不是以 https:// 开头。请改用「I already have a snippet from SignalHost」。
- 连接中断,并显示一条关于防火墙的消息:某个安全插件或服务器拦截了发往 signalhost.io 的请求。放行这些请求,然后再按一次「Connect」。
- 在你的首页上找不到代码:没有 wp_head() 的主题、页面缓存或优化插件正在移除它。在「Advanced」下按「Clear page caches」,然后按「Check again」。
- 代码在你的首页上出现了两次,或者存在一份旧的副本:移除你之前粘贴到主题或页眉插件中的代码片段。
- 无法从这台服务器打开首页:密码保护、维护模式或防火墙挡住了它。在浏览器中打开网站,在那里检查。
- 你自己的访问不见了:「Do not track administrators」已开启。请退出登录后再访问网站。
- 其他任何问题:请写信至 hello@signalhost.io,并附上你的网站地址。
商标声明
SignalHost 是 Algorithmo GmbH 的独立产品,与 WordPress Foundation、WooCommerce、Google、Meta 或 TikTok 没有关联,也未获得其认可。Google Analytics、Google Ads 和 Google Tag Manager 是 Google LLC 的商标;Meta 是 Meta Platforms, Inc. 的商标;TikTok 是 ByteDance Ltd. 的商标;WordPress 是 WordPress Foundation 的商标。WooCommerce 以及此处提到的其他插件名称是其各自所有者的商标。

