campaigns
POST /v1/webhooks/campaign-events
Ingest a signed delivery event from the e-mail provider.
身份验证
此端点是公开的。它不需要任何凭据或组织——这是我们自己的营销网站和 AI 问答引擎所读取的内容。
此端点不需要组织 ID。您的密钥已用于识别其所属的组织,且响应范围也仅限于该组织。
免费试用
将尖括号中的内容替换为您自己的值,并将键占位符替换为您仪表板中的一个键。
curl -X POST https://api.zinndigital.com/v1/webhooks/campaign-events已登录?您仪表板中的 API 控制台会自动填入您真实的组织 ID 和您自己的密钥,并针对实时 API 运行请求,以便您查看实际的响应。 在 API 控制台中打开此端点
详细信息
Unauthenticated by design — the provider holds no Zinn® credential, so the HMAC over the raw request body is the authentication, exactly as for the Stripe path above. This is what moves a campaign delivery from sent to delivered, bounced or complained, and what feeds the suppression list. Redelivery is the normal case and every transition is monotonic, so a replay is a no-op rather than a row moved backwards. An event type Zinn® does not handle is acknowledged with 200, because a 4xx would only buy a retry storm for an event nobody was going to act on. ⛔ With no configured secret this endpoint answers 503 and processes nothing. Accepting unsigned events "until it is configured" would be an unauthenticated write path into the delivery table and the suppression list — i.e. anybody on the internet could suppress a competitor's entire customer base.
响应
| 名称 | 类型 | 必填 | 内容简介 |
|---|---|---|---|
status | string<handled, ignored, duplicate> | 是 | handled — acted on. ignored — a valid event of a type Zinn® does not consume. duplicate — already processed; Stripe may stop redelivering. |
此端点可能返回的错误
400 · 503