| 摘要 | 为您的 Discourse 论坛添加 Meta Pixel 追踪及转化 API (CAPI) 支持。 | ||
| 仓库链接 | Discourse Meta Pixel & Conversions API 插件 | ||
| 安装指南 | 如何在 Discourse 中安装插件 |
在 Discourse 中添加 Meta Pixel 的常规方法是将基础代码粘贴到主题组件(theme component)中。这会在文档加载时触发一次 fbq('track', 'PageView'),由于 Discourse 从不重新加载文档,因此无论用户阅读了多少个主题,每次访问只会记录一次 PageView。本插件则会在每次导航时触发,添加内容和转化事件,并通过转化 API 发送服务器端副本,从而确保事件在广告拦截器存在的情况下依然能被记录。
为什么不直接使用主题组件?
主题组件仅在浏览器中运行,这带来了三个后果。
广告拦截器和 Safari 的 ITP(智能跟踪预防)会移除相当一部分浏览器事件,且您无法得知具体缺失了哪些事件。它完全无法使用转化 API,因为这需要一个访问令牌,而主题组件中没有可以放置访客无法读取的机密信息的地方。此外,它会在被注入的所有页面触发,包括私信、/admin 和密码重置页面。
如果您只需要为再营销受众记录 PageView,那么主题组件确实已经足够,且只需两分钟即可设置。本插件旨在提升转化质量。
我的论坛需要这个吗?
可能不需要。Pixel 和 CAPI 旨在帮助您追踪转化并创建广告受众。虽然它可以提供一些分析数据,但 Discourse 管理面板已经拥有强大的分析数据。本插件主要面向希望追踪转化并管理 Meta 广告的用户,这些广告有助于将用户吸引到您的论坛和网站。
功能
- 在一个插件中集成浏览器 Pixel 和服务器端转化 API,共享同一个事件 ID,以便 Meta 进行去重而非重复计数
PageView、ViewContent、Search、TopicEngaged、CompleteRegistration、TopicCreated、ReplyCreated- 每次 SPA 导航时触发,而非每次页面加载时触发
- 即使浏览器 Pixel 被拦截,服务器端转化事件依然会到达
- 私信、受限类别和管理员路由不会产生任何事件
- 用户生成内容(UGC)的标题和搜索文本永远不会被发送
- 可按组排除工作人员流量,且在服务器端事件上同样强制执行
- 批量传输,包含重试分类、速率限制退避以及持久的幂等性表
- 诊断页面,显示最近的传输记录及其状态
配置
1. 安装
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/multidimension-al/discourse-meta-pixel-capi.git
然后运行 ./launcher rebuild app。重建过程会执行迁移,创建传输记录表。
2. Pixel。 管理员 → 设置 → Meta Pixel & Conversions API。将您的 Pixel ID 填入 meta pixel dataset id,然后开启 discourse meta pixel enabled。这将完成一个仅使用 Pixel 的可用配置。
(Meta 在事件管理器中称其为 Pixel ID,在转化 API 文档中称其为数据集 ID。它们是同一个数字。)
3. 转化 API(可选)。 在事件管理器 → 您的数据集 → 设置 → 转化 API 中生成令牌。将其填入 meta pixel capi access token,然后开启 meta pixel capi enabled。如果没有令牌和数据集 ID,该设置将拒绝启用。
4. 验证。 将事件管理器 → 测试事件中的代码填入 meta pixel test event code,然后浏览论坛。每个事件应该只到达一次,而不是两次。这表明去重功能正在正常工作。验证完成后请清除该字段,因为带有测试代码发送的事件不计入转化。
5. 检查。 管理员 → 插件 → Meta Pixel → 诊断页面显示配置、浏览器状态、传输计数以及最近 25 条传输记录及其错误信息。
设置
| 名称 | 描述 |
|---|---|
discourse meta pixel enabled |
启用插件。默认关闭。 |
meta pixel pixel enabled |
在浏览器中加载 Meta Pixel。 |
meta pixel dataset id |
您的 Meta Pixel ID(在 CAPI 文档中称为数据集 ID)。 |
meta pixel capi enabled |
通过转化 API 发送服务器端副本。需要令牌。默认关闭。 |
meta pixel capi access token |
来自事件管理器的转化 API 令牌。服务器端机密,永远不会发送到浏览器。 |
meta pixel graph api version |
CAPI 请求使用的 Graph API 版本。默认 v26.0。 |
meta pixel test event code |
测试事件代码。仅在验证时设置,因为这些不计入转化。 |
meta pixel track page view |
为符合条件的页面发送 PageView。 |
meta pixel track view content |
当打开一个公开可见的主题时发送 ViewContent。 |
meta pixel track search |
当执行全页搜索时发送 Search。搜索文本永远不会被转发。默认关闭。 |
meta pixel track topic engaged |
在有效阅读后发送 TopicEngaged。 |
meta pixel topic engaged seconds |
触发 TopicEngaged 前的活跃阅读秒数。默认 30。 |
meta pixel track complete registration |
当创建账户时发送 CompleteRegistration。 |
meta pixel track topic created |
当创建新的公开主题时发送 TopicCreated。 |
meta pixel track reply created |
当回复一个公开主题时发送 ReplyCreated。 |
meta pixel enhanced email matching |
包含成员电子邮件的 SHA-256 哈希值以提高匹配质量。默认关闭。 |
meta pixel external id matching |
包含用户 ID 的不透明 HMAC。绝不包含用户名或电子邮件。 |
meta pixel excluded groups |
这些组的成员完全不会产生 Meta 事件。默认:管理员、版主。 |
meta pixel respect do not track |
对于浏览器报告“请勿跟踪”的访客,不发送任何数据。 |
meta pixel public content only |
仅为匿名用户可读的主题发送内容事件。 |
meta pixel batch size |
每个请求的转化数量。Meta 最多接受 1000 个。默认 100。 |
meta pixel batch max wait seconds |
部分填充的批次等待的时间。默认 300。 |
meta pixel delivery retention days |
保留传输记录的天数。最少 7 天,默认 30 天。 |
meta pixel debug mode |
将已分发的事件记录到浏览器控制台。 |
备注
- 事件的浏览器副本和服务器端副本共享同一个 ID。Meta 会在 48 小时内根据事件名称和 ID 进行去重,这就是为什么批次等待窗口是分钟级而不是小时级的原因。
- 主题和回复创建仅在服务器端处理。浏览器副本不会增加任何身份信号,而且如果客户端能够断言“一个主题已创建”,它也可能虚假地断言这一点。
- 注册信息从服务器发送,但与浏览器事件配对,因为在创建账户时,没有正在进行的请求可以获取 IP、用户代理或
_fbp。 - 排除组在所有服务器端分发路径上强制执行,而不仅仅是在浏览器中。
TopicCreated、ReplyCreated和CompleteRegistration完全不涉及浏览器。 - 浏览器发送到的端点不是 CAPI 代理。它接受四个事件名称、一个事件 ID,以及可选的主题 ID 和路径。不接受 URL,也不接受任意的
user_data。
还有一个以相同方式构建的配套 Google Analytics 4 插件。

