Tanplate Docs

Newsletter

Double opt-in、Consent、D1 六态生命周期、Jobs、Resend 与 Webhooks。

Newsletter 是 Manifest 控制、默认关闭的独立能力,不依赖 Authentication。启用它会派生 Consent、D1、事务邮件、Jobs 和 Webhooks 要求。

启用

Newsletter 只有在 Jobs 与 Webhooks 同时开启时才通过 Manifest 校验:

{
  "features": {
    "jobs": { "enabled": true },
    "newsletter": { "enabled": true },
    "webhooks": { "enabled": true }
  }
}

修改后运行 pnpm init:templatepnpm check:environment,再为目标环境配置 Queue、DLQ、Resend 和 Webhook secret。

Double opt-in

  1. 匿名用户提交邮箱和 Marketing Consent。
  2. Worker 规范化邮箱,D1 保存 email HMAC、hash-only 限时确认凭据和权威状态。
  3. 确认邮件通过 lifecycle Job 投递。
  4. 用户消费一次性链接后进入已确认状态,并异步同步 Provider contact。
  5. 退订或 Provider suppression 始终优先,旧 Job 或重放 Webhook 不能重新订阅。

Web 使用 HttpOnly 凭据展示当前订阅状态,不把邮箱或确认 token 放进可持久化客户端 store。

异步与恢复

生命周期 Job 使用稳定幂等键、claim lease、token fencing、最多五次退避和 Queue 原生 DLQ。Webhook 校验 HMAC、body 上限、时间窗和 replay key;可恢复错误由 Cron/repair 路径处理,业务 route 不自行循环重试。

Admin 只提供分页只读状态,不直接改订阅或 Provider contact。所有状态变化由 Newsletter service 统一执行。

数据保留

D1 是权威源。退订和 suppression 保留必要合规事实;到期 token、Webhook replay 与 Job 记录按 retention 合同清理。可去标识记录在 30 天后移除邮箱定位材料,生命周期事实最长保留 24 个月。

邮件 Provider 细节见 Email,偏好门禁见 Consent 与隐私偏好

On this page