教程 / 后端集成 / 用 Loops 发送营销邮件
📝 文字 ● 初级 更新于 2026-05-13

用 Loops 发送营销邮件

邮件通讯、用户引导序列、产品公告、"我们想念你"的挽回邮件。Loops 专为 SaaS 生命周期邮件而生——与 ResendPostmark 等事务邮件服务解决的是不同问题。

何时选择 Loops

0
  • 选择 Loops 的场景 — 你需要一款不像 2008 年 Mailchimp 那样老旧的营销邮件工具。拖拽式序列编辑、真正易懂的受众过滤器、能生成干净 HTML 的可视化编辑器。
  • 替代方案Customer.io(功能更强大,但也更复杂)、Intercom(CRM + 聊天 + 邮件一体化)、Userlist(定位与 Loops 相似,价格更低)、Buttondown(纯通讯订阅,以 Markdown 为核心)。
  • 不适合用 Loops 的场景 — 密码重置、魔法链接、收据、OTP 验证码。这些应该走事务邮件服务(Postmark / Resend / SES)。混用会同时拉低两个服务的送达率。
  • 注册app.loops.so/register。免费套餐:1,000 个联系人,无限量发送,无需信用卡。

添加并验证发件域名

1

在 Loops 控制台中进入 Settings → Sending domain,输入你希望邮件来自的域名(例如 mail.yourapp.com——建议用子域名,避免营销邮件影响根域名的信誉)。

Loops 会给出 3 条需要添加的 DNS 记录:一条 MX、一条 TXT(SPF)和一条 CNAME(DKIM)。将它们粘贴到你的 DNS 服务商——CloudflareNamecheap,或参考通用 DNS 配置指南

点击 Verify。Loops 每分钟自动检查一次——通常 5 到 30 分钟内会变为绿色。如果一小时后仍未通过,说明你的 DNS 服务商生效较慢,可用 dig CNAME loops._domainkey.mail.yourapp.com 手动确认。

提示:做好域名预热。在向全量列表发送之前,先向真实的活跃订阅者发送几次活动邮件。全新域名容易被过滤进垃圾邮件。

获取 API 密钥

2

Settings → API → 点击 Generate API key。请立即复制——Loops 不会再次显示。将其存入 .env,变量名为 LOOPS_API_KEY

API 文档:loops.so/docs/api-reference

从应用同步联系人

3

每次注册、每次套餐变更、每次取消——都要将事件推送到 Loops。这是保持受众分组准确的唯一途径。

安装 SDK:

npm install loops

用户注册时:

import { LoopsClient } from "loops";
const loops = new LoopsClient(process.env.LOOPS_API_KEY);

await loops.contacts.create({
  email: user.email,
  firstName: user.firstName,
  userGroup: "trial",            // for segmentation
  source: "website",
  signupDate: new Date().toISOString(),
});

套餐升级时:

await loops.contacts.update({
  email: user.email,
  userGroup: "pro",
  plan: "pro_monthly",
});

取消订阅时:

await loops.contacts.update({
  email: user.email,
  userGroup: "churned",
  churnedAt: new Date().toISOString(),
});

完整字段说明:创建联系人更新联系人

发送一次性营销活动(通讯)

4

控制台 → Campaigns → New campaign。拖拽内容块:文本、图片、按钮、分隔线。Loops 会生成兼容各邮件客户端的 HTML——不需要 iframe 那些旁门左道。

受众:按你已同步的任意属性筛选,例如 userGroup = "pro"signupDate > 30 days agoplan = "free" AND lastLogin < 14 days ago

发送前可在 6 个邮件客户端(Gmail、Outlook、iOS Mail、深色模式等)预览效果。Loops 在编辑器中内置了类似 Litmus 的预览功能。

点击 Send 立即发送,或选择定时发送。开/点击追踪默认开启。

构建生命周期序列(loop)

5

"Loops"是 Loops 对滴灌营销活动的叫法。Loops → New loop → 选择触发器:

  • Contact added — 用户引导序列
  • Property changed — 例如 plan 变为 "churned" 时触发挽回序列
  • Event sent — 应用通过 SDK 发送自定义事件

在画布上拖拽邮件块,添加等待步骤("等待 2 天"),添加条件分支("如果 hasShipped = true,则跳过")。保存后激活。

在应用代码中触发:

// Loops loops can also be triggered via event
await loops.events.send({
  email: user.email,
  eventName: "completedOnboarding",
});

常见问题

6
  • 邮件落入 Gmail 的"促销"标签 — 对于营销邮件来说这其实是正常的。促销 ≠ 垃圾邮件。不要用奇技淫巧试图逃脱;只要用户持续互动,Gmail 最终会重新分类。
  • 进了垃圾邮件 — 用 mail-tester.com 检测。低于 8/10 就要修复 SPF/DKIM/DMARC 和邮件内容。如果你没有配置 DMARC,Loops 甚至不会使用该域名。
  • 数据同步偏差 — 你的数据库里有用户,但 Loops 里没有。原因:调用 Loops API 失败后没有重试。用 try/catch 包裹并记录日志;添加每日对账任务,从数据库拉取新用户并 upsert 到 Loops。
  • "退订"未被执行 — Loops 会自动在邮件底部添加退订链接。如果用户反映仍在收到邮件,检查他们退订的是否只是营销邮件——你的事务邮件服务(Postmark/Resend)是独立的。有些用户只想退订其中一种。

定价说明

7
  • 免费 — 1,000 个联系人,无限量发送,邮件底部带 Loops 品牌标识。
  • Pro — 每月 $49,支持 2,500 个联系人,去除品牌标识,提供 A/B 测试和高级分析。更高套餐增加联系人上限。
  • API 速率限制 — 免费版每秒 10 次请求,付费版更高。如需批量回填大量用户,请分批同步。
  • 为何付费而不用 Mailchimp — 界面体验差距显著(Mailchimp 上次大改版还是 2017 年)。受众过滤器使用通俗易懂的语言。序列(Loops)是核心卖点;Mailchimp 的"客户旅程"感觉停留在 2014 年。

定价页面:loops.so/pricing

官方参考资料

8
不要混用营销邮件和事务邮件。通过 Postmark 账号发送"我们想念你"的挽回邮件会影响 Postmark 的 IP 信誉。通过 Loops 发送密码重置邮件则会被过滤掉。两套服务,两个域名(或子域名),严格不交叉。