跳转到内容

Webhooks

Webhook 是您服务器上的一个地址,当发生某些事情时 Posty5 会调用它。您的系统无需向 Posty5 查询新的访问,而会在几秒内收到通知,并附带可验证的 JSON 事件。

  1. 在 Posty5 控制台中,打开账户设置并选择 Webhooks。

  2. 添加一个端点,输入其 HTTPS 地址并选择它接收的事件。

  3. 选择全部或部分链接和二维码、是否计入机器人访问,以及事件是逐个到达还是批量到达。

  4. 保存,然后复制签名密钥。它只显示这一次。

  5. 使用发送测试来检查您的服务器能否接收并验证 webhook.test 事件。

地址必须使用 HTTPS 且可从互联网访问。私有和本地网络地址会被拒绝,且不会跟随重定向。您最多可以拥有 10 个端点。

Event
short_link.visited有人打开了您的某个短链接,包括通过该链接的二维码图片打开。
short_link.visits_milestone短链接达到了您设置的某个访问次数(最多 10 个值)。
qr_code.scanned有人扫描了您的某个动态二维码。
qr_code.scans_milestone二维码达到了您设置的某个扫描次数。
webhook.test仅在您使用发送测试时发送。

每个事件都是一个 JSON POST,包含 id、类型、API 版本、创建时间及其数据,即链接或二维码以及访问信息。

{
"id": "evt_6700f1c2a9e4b51d2c3f0a11",
"type": "short_link.visited",
"apiVersion": "2026-10-01",
"createdAt": "2026-10-04T12:00:00.000Z",
"data": {
"target": {
"type": "shortLink",
"id": "66f0c2a9e4b51d2c3f0a1122",
"code": "aB3xY9",
"url": "https://pst5.com/_aB3xY9",
"name": "Spring sale",
"destinationUrl": "https://shop.example/sale",
"tag": "spring",
"refId": null
},
"visit": {
"at": "2026-10-04T11:59:59.120Z",
"channel": "qr",
"country": "EG",
"deviceType": "mobile",
"os": "Android",
"browser": "Chrome",
"referrerHost": null,
"language": "ar",
"isBot": false,
"outcome": "redirect"
}
}
}

里程碑事件携带 data.milestone,其中包含指标、达到的值和达到时间,不包含访问信息。

使用批量投递时,一个类型为 batch 的 POST 会在 data.events 中携带最多 500 个事件。

事件从不包含访问者的 IP 地址、完整的用户代理、完整的来源地址、访问者标识符或您的账户 ID。除非您选择包含,否则机器人访问会被排除。

Posty5 按照 Standard Webhooks 规范,使用您端点的密钥为每次投递签名,签名位于三个标头中。请拒绝任何签名不匹配或时间戳超过 5 分钟的请求。

  • webhook-id
  • webhook-timestamp
  • webhook-signature

在 Node.js 中,使用 @posty5/webhooks 包。

import { verifyWebhookSignature } from "@posty5/webhooks";
// rawBody is the request body exactly as received, before JSON parsing.
const event = verifyWebhookSignature({
payload: rawBody,
headers: request.headers,
secret: process.env.POSTY5_WEBHOOK_SECRET,
});

在 .NET 中,使用 Posty5.Webhooks 包。

using Posty5.Webhooks;
var webhookEvent = WebhookSignature.Verify(rawBody, headers, secret);

在其他任何语言中,任何 Standard Webhooks 库都可以用您的密钥验证 Posty5 事件。

  • 请在 10 秒内以任意 2xx 状态响应。其他任何响应都算作失败。
  • 失败的投递会在 30 秒、2 分钟、10 分钟、1 小时、6 小时和 24 小时后重试,之后放弃。
  • 每次重试都携带相同的 webhook-id,因此您的服务器可以忽略已处理过的事件。
  • 端点在至少 24 小时内连续 20 次投递失败后会被关闭,如果它响应 410 Gone 则立即关闭。您会收到通知,并可以在控制台中重新开启它。
  • 端点的投递记录会显示每次尝试及其状态和您服务器的响应,并允许您再次发送某次投递。

如果密钥可能已泄露,请从端点的菜单中轮换它。在 24 小时内,投递会携带两个签名,每个密钥一个,以便您更新服务器而不会错过事件。

Posty5 Trigger 节点会为您创建并验证端点。 n8n Posty5 Trigger