Zapier 与 CRM 自动化
MailInApp 目前没有官方的 Zapier 应用,但你并不需要它。项目 Webhook 本身就是通过 HTTPS 发送的、经过签名的普通 JSON,恰好正是 Zapier 通用的 Webhooks by Zapier 触发器所期望的格式。把它指向任意一个 Zap,每一次互动——投票、表单提交、测验结果、商品购买——都会自动进入你的 CRM、表格、Slack,或 Zapier 能连接到的任何其他地方,无需编写代码。
同样的方法也适用于 Make、n8n、Pipedream,或任何其他可以接收入站 Webhook 的自动化工具——本指南以 Zapier 为例,因为它是最常被要求的一个。
设置步骤
- 在 Zapier 中新建一个 Zap,选择 Webhooks by Zapier 作为触发器应用,事件选择 Catch Hook。
- Zapier 会给你一个唯一的 Catch Hook URL——把它复制下来。
- 在 MailInApp 中,打开仪表盘 → 你的邮件 → 响应,把该 URL 粘贴到 Webhook 字段中,然后点击启用。
- 复制 MailInApp 显示给你的签名密钥(
whsec_…)——它只会显示一次。如果只是最简单的 Zap,你不一定需要它,但如果之后打算验证签名,请把它保存在安全的地方。 - 触发一次真实的互动——为投票投一票、提交一份表单,或使用项目的测试发送——然后回到 Zapier 点击 Test trigger。它应该会显示 MailInApp 刚刚发送的负载,其中包含
event.action、event.value、recipient.row等字段。 - 添加你需要的任意动作步骤——"Create row in Google Sheets"、"Create record in HubSpot/Salesforce/Airtable"、"Send Slack message" 等——从捕获到的负载中映射出你需要的字段。
- 打开该 Zap。
就这样——此后该项目上的每一次互动都会自动流转。可映射的每个字段都记录在Webhook 负载参考中。
筛选出真正需要的内容
大多数 CRM 场景只关心部分互动——一次完整的表单提交,而不是每一次打开。在触发器之后添加一个 Filter by Zapier 步骤:
- 仅当
event.action精确匹配submit(或vote、rate、purchase等)时才继续,以只响应某一特定动作。 - 仅当
event.blockId精确匹配某个特定模块的 id(可在工作室的模块检查器中查看)时才继续,以只响应同一项目中的某个特定模块,忽略其他模块。 - 仅当
lowScore为true时才继续,用于构建一个在 CSAT/NPS 差评时提醒管理者的 Zap——这与 MailInApp 自身的应用内低分提醒所使用的信号完全相同,只是改由你自己的自动化流程来处理。
反向把联系人推送回来
自动化通常是双向的:一张工单被解决了,你希望把这个人加入(或更新到)某个 MailInApp 联系人列表中,以便后续跟进发送,而不需要人工重新导出一份 CSV。可以把 Webhooks by Zapier → POST 动作步骤作为任意 Zap 的最后一步——"工单已解决"、"交易已完成"、"其他地方提交了表单"——指向你联系人列表的行级 upsert 端点,从而自动保持 MailInApp 发送列表的最新状态。该端点每次调用最多接受 500 行,并按每个 API 密钥限制为每分钟 30 次请求。对于按单个事件触发的 Zap 来说这已经相当宽松,但如果你打算用它来批量回填大量历史数据,这一点值得留意。
如果一次投递失败
无效的 Zap URL、已暂停的 Zap,或 Zapier 的临时故障,在 MailInApp 这一侧都会被记为一次投递失败。接收端返回重定向而不是正常响应同样会被视为失败——MailInApp 在投递 Webhook 时不会跟随重定向。响应太慢的投递同样会失败:它只有 5 秒的时间来响应,超时就会被 MailInApp 视为失败。投递会按退避策略自动重试,任何仍然失败的投递都会显示在响应页面的失败的投递下,并带有一个手动的重新投递按钮——完整的重试计划见投递语义。任何东西都不会被静默丢弃:互动本身总是首先存储在 MailInApp 中,无论 Webhook 投递是否成功。