AI PLAY玩法更新持续收录
← 回到更新流

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 表格
  • 已验证的发件域名和发件邮箱

具体怎么做

  1. 建 Supabase 两张表

    在 Supabase 建 clients 表(至少含客户名、邮箱、表格链接、启用状态)和 brief_history 表(简报正文与配套指标),字段名需与下载后的工作流映射逐项对齐。

  2. 准备客户 Revenue 表

    每个客户的 Google Sheet 建名为 Revenue 的工作表,列固定为 Date、Amount、Category、Status 四列,先用本站合成 CSV 导入做联调数据。

  3. 配置四类凭据

    在 n8n 添加 Supabase、Google Sheets OAuth2、SMTP 凭据,以及 Anthropic 的 HTTP Header Auth(x-api-key 头),并把 Anthropic 请求里的模型 ID 改成你实际可用且已核对的模型。

  4. 替换占位符

    把两处邮件节点和 webhook 响应里的 REPLACE_WITH_YOUR_APP_DOMAIN、REPLACE_WITH_VERIFIED_SENDER@example.com 全部换成真实域名与已验证发件人。

  5. 配置注册 webhook 密钥

    在 n8n 设置 header-auth 密钥,调用方请求时必须带该请求头,否则拒绝;先用本站的测试 JSON 走通开户→返回仪表盘 URL→发欢迎邮件全流程。

  6. 核对时区并测试激活

    确认工作流时区与 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