出站 Webhook
在 CRM 中发生某件事的瞬间通知另一个系统。您登记一个地址,勾选关心的事件,只要其中之一发生,SellioCRM 就会发送一个带签名 JSON 的 POST 请求。它适合与自动化工具、您自己的后端,或公司的 ERP 做集成。
靠定时轮询做集成既慢又贵:得有人每分钟去问一次有没有变化。Webhook 正好反过来:由 CRM 主动通知。当一条记录被创建、一项审批有了结论,或者有人回复了一条节奏时,系统就会向您指定的地址发起一次请求,并带上该事件的数据。
如何登记
- 打开设置,进入渠道与沟通分组。
- 点击 Webhook。
- 在目标地址中填写接收调用的地址,须以 https 开头。
- 在事件中勾选您关心的事件。默认已勾选 record.created 和 record.updated。
- 点击创建 Webhook。
- 复制 Webhook 密钥卡片中显示的密钥。它只显示这一次。
可用的事件
- 记录:record.created 和 record.updated,在您任意对象的记录被创建和被更新时触发。
- 节奏与流程:flow.enrolled、flow.message_sent、flow.replied、flow.step_completed 和 flow.completed。
- 审批:approval.requested、approval.approved 和 approval.rejected。
如何验证这次调用来自 SellioCRM
每次调用除内容类型外还会带两个请求头:x-sellio-event,内容是事件名称;以及 x-sellio-signature,格式为 sha256 后接用您的密钥对请求原始正文计算出的认证码。请在您的服务器上,用收到的正文重新计算这个码并作比对。对不上就丢弃:来源不是您的 CRM。
POST https://your-system.com/webhook
x-sellio-event: record.created
x-sellio-signature: sha256=<用您的密钥计算出的认证码>
content-type: application/json
{
"event": "record.created",
"tenantId": "...",
"objectApiName": "opportunity",
"recordId": "...",
"data": { "name": "安德拉德金属制品", "amount": 48000 },
"timestamp": "2026-03-12T15:42:10.000Z"
}Example: 一家分销商希望在商机赢单的瞬间就在 ERP 中开出订单。它登记了集成中间件的地址,勾选 record.updated,保存好密钥,然后在中间件里校验签名、查看 data 中的阶段字段,只有当阶段为赢单时才创建订单。
最近的投递记录
在 Webhook 列表下方,最近投递表会显示最近几次发送尝试,包含时间、事件和结果:成功时是带响应码的绿色标记,失败时是带错误信息的红色标记。地址无法访问或服务器返回错误,都是从这里发现的。
限制与行为
- 发送是即时进行的,最长等待四秒,并且不会阻塞保存记录的那个人的操作。
- 系统不会自动重试。如果您的服务器不可用,该事件会在投递表中显示为失败,并且不会重发。请在您这一侧做好容错设计。
- 只接受指向公网的 http 和 https 地址。内网地址、局域网地址或云元数据服务地址出于安全考虑会被拒绝。
- 每个 Webhook 旁边的启用和暂停开关可以在不删除配置的情况下中断发送。
- 密钥无法再次显示。如果丢失了,请删除该 Webhook 并新建一个。
谁可以操作
创建、暂停和删除 Webhook 需要管理设置的权限,因为这项操作会把您记录中的数据发送到 CRM 之外。投递列表仅限于您自己的组织。
常见问题
- 我收到了事件,但正文看起来不完整:每种事件都带有各自的一组字段。记录类事件带对象、记录标识和数据;流程类事件带流程、加入记录和记录;审批类事件带申请、主题和状态。
- 我可以接收删除事件吗?可用事件就是页面上显示的那些。
- 签名总是对不上:请对收到的原始正文计算认证码,不要把 JSON 重新序列化,因为哪怕空格有一点变化,结果都会不同。