2026-09-24 · 原文发布日
n8n 工作流:每天给客户发经营简报邮件
该 n8n 模板每天 07:00 从 Supabase 取启用中的客户逐个处理:读各客户 Google Sheets 的 Revenue 页,算近 7 天对前 7 天的营收、逾期和失败交易数及分类明细,交 Claude 生成白话经营简报,经 SMTP 发邮件并附仪表盘链接,简报和指标存入 Supabase 历史表,单个客户失败会跳过不影响其他人。另有带密钥校验的注册 webhook 用于新客户开户和欢迎邮件。仅支持自托管 n8n。
原文要点
该模板作者 Ruth Olatunji,仅限自托管 n8n:每天 07:00 定时从 Supabase 取启用中的客户逐个处理,读取各客户 Google Sheets 的 Revenue 页,计算近 7 个完整日对前 7 日的营收、逾期/失败/未付款交易数和分类明细,交 Anthropic Claude 生成白话简报,经 SMTP 发邮件并附仪表盘链接,简报与指标写入 Supabase brief_history 表,单个客户读表或 Claude 失败会跳过继续下一个。另有带请求头密钥校验的注册 webhook,用于建档、返回仪表盘 URL 和发欢迎邮件。
这次做成什么
在自托管 n8n 上搭好「每日客户经营简报」链路:定时触发→逐客户读表算指标→Claude 写简报→SMTP 发信→历史落库,并配好受保护的注册 webhook。
准备什么
- 自托管 n8n 实例(模板要求 Self hosted n8n,n8n Cloud 不适用,勿在 Cloud 上套用)
- Supabase 项目及建表权限、Google Sheets OAuth2、SMTP 发信账号、Anthropic API Key
- 每个客户一份含 Revenue 工作表的 Google 表格
- 已验证的发件域名和发件邮箱
具体怎么做
建 Supabase 两张表
在 Supabase 建 clients 表(至少含客户名、邮箱、表格链接、启用状态)和 brief_history 表(简报正文与配套指标),字段名需与下载后的工作流映射逐项对齐。
准备客户 Revenue 表
每个客户的 Google Sheet 建名为 Revenue 的工作表,列固定为 Date、Amount、Category、Status 四列,先用本站合成 CSV 导入做联调数据。
配置四类凭据
在 n8n 添加 Supabase、Google Sheets OAuth2、SMTP 凭据,以及 Anthropic 的 HTTP Header Auth(x-api-key 头),并把 Anthropic 请求里的模型 ID 改成你实际可用且已核对的模型。
替换占位符
把两处邮件节点和 webhook 响应里的 REPLACE_WITH_YOUR_APP_DOMAIN、REPLACE_WITH_VERIFIED_SENDER@example.com 全部换成真实域名与已验证发件人。
配置注册 webhook 密钥
在 n8n 设置 header-auth 密钥,调用方请求时必须带该请求头,否则拒绝;先用本站的测试 JSON 走通开户→返回仪表盘 URL→发欢迎邮件全流程。
核对时区并测试激活
确认工作流时区与 07:00 cron 符合预期,先手动跑一次完整日结,确认失败跳过逻辑正常,再激活定时。
可直接复制的材料
Revenue 工作表合成测试数据
本站合成数据,仅用于联调;导入客户 Google Sheet 的 Revenue 页后替换为真实交易。
Date,Amount,Category,Status
2026-09-15,12800,订阅,paid
2026-09-16,8600,咨询,paid
2026-09-17,4200,订阅,failed
2026-09-18,15300,订阅,paid
2026-09-19,6700,咨询,overdue
2026-09-20,9100,订阅,paid
2026-09-21,11400,咨询,paid
2026-09-22,7800,订阅,unpaid注册 webhook 测试请求体
本站虚构示例,调用时须在请求头带上你在 n8n 配置的 header-auth 密钥;字段名以实际模板映射为准。
{
"business_name": "示例咖啡馆",
"owner_email": "owner@example-cafe.test",
"sheet_url": "https://docs.google.com/spreadsheets/d/示例表格ID/edit"
}Supabase 建表字段清单
本站根据模板描述整理的最低字段建议,不是原工作流文件;确切字段名和类型以下载模板中的映射为准。
clients: id, business_name, owner_email, sheet_url, is_active
brief_history: id, client_id, brief_text, metrics_json, created_at输入与输出示例
本站虚构演示,非模板实际运行结果;URL 结构和响应字段以真实模板为准。
输入
用上一条 webhook 测试体、带正确密钥请求头 POST 到 webhook URL,客户表为空的状态下首次开户。对应输出
示意响应:{"dashboard_url": "https://你的域名/dashboard/示例客户ID", "status": "created"},同时 owner_email 收到一封欢迎邮件,clients 表新增一行 is_active 为真的记录。做完检查这些
- 手动触发一次后,测试客户收到含仪表盘链接的简报邮件
- brief_history 表出现与该客户对应的一行,含简报文本和指标
- 故意把某客户 sheet_url 改错后重跑,该客户被跳过且其他客户照常收到邮件
- 不带密钥请求头调用 webhook 被拒绝,带密钥则成功建档
- 邮件中不再出现任何 REPLACE_WITH_ 开头的占位符
容易卡住的地方
- 模板要求自托管 n8n,Cloud 用户不要直接套用
- 单个客户失败会被静默跳过,必须定期查执行日志和 brief_history 缺口
- 07:00 cron 受工作流时区影响,跨时区部署先核对
- Claude 调用和 SMTP 发信都可能产生各自费用,模板本身免费不代表链路零成本
- 统计口径是近 7 个完整日对前 7 日,当天数据不计入
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Email daily revenue ops briefs with Google Sheets, Supabase, and Claude
- 原作者
- Ruth Olatunji
- 原始发布日期
- 2026-09-24T11:05:22.189Z
- 来源
- https://n8n.io/workflows/19902