Sign inGet started

退订链接

营销邮件的收件人有两种方式退出:邮箱服务商渲染的退订按钮,以及邮件正文中的链接。我们会在每封 marketing 邮件上同时添加这两者,将每次退订作为 webhook 事件上报,并记录该地址的退订状态,使你的下一次营销活动自动跳过它。正确设置类别是你唯一需要做的事。

设置类别

退订只对收件人可以选择退出的邮件有意义,所以类别必须先设好。发送默认为 category: "marketing",因此营销活动、新闻通讯和公告邮件无需额外操作即可正确处理。对事务性邮件显式设置 category: "transactional",我们就不会干预。收据或密码重置邮件没有退订链接,也永远不会被之前的退订记录拦截。
这背后有两项义务。批量发件人被 Gmail 和 Yahoo 要求在营销邮件上提供一键退订,而在邮件正文中放置可见的退订链接则是大多数市场的法律单独要求。marketing 邮件两者兼备。

一键退订按钮

这是邮箱服务商在邮件请求头区域绘制的退订控件。它来自一对请求头 List-UnsubscribeList-Unsubscribe-Post,只有当两者都存在且退订端点接受无需身份验证的 POST 且无确认步骤时,服务商才会提供一键版本。这就是 Gmail 和 Yahoo 检查的约定。
营销邮件发出时已经带有这些请求头,无论你以何种方式发送:从控制台发起的群发,还是通过 POST /v1/email/messages 发送的 marketing 消息。无需构建,无需托管。
由于我们拥有营销邮件上的这对请求头,在 marketing 邮件上自行设置 List-UnsubscribeList-Unsubscribe-Post 会被拒绝并返回 422。在 transactional 邮件上我们不添加退订请求头,如果你有需要,可以通过 headers 字段自行设置。
收件人使用服务商按钮会产生一个 email.list_unsubscribed 事件。

正文中的链接

第二种途径是邮件正文中可见的退订链接。我们会在你的 marketing 邮件的 HTML 正文中添加一个,确保收件人始终有可点击的内容。你也可以添加自己的链接,指向你托管的偏好设置中心,我们的链接会作为合规底线保留在旁边。
默认情况下,链接以小字页脚的形式出现在正文末尾。要自己选择位置,请将预留的 {{ bird.unsubscribe_url }} 变量放在链接应出现的地方:
代码示例
<p>
  You received this because you subscribed to our newsletter. You can {{ bird.unsubscribe_url }} at
  any time.
</p>
随后我们会在该位置渲染链接而非追加页脚,呈现为一个文本为 "unsubscribe" 的锚点。你也可以将它用作 href 值(<a href="{{ bird.unsubscribe_url }}">Leave this list</a>),以保留你自己的文案和样式。
替换仅发生在发出的副本上,因此通过 API 回读消息时,返回的是包含原始变量的原始内容。
Email > Unsubscribe page 中自定义目标页面。设置发件人名称、背景色、文字色和按钮颜色。发件人名称默认为你的组织名称。使用示例链接预览效果。
收件人使用正文中的链接会产生一个 email.unsubscribed 事件,与 email.list_unsubscribed 不同,方便你区分两种退订路径。

退订的作用

我们会停止向该收件人发送邮件,无需你对 webhook 做任何处理。任一事件都会将收件人的地址记录为已退订非事务性邮件,具体表现为:
  • 发往该地址的 marketing 邮件会被拒绝,返回 email.rejectedrejection_reason: "recipient_suppressed"。该原因涵盖所有收件人级别的拦截,无论是屏蔽还是声明的偏好,因此无论哪种情况都应匹配它。
  • transactional 邮件仍会正常发送,因为退订表示收件人不想再收到营销邮件,地址本身仍然有效。
退订是一项声明的偏好,而非屏蔽:它显示在 Email > SuppressionsPreferences 选项卡以及联系人详情页中,而不在屏蔽列表中。只有该地址受影响,记录显示谁在何时退订。
Webhook 事件可让你将退订同步到自己的数据库、切换订阅标记或记录日志。两个事件都包含每个邮件事件的标识字段:email_idrecipient_idworkspace_idrecipient 地址及其 recipient_role。它们还包含原始发送的 tagsmetadata,方便你无需额外查询即可与自己的记录核对,以及 broadcast_id(标识邮件所属的群发活动)或 null(当该发送不属于任何群发活动时)。在我们添加该字段之前发出的邮件中的退订链接不关联任何群发活动,因此通过此类链接的退订在两个事件上都报告 null,无论邮件是否由群发活动发出。订阅这些事件的方式与其他邮件事件相同;事件参考提供了完整的载荷。
退订是收件人自己的声明,因此你无法像处理屏蔽那样通过屏蔽 API 来移除它。要恢复向该地址发送邮件,请在 Contacts > Preferences 中记录一条选择加入,或调用 POST /v1/preferences 并传入 status: granted。该工作区级页面记录所有渠道的声明,而 Email > Suppressions 上的选项卡仅显示邮件相关的声明。无论哪种方式,覆盖收件人的退订都需要 consented_at,即收件人同意的时刻,且选择加入仅在该时刻晚于其所覆盖的退订时才生效。

后续步骤

  • 类别:为什么 marketing 是退订生效的关键
  • 屏蔽:可送达性事实列表,以及它与声明的偏好有何不同
  • 邮件事件:完整的 email.unsubscribedemail.list_unsubscribed 载荷
  • Gmail 和 Yahoo 要求:批量发件人在哪些情况下需要提供一键退订
  • Webhooks:订阅端点、签名验证和重试