2026-10-13 · 原文发布日
分析Salesforce商机的干系人参与风险
这条n8n流程在Salesforce商机更新时触发,拉取关联联系人角色,按金额和阶段推算应有的干系人配置,再搜索Gmail往来邮件和Google Calendar会议记录拼出互动清单,交给OpenAI输出结构化的缺口与风险分析。结果写回商机自定义字段(风险分、缺失角色等),风险分超过61就向Slack发高危提醒,阈值和角色矩阵都可按自家销售方法论调整。
原文要点
这是n8n模板库第20845号工作流,作者WeblineIndia,免费模板。它在Salesforce商机被更新时触发,取回商机详情和关联的Opportunity Contact Roles,按金额与阶段推算应有的干系人角色,收集客户联系人邮箱域名后搜索绑定的Gmail邮箱往来邮件、拉取指定Google Calendar的会议,归一成互动清单后交给OpenAI(默认gpt-4o-mini)输出结构化JSON缺口与风险分析,经解析校验后写回商机五个自定义字段,风险分达到61及以上就向Slack发高危提醒。模板说明角色矩阵、阈值、CRM均可替换,并指出若商机没挂任何联系人角色,所有必需角色都会判为缺失。
这次做成什么
复刻一条“商机更新→干系人参与风险分析→写回CRM并Slack告警”的n8n流程。为便于在没有完整Salesforce环境时先练手,本页另给一套本站独立设计的离线练习:用合成商机JSON和假邮件/会议清单走通“期望角色矩阵→互动归一→OpenAI结构化分析→阈值告警”全链路,确认逻辑后再替换为真实节点。
准备什么
- n8n账号,并能添加Salesforce、Gmail、Google Calendar、OpenAI、Slack五种凭据
- Salesforce Opportunity对象已建好五个自定义字段:Stakeholder_Engagement_Status__c、Last_Stakeholder_Analysis__c、Stakeholder_Risk_Score__c、Stakeholder_Engagement_Insight__c、Missing_Stakeholders__c
- OpenAI计费账户,可用gpt-4o-mini或同级模型;Slack工作区及目标告警频道
- 练手阶段可只用n8n加OpenAI,用本页合成数据代替真实CRM与邮箱
具体怎么做
定义期望干系人角色矩阵
按原模板说明,角色矩阵在Determine Expected Stakeholder Roles节点内维护。先用本站设计的示例规则练手:金额≥25万美元要求Economic Buyer与Executive Sponsor,≥10万要求Procurement,所有进入Negotiation阶段的商机必须有Legal与Champion。在n8n里用Code节点实现:读取商机amount和stage,输出expectedRoles数组。矩阵数值是示例,请按自家销售方法论改。
汇总联系人与互动清单
真实环境用Salesforce节点读取Opportunity Contact Roles拿到联系人角色与邮箱,Gmail节点按联系人邮箱搜索往来邮件,Google Calendar节点拉指定日历的会议。练手时跳过这三步,直接用本页材料里的合成互动JSON喂给后续节点。随后用Code节点把邮件和会议归一成统一结构:{type, date, contact_email, role, direction},便于交给模型统计每个角色最近互动时间。
调用OpenAI输出结构化风险分析
接OpenAI节点(Chat Model,选gpt-4o-mini),System消息用本页材料中的分析提示词,要求只输出规定字段的JSON;User消息填入商机名称、金额、阶段、expectedRoles、实际联系人角色、互动清单。其后按原模板思路加解析与校验Code节点:JSON.parse失败或缺字段时抛错,不直接写CRM。
写回Salesforce并做Slack阈值告警
校验通过后接Salesforce节点(Update Opportunity),把status、score、insight、缺失角色列表、当前时间戳分别映射到五个自定义字段。再接IF节点判断score≥61:为真时接Slack节点向告警频道发消息,内容含商机名、分数、缺失角色和负责人;为假时静默结束。阈值61来自原模板默认,可下调。
用合成数据端到端演练
在激活真实触发器前,把触发器换成Manual Trigger,输入本页示例商机(32万美元、Negotiation阶段、只挂了Champion一名联系人、近45天无Economic Buyer互动),确认输出JSON的score≥61、missingRoles含Economic Buyer与Procurement,且Slack收到告警。通过后再换回Salesforce触发器小流量上线。
可直接复制的材料
期望角色矩阵与互动归一脚本(Code节点用)
本站编写的练习脚本;原模板的矩阵节点内部规则未公开,金额阈值250k等取自其用例描述
// 本站独立设计的练习脚本,阈值与原模板默认值无关,请自行校准
const opp = $json.opportunity;
const expected = ['Champion'];
if (opp.amount >= 250000) expected.push('EconomicBuyer', 'ExecutiveSponsor');
if (opp.amount >= 100000) expected.push('Procurement');
if (['Negotiation', 'Contracting'].includes(opp.stage)) expected.push('Legal');
const roles = (opp.contacts || []).map(c => c.role);
const missing = expected.filter(r => !roles.includes(r));
const interactions = (opp.emails || []).map(e => ({ type: 'email', date: e.date,
contact_email: e.from, role: e.role, direction: e.direction }))
.concat((opp.meetings || []).map(m => ({ type: 'meeting', date: m.date,
contact_email: m.organizer, role: m.role, direction: 'both' })));
interactions.sort((a, b) => a.date < b.date ? 1 : -1);
return [{ json: { expectedRoles: expected, missingRoles: missing, interactions } }];干系人风险结构化分析提示词
本站独立编写,打分口径是练习参考值而非原模板内部算法;模型名gpt-4o-mini取自原文Setup说明
你是B2B销售方法论分析师(熟悉MEDDPICC)。根据输入的商机背景、期望干系人角色、实际联系人角色和近期邮件/会议互动清单,评估干系人参与缺口与成交风险。只输出如下JSON,不要输出任何其他文字:
{"risk_score":0到100的整数,"status":"Low|Medium|High","missing_stakeholders":["角色名"],"engagement_insight":"100字以内中文结论:谁缺位、哪个角色超过30天无互动、对当前阶段的具体风险","next_actions":["最多3条给销售的动作建议"]}
打分参考:每缺一个关键角色加20分,关键角色超过30天无互动加15分,Negotiation阶段缺Legal或Procurement额外加10分,上限100。
商机:{{ $json.opportunity_context }}
期望角色:{{ $json.expectedRoles }}
实际联系人与互动:{{ $json.interactions }}合成商机与互动练习数据(JSON)
本站虚构数据;Economic Buyer最后一次互动是2026-08-28,刻意超过30天以触发高风险路径
{"opportunity":{"id":"006TEST0001","name":"Acme集团CRM扩容项目","amount":320000,"stage":"Negotiation","owner":"rep.chen@example.com","contacts":[{"name":"王芳","email":"wangfang@acme.example","role":"Champion"}],"emails":[{"date":"2026-10-08","from":"wangfang@acme.example","role":"Champion","direction":"inbound"},{"date":"2026-09-20","from":"wangfang@acme.example","role":"Champion","direction":"outbound"}],"meetings":[{"date":"2026-10-05","organizer":"wangfang@acme.example","role":"Champion"},{"date":"2026-08-28","organizer":"liwei@acme.example","role":"EconomicBuyer"}]}}输入与输出示例
本站虚构演示,JSON为按提示词风格的示意输出,非OpenAI实际返回
输入
把上面的合成商机JSON喂入练习链路:金额32万美元、Negotiation阶段,仅挂Champion王芳一名联系人,Economic Buyer李伟最后一次会议是2026-08-28,距今(2026-10-13)46天。对应输出
归一脚本输出expectedRoles含Champion、EconomicBuyer、ExecutiveSponsor、Procurement、Legal,missingRoles含其余四个。OpenAI按提示词输出的示意JSON:{"risk_score":85,"status":"High","missing_stakeholders":["EconomicBuyer","ExecutiveSponsor","Procurement","Legal"],"engagement_insight":"仅Champion保持活跃,Economic Buyer已46天无互动,Negotiation阶段缺Legal与Procurement,合同谈判存在审批层断联与法务卡点风险。","next_actions":["请Champion引荐Economic Buyer并两周内安排方案确认会","主动向客户方索要采购流程与法务接口人","暂缓推进至Contracting直到至少补齐Legal"]}。因85≥61,IF节点走真分支,Slack频道收到含商机名与缺失角色列表的告警。做完检查这些
- 校验节点能拦截非法JSON:把模型输出手动改成带解释文字的格式时流程报错且不写Salesforce
- 合成数据跑出的missing_stakeholders必须包含EconomicBuyer、Procurement和Legal,且risk_score不低于61从而触发Slack分支
- Salesforce商机记录上五个自定义字段全部被更新,Last_Stakeholder_Analysis__c为本次运行时间戳
- 把IF阈值从61改成50后重跑,中风险样例也能收到告警,证明阈值可调
容易卡住的地方
- 原模板明确指出:商机上一个Contact Role都没挂时,所有必需角色都会被判缺失,所以前提是销售团队平时认真维护联系人角色,否则告警会刷屏
- Gmail搜索串在联系人过多时可能超出长度限制,原模板会回退到label:SENT的默认过滤,互动统计可能不全,解读风险分时要注意
- Slack告警阈值61是原模板默认值, mid-market团队可按其建议下调;本页脚本的金额阈值是练习示例,不是原模板内部数值
- OpenAI调用按token计费,具体费用请以账户为准;Salesforce自定义字段名必须与原文列出的一致,否则Update节点报错
- 本文未核对原模板矩阵节点与解析节点的内部代码,接入真实CRM前请在模板里逐节点确认字段映射
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Analyze Salesforce stakeholder risk with Gmail, Google Calendar, OpenAI and Slack
- 原作者
- WeblineIndia
- 原始发布日期
- 2026-10-13T06:05:01.760Z
- 来源
- https://n8n.io/workflows/20845