2026-09-05 · 原文发布日
逾期发票的智能催款跟进
这个n8n模板让催款有分寸:每天早上读Google Sheets里逾期且未暂停的发票,逐张查Gmail最近与客户的往来邮件。若同阶段催款邮件已发过就只对账标记;若近期有对话则顺延;否则把往来记录交给OpenAI判断该发、该缓还是转人工,判定为发才生成对应阶段的提醒邮件发出,并把阶段和下次跟进日期写回表格,全程有置信度门槛和重复检查。
原文要点
原模板每天上午9点(美国中部时区)运行,从Google Sheets的Invoices页读取逾期且未暂停、未人工介入的发票;对每张发票在Gmail中检索与客户的近期往来,若同阶段催款主题已发过则只对账标记,近期有对话则顺延;否则把邮件线程摘要交给OpenAI分类为SEND/DEFER/HUMAN,带置信度门槛并校验JSON输出;判为SEND才生成对应阶段的催款邮件经Gmail发出,把已发阶段和下次跟进日期写回表格。配置项含表格ID、签名、回溯窗口、近期对话小时数。
这次做成什么
搭建一条每日运行的逾期发票催款流水线:表格筛选→Gmail查重与近期对话检测→OpenAI三分类→按阶段发信→回写表格,全程有重复检查和置信度门槛,避免重复催款打扰客户。
准备什么
- n8n实例(自托管或云端均可)
- Google Sheets、Gmail、OpenAI三组凭据已配置
- 一个含Invoices工作表的Google表格,含Invoice ID唯一键等模板要求的列
- OpenAI账户可用的模型ID,需与模板Configuration步骤中的模型一致
- 用于测试的合成发票数据,不要用真实客户邮箱
具体怎么做
建发票表
在Google Sheets新建表格,建名为Invoices的工作表,按模板说明列出必需列:Invoice ID(唯一键)、客户邮箱、金额、到期日、当前阶段、收款状态(paid/void/closed/on hold/human review等)、下次跟进日期等,列名须与模板注释完全一致,先填3至5条合成测试行。
配凭据与参数
在n8n中分别添加Google Sheets、Gmail、OpenAI凭据;打开模板的Configuration节点,填入Sheet ID、工作表名、发件人姓名与签名、Gmail回溯窗口、近期对话小时数(例如72小时),并确认OpenAI模型ID是你账户可用的模型。
理解筛选与查重逻辑
流程每日9点(America/Chicago)触发,只取未付/未作废/未暂停/未人工介入且逾期时长达到下一催款阶段的行;对每张发票在Gmail搜索与该客户的近期邮件,若发现同阶段主题邮件已发过,则标记为已催款并更新表格;若窗口期内有新对话则顺延下次跟进。
配置OpenAI分类
把邮件线程压缩摘要发给OpenAI,要求只输出JSON,含decision(SEND/DEFER/HUMAN)、confidence、reason字段;流程对输出做解析校验和置信度门槛判断,低于门槛或解析失败转人工标记。
发信与回写
判定SEND时按当前阶段生成固定结构的提醒邮件(可含一句安全的往来引用),经Gmail发出,并把已发阶段和下次跟进日期写回该行;DEFER/HUMAN则更新收款状态和跟进时间或转入人工审核。
先草稿模式测试
先把Gmail发送改为存草稿或人工确认,用合成发票跑几遍,核对表格回写是否正确、重复运行不会重复发信,确认无误后再开启定时。
可直接复制的材料
OpenAI催款判定提示词(本站独立编写)
本站按原流程逻辑独立编写的提示词,双花括号占位需替换为实际字段;置信度阈值建议先在0.7左右起步并在模板Configuration中核对默认值。
你是应收账款的催款决策助手。下面是某张逾期发票的信息和与客户的近期邮件往来摘要。请判断下一步动作,只能输出一个JSON对象,不要输出任何其他文字。
判断规则:
- SEND:客户近期没有回复或明确表示会付款但未付,适合按当前阶段发出提醒邮件。
- DEFER:客户近期正在沟通(如承诺付款日期、提出异议、要求延期),应暂缓催款。
- HUMAN:出现争议、法律措辞、投诉或无法判断的情况,转人工处理。
输出格式:{"decision":"SEND|DEFER|HUMAN","confidence":0到1之间的小数,"reason":"一句中文理由"}
发票信息:发票号={{invoice_id}},金额={{amount}}元,逾期天数={{days_overdue}}天,当前催款阶段={{stage}}
邮件往来摘要:{{thread_summary}}Invoices测试表(合成CSV)
全部为虚构测试数据,邮箱请用你自己的测试别名;列名需以模板注释中要求的实际列名为准。
invoice_id,client_email,amount,due_date,stage,collection_status,next_followup_date
INV-9001,test-a@example.com,12000,2026-08-01,stage1,open,
INV-9002,test-b@example.com,5800,2026-08-10,stage1,open,
INV-9003,test-c@example.com,30000,2026-07-20,stage2,human_review,
INV-9004,test-d@example.com,9600,2026-08-15,stage1,on_hold,
INV-9005,test-e@example.com,4500,2026-08-05,stage1,paid,Configuration节点建议值(示例)
键名为本站示意,实际参数名以模板Configuration节点为准;lookback_days与recent_conversation_hours含义为Gmail回溯天数与近期对话判定窗口。
{
"google_sheet_id": "替换为你的表格ID",
"sheet_name": "Invoices",
"sender_name": "财务部 李敏",
"signature": "XX公司财务部\n电话:010-00000000",
"lookback_days": 14,
"recent_conversation_hours": 72
}输入与输出示例
本站虚构演示,非作者运行结果;日期和置信度为示意设定。
输入
INV-9002,客户test-b@example.com,金额5800元,逾期26天,当前stage1;Gmail线程摘要:客户8月28日回复“发票收到,本月资金紧张,9月10日前安排付款”,此后无新邮件。对应输出
OpenAI输出{"decision":"DEFER","confidence":0.86,"reason":"客户已承诺9月10日前付款,属于正在沟通"};流程不发催款邮件,把该行collection_status更新为deferred,next_followup_date设为2026-09-11。做完检查这些
- 连续两天定时运行后,同一发票不会重复收到同阶段催款邮件
- OpenAI返回非JSON或confidence低于门槛时,该行被标记为人工审核而不是发信
- 发信成功后表格中stage与next_followup_date被正确更新
- on_hold、paid、human_review状态的行在筛选阶段就被排除
- 近期对话窗口内有客户新邮件的发票被顺延而非催款
容易卡住的地方
- Invoices表的列名必须与模板注释完全一致,差一个字符筛选就会失效
- 模板定时为America/Chicago上午9点,国内使用需换算或改时区
- OpenAI模型ID必须换成你账户可用的模型,否则节点直接报错
- 默认行为是真发邮件,未先切换草稿模式测试可能打扰真实客户
- Gmail回溯窗口太短会漏掉客户近期回复,导致重复催款
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Follow up on overdue invoices with OpenAI, Gmail and Google Sheets
- 原作者
- Sean Jastillano
- 原始发布日期
- 2026-09-05T13:25:57.000Z
- 来源
- https://n8n.io/workflows/19245