| 摘要 | 为 Discourse 提供高级的 Google Analytics 4 事件追踪功能 | |
| 仓库链接 | https://github.com/multidimension-al/discourse-google-analytics | |
| 安装指南 | 如何在 Discourse 中安装插件 |
Discourse 核心在每次导航时仅向 Google Analytics 发送一次 page_view。此插件增加了阅读时长、阅读进度和阅读完成度的事件,并且可以选择接管页面浏览统计,从而排除私信和管理员路由。
为什么不使用内置的 SEO/GA 分析标签?
你可以使用内置标签,对于许多论坛来说,这已经足够了。核心标签可以正常工作,而此插件是在其基础上运行,而不是替换它。
区别在于测量的内容。page_view 只能告诉你某个 URL 被加载了。它无法告诉你是否有人阅读了页面上的内容,因此,在报告中,阅读长主题 20 分钟和瞬间跳出看起来是一样的。此插件测量用户实际阅读了多久、阅读到了主题的哪个位置,以及是否读到了结尾。这些才是值得用来做出内容决策的信号,也是构建再营销受众群体所必需的指标。
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默认关闭的原因。

