| 摘要 | 为 Discourse 提供高级的 Google Analytics 4 事件跟踪功能 | |
| 仓库链接 | https://github.com/multidimension-al/discourse-google-analytics | |
| 安装指南 | 如何在 Discourse 中安装插件 |
Discourse 核心系统每次导航仅向 Google Analytics 发送一次 page_view。此插件增加了阅读时长、阅读进度和阅读完成度的事件,并可选择接管页面浏览量,从而排除私信和管理员路由。
为什么不使用内置的 SEO/GA 分析标签?
你可以使用内置标签,对于许多论坛来说这就足够了。核心系统的标签是有效的,且此插件是在其基础上运行,而非替换它。
区别在于测量的内容。page_view 只能告诉你 URL 被加载了,但它无法告诉你是否有人阅读了页面上的内容。因此,在报告中,花费二十分钟阅读一个长主题和瞬间跳出看起来是一样的。此插件测量用户实际阅读了多久、阅读到了主题的哪个位置,以及是否读到了结尾。这些才是值得用来做出内容决策的信号,也是构建再营销受众群体的关键。
Discourse 自身的报告(管理员 → 报告)是一个独立的系统,仍然是查看内部指标的最佳位置。此插件仅关注发送到 Google Analytics 的数据。
功能
- 13 种社区事件:主题浏览量、互动和阅读进度里程碑、阅读完成度、每次访问的摘要、搜索、注册、登录、主题创建、回复、点赞、书签
- 阅读测量基于帖子流和专注时间,而非滚动深度
- 两种模式:扩展核心系统现有的标签,或接管标签和页面浏览量
- 私信、受限类别和管理员路由不产生任何事件
- 默认关闭主题标题和搜索词发送
- 可按组将员工流量标记为 GA4 内部流量
- 提供诊断页面和管理员仪表板警告,用于检测配置错误
配置
1. 安装
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/multidimension-al/discourse-google-analytics.git
然后运行 ./launcher rebuild app。
2. 选择模式。 管理员 → 设置 → Google Analytics 4。
核心扩展(默认)— 核心系统保留标签和页面浏览量,插件在其基础上添加事件。将核心系统的 ga universal tracking code 设置为你拥有的 G-XXXXXXXXXX,并将 ga version 设置为 v4_gtag。
托管模式 — 插件接管标签和页面浏览量,这使得它可以排除私信和管理员路由。清除核心系统的 ga universal tracking code,将 ga4 integration mode 设置为 managed,并将你的 ID 填入 ga4 measurement id。
3. 开启 discourse ga4 enabled。
4. 可选 — 内部流量。 ga4 internal traffic groups 默认为管理员和版主。只有在 GA4 的管理员 → 数据设置 → 数据筛选器 → 内部流量中创建匹配的筛选器(匹配 traffic_type 等于 internal)后,此设置才会生效。
5. 验证。 管理员 → 插件 → Google Analytics → 诊断。
要将现有设置从核心扩展模式切换到托管模式,请使用诊断页面上的 Adopt existing Discourse GA configuration(采用现有 Discourse GA 配置),而不是手动编辑设置。
设置
| 名称 | 描述 |
|---|---|
discourse ga4 enabled |
启用插件。默认关闭。 |
ga4 integration mode |
core_extension(核心系统拥有标签)或 managed(插件拥有标签)。 |
ga4 measurement id |
GA4 测量 ID,用于托管模式。 |
ga4 track page views |
发送 page_view。仅限托管模式。 |
ga4 track topic views |
每次访问主题时发送一次 discourse_topic_view。 |
ga4 track topic engagement |
在阅读时长里程碑时发送 discourse_topic_engaged。 |
ga4 engagement milestones |
触发事件的主动阅读秒数。默认 10|30|60|180。 |
ga4 track topic progress |
在阅读位置里程碑时发送 discourse_topic_progress。 |
ga4 progress milestones |
触发事件的主题百分比。默认 25|50|75|100。 |
ga4 track read completion |
当读者到达结尾时发送 discourse_topic_read_complete。 |
ga4 read complete min seconds |
结尾被视为完成所需的最小阅读时间。 |
ga4 track read summaries |
当读者离开主题时发送 discourse_topic_read_summary。 |
ga4 read summary min seconds |
低于此值,访问被视为跳出,不生成摘要。 |
ga4 track search |
当整页搜索返回结果时发送 search。 |
ga4 track registration |
账户创建后发送 sign_up。 |
ga4 track login |
成功登录后发送 login。默认关闭。 |
ga4 track topic creation |
发送 discourse_topic_created。 |
ga4 track replies |
发送 discourse_reply_created。 |
ga4 track likes |
发送 discourse_post_liked。取消点赞不发送任何事件。 |
ga4 track bookmarks |
发送 discourse_bookmark_created。 |
ga4 send search terms |
同时发送搜索内容。默认关闭 — 论坛搜索通常包含个人信息。 |
ga4 send page titles |
包含页面标题。默认关闭 — 在主题路由中,这是主题标题。 |
ga4 track private message activity |
发送一个不包含标识符的聚合私信事件。默认关闭。 |
ga4 login required is restricted |
在需要登录的论坛上,保留主题和类别标识符。 |
ga4 send trust level |
包含信任级别 0–4 作为事件参数。 |
ga4 internal traffic groups |
这些组的成员将被标记为 traffic_type=internal。默认:管理员、版主。 |
ga4 suppress in embed |
在嵌入模式下不发送任何数据。 |
ga4 debug mode |
将事件和抑制决策记录到浏览器控制台。 |
备注
- 在核心扩展模式下,核心系统仍然拥有页面浏览量,因此私信 URL 和主题标题仍会被发送。只有托管模式才会改变这一点。
- 不要将
topic_id注册为 GA4 自定义维度 — 它是无界的,将会触及属性的基数限制。 - Discourse 自身的管理员 → 报告 → 热门搜索记录的是点击通过,因此它能告诉你哪些搜索失败了。GA4 做不到这一点。这就是为什么
ga4 send search terms默认关闭的原因。

