Billing/Webhooks
Webhook Security, Event Types, & Best Practices
Webhook Signature Verification
To ensure authenticity, Acta signs every webhook request using HMAC-SHA256. You must verify this signature to confirm that the payload came from Acta and wasn't tampered with.
Headers in Every Webhook Request:
Header | Description |
---|---|
x-actalink-signature | Final HMAC-SHA256 signature of the timestamp and payload |
x-actalink-timestamp | Unix timestamp (in milliseconds) used in the signature |
How to Verify the Webhook Signature:
Extract the following from the request
x-actalink-signature
header (Acta's signature)x-actalink-timestamp
header (timestamp used during signing)- Raw JSON request body (exactly as received, not parsed)
Recompute the signature
- Wrap the raw payload in an object.
- Serialize it with
JSON.stringify()
(no added whitespace). - Compute HMAC-SHA256 of the stringified wrapper using your webhook secret.
- Concatenate the timestamp + "." + that hash.
- Compute HMAC-SHA256 of that final string.
Compare your computed signature with the one from x-actalink-signature.
Optionally, reject the webhook if the timestamp is too old (e.g. older than 5 minutes) to prevent replay attacks.
Node.js Example
const crypto = require("crypto");
function verifyWebhookSignature({
rawBody,
timestamp,
receivedSignature,
secret,
}) {
const payload = JSON.parse(rawBody);
const wrapped = JSON.stringify({ payload });
const intermediateSig = crypto
.createHmac("sha256", secret)
.update(wrapped)
.digest("hex");
const finalSig = crypto
.createHmac("sha256", secret)
.update(`${timestamp}.${intermediateSig}`)
.digest("hex");
return crypto.timingSafeEqual(
Buffer.from(finalSig),
Buffer.from(receivedSignature)
);
}
const rawBody = JSON.stringify({
id: "58448504-b758-4586-a6da-d8f1cb3eef99",
eventType: "subscription.billing.scheduled",
eventData: {
data: {
id: "sub_7M9lH66tShtMfLtDyz38WCuoWCuJnBt7",
token: {
name: "USD Coin",
amount: "0x249f0",
symbol: "USDC",
address: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
chainId: 137,
fiatISO: "USD",
logoURI: "https://api.acta.link/deposit/v1/logos/usdc.png",
decimals: 6,
logoSourceURI: "https://api.acta.link/deposit/v1/logos/usdc.png",
},
status: "ONGOING",
chainId: 137,
network: {
name: "Polygon",
chainId: 137,
},
currency: "USDC",
startedAt: "2025-08-29T15:15:22.000Z",
transaction: null,
feeInclusive: false,
intervalUnit: "5mins",
tokenAddress: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
intervalCount: 2,
senderAddress: "0x061BA68bc8208F4AddBeE86F74F17D77129cCF70",
nextExecutionAt: "2025-08-29T15:15:22.000Z",
receiverAddress: "0xEBFa37194fA74bA3e8195446948FC3B9c72E08AB",
latestIntervalCount: 0,
},
plan: {
id: "prod_jy7Z3JdTuTf1uBqhFFl7x23AdoPJjIRX",
name: "Hooi Nucleus",
price: {
id: "price_kBN95XmlS6kUCNJu98ZpAoc4WT6UX3A2",
price: "0.15",
currency: "USDC",
currencyType: "crypto",
intervalUnit: "5mins",
intervalCount: 2,
},
status: "ACTIVE",
imageUrl: "",
description: "Monthly subscription for Hooli Nucleus",
paymentType: "recurring",
},
type: "subscription",
orderId: "ord_7NcE60Ug3muZXHkVkaOefvf4pRYO1I3i",
paylink: {
id: "paylink_xsOVX8sNubCCpPSsmMlmy7llRAkhHyvM",
name: "Hooli Nucleus Subscription",
status: "active",
paylinkType: "subscription",
},
metadata: null,
orderStatus: "ONGOING",
organisationId: "SwHuo5b9UCc43wFCphlC0uQCkQQVvcga",
},
createdAt: "2025-08-29T15:15:35.830Z",
});
const timestamp = 1755354122183; // x-actalink-timestamp
const receivedSignature =
"e5d8cf0d6cd3294adec97c1eaa2cfa42a5d3e6a9f421530d231bdf57a56222af"; // x-actalink-signature
const secret = "..."; // from Acta HUB dashboard
const result = verifyWebhookSignature({
rawBody,
timestamp,
receivedSignature,
secret,
});
if (result) {
console.log("✅ Signature is valid");
} else {
console.log("❌ Signature is invalid");
}
Webhook Event Types
Acta Deposit supports the following webhook event types:
single.billing.executed
{
"id": "451551f7-ce83-4be7-a604-d707e16d087b",
"eventType": "single.billing.executed",
"eventData": {
"data": {
"id": "txn_usCdyV5ULMZWkM02xOLlyFo2pG2ULYor",
"token": {
"name": "USD Coin",
"amount": "0x1fbd0",
"symbol": "USDC",
"address": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"chainId": 137,
"fiatISO": "USD",
"logoURI": "https://api.acta.link/deposit/v1/logos/usdc.png",
"decimals": 6,
"logoSourceURI": "https://api.acta.link/deposit/v1/logos/usdc.png"
},
"status": "EXECUTED",
"chainId": 137,
"network": {
"name": "Polygon",
"chainId": 137
},
"currency": "USDC",
"transaction": {
"id": "txn_usCdyV5ULMZWkM02xOLlyFo2pG2ULYor",
"fee": "0x2f6f9",
"hash": "0x08d3fb1658a0bda3258d46435f8591b5e87d53e852f9e56ace7285bac8a6121f",
"amount": "0x1fbd0",
"status": "EXECUTED",
"chainId": 137,
"paylinkId": "paylink_eU6U4oJKxe5Xp3d2HgUpusQKB8S3W1gF",
"executedAt": "2025-08-29T15:13:42.331Z",
"executedBy": "0x061BA68bc8208F4AddBeE86F74F17D77129cCF70",
"paymentType": "one-time",
"feeInclusive": false,
"tokenAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"senderAddress": "0x061BA68bc8208F4AddBeE86F74F17D77129cCF70",
"organizationId": "SwHuo5b9UCc43wFCphlC0uQCkQQVvcga",
"receiverAddress": "0xEBFa37194fA74bA3e8195446948FC3B9c72E08AB"
},
"feeInclusive": false,
"tokenAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"senderAddress": "0x061BA68bc8208F4AddBeE86F74F17D77129cCF70",
"receiverAddress": "0xEBFa37194fA74bA3e8195446948FC3B9c72E08AB"
},
"plan": {
"id": "prod_wRhzJIwWHF48JOYF3sz4Thkw9e1EPGaF",
"name": "Hooli Books",
"price": {
"id": "price_aLEXPNevr1F9jUpSPOC4GLp8IEk5QfAf",
"price": "0.13",
"currency": "USDC",
"currencyType": "crypto"
},
"status": "ACTIVE",
"imageUrl": "",
"description": "E-Book service from Hooli",
"paymentType": "one-time"
},
"type": "one-time",
"orderId": "ord_zDGaEVSvOi2YXCH9iV6fBL3TBjDnTW4g",
"paylink": {
"id": "paylink_eU6U4oJKxe5Xp3d2HgUpusQKB8S3W1gF",
"name": "Hooli E-book",
"status": "active",
"paylinkType": "one-time"
},
"metadata": null,
"orderStatus": "PAID",
"organisationId": "SwHuo5b9UCc43wFCphlC0uQCkQQVvcga"
},
"createdAt": "2025-08-29T15:13:42.292Z"
}
subscription.billing.executed
{
"id": "eb64ad42-4441-480e-8b43-9728ea4ea0ac",
"eventType": "subscription.billing.executed",
"eventData": {
"data": {
"id": "sub_HtWZZszBtfCAjm0xuXYdpQu75tBHCLfA",
"token": {
"name": "USD Coin",
"amount": "0x27100",
"symbol": "USDC",
"address": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"chainId": 137,
"fiatISO": "USD",
"logoURI": "https://api.acta.link/deposit/v1/logos/usdc.png",
"decimals": 6,
"logoSourceURI": "https://api.acta.link/deposit/v1/logos/usdc.png"
},
"status": "ONGOING",
"chainId": 137,
"network": {
"name": "Polygon",
"chainId": 137
},
"currency": "USDC",
"startedAt": "2025-08-29T15:31:55.000Z",
"transaction": {
"id": "txn_vfeqOrURQWS7Gz0d0H0OnTk5W7WrWDSf",
"fee": "0xe1069",
"hash": "0xf84e499b6041ab5a95dee8716d2acade87692b88837133e9245697ad4d8f1ac4",
"amount": "0x27100",
"status": "EXECUTED",
"chainId": 137,
"paylinkId": "paylink_6LDiorrwRDii8aU2B7ueSRPGIFEby6cr",
"executedAt": "2025-08-29T15:33:06.011Z",
"executedBy": "0xFF01d8625923C382c4e6fb1307749f10c48908AF",
"paymentType": "subscription",
"feeInclusive": false,
"tokenAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"senderAddress": "0x061BA68bc8208F4AddBeE86F74F17D77129cCF70",
"organizationId": "SwHuo5b9UCc43wFCphlC0uQCkQQVvcga",
"receiverAddress": "0xEBFa37194fA74bA3e8195446948FC3B9c72E08AB"
},
"feeInclusive": false,
"intervalUnit": "5mins",
"tokenAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"intervalCount": 3,
"senderAddress": "0x061BA68bc8208F4AddBeE86F74F17D77129cCF70",
"nextExecutionAt": "2025-08-29T15:38:06.005Z",
"receiverAddress": "0xEBFa37194fA74bA3e8195446948FC3B9c72E08AB",
"effectedInterval": 1,
"latestIntervalCount": 1
},
"plan": {
"id": "prod_LEYeql9qO7yAAxXJSUynmzL1QXWuo2or",
"name": "Recipe Pro",
"price": {
"id": "price_hi6umEpSzoaR8Qgn8ykcbUKD9zB2D8zN",
"price": "0.16",
"currency": "USDC",
"currencyType": "crypto",
"intervalUnit": "5mins",
"intervalCount": 3
},
"status": "ACTIVE",
"imageUrl": "",
"description": "Pro plan for Recipe",
"paymentType": "recurring"
},
"type": "subscription",
"orderId": "ord_qtXiN0d4NGp5FGz8IdcFCrpqPPcriB8E",
"paylink": {
"id": "paylink_6LDiorrwRDii8aU2B7ueSRPGIFEby6cr",
"name": "Recipe Pro",
"status": "active",
"paylinkType": "subscription"
},
"orderStatus": "ONGOING",
"organisationId": "SwHuo5b9UCc43wFCphlC0uQCkQQVvcga"
},
"createdAt": "2025-08-29T15:33:17.090Z"
}
subscription.billing.failed
{
"id": "e91848ca-cb47-46f3-86f1-86b47010d5e0",
"eventType": "subscription.billing.failed",
"eventData": {
"toJSON": {
"data": {
"id": "sub_jeRBLFCOuK2jE8Q1209xnPh5g3ELmfnP",
"token": {
"name": "USD Coin",
"amount": "3000000",
"symbol": "USDC",
"address": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"chainId": 137,
"fiatISO": "USD",
"logoURI": "https://api.acta.link/deposit/v1/logos/usdc.png",
"decimals": 6,
"logoSourceURI": "https://api.acta.link/deposit/v1/logos/usdc.png"
},
"reason": "BALANCE",
"status": "FAILED",
"chainId": 137,
"network": {
"name": "Polygon",
"chainId": 137
},
"attempts": 3,
"currency": "USDC",
"startedAt": "2025-07-27T15:46:00.000Z",
"feeInclusive": true,
"intervalUnit": "5mins",
"tokenAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"intervalCount": 3,
"senderAddress": "0x061BA68bc8208F4AddBeE86F74F17D77129cCF70",
"nextExecutionAt": "2025-07-27T16:05:01.240Z",
"receiverAddress": "0xEBFa37194fA74bA3e8195446948FC3B9c72E08AB",
"effectedInterval": 3,
"latestIntervalCount": 3
},
"type": "subscription",
"orderId": "ord_qtXiN0d4NGp5FGz8IdcFCrpqPPcriB8E",
"paylink": {
"id": "paylink_6LDiorrwRDii8aU2B7ueSRPGIFEby6cr",
"name": "Recipe Pro",
"status": "active",
"paylinkType": "subscription"
},
"orderStatus": "ONGOING",
"plan": {
"id": "prod_jy7Z3JdTuTf1uBqhFFl7x23AdoPJjIRX",
"name": "Hooi Nucleus",
"price": {
"id": "price_kBN95XmlS6kUCNJu98ZpAoc4WT6UX3A2",
"price": "0.15",
"currency": "USDC",
"currencyType": "crypto",
"intervalUnit": "5mins",
"intervalCount": 2
}
},
"organisationId": "f6df600c-eb64-428c-bf58-4b969522572b"
}
},
"createdAt": "2025-07-27T16:24:01.467Z"
}
subscription.billing.scheduled
{
"id": "58448504-b758-4586-a6da-d8f1cb3eef99",
"eventType": "subscription.billing.scheduled",
"eventData": {
"data": {
"id": "sub_7M9lH66tShtMfLtDyz38WCuoWCuJnBt7",
"token": {
"name": "USD Coin",
"amount": "0x249f0",
"symbol": "USDC",
"address": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"chainId": 137,
"fiatISO": "USD",
"logoURI": "https://api.acta.link/deposit/v1/logos/usdc.png",
"decimals": 6,
"logoSourceURI": "https://api.acta.link/deposit/v1/logos/usdc.png"
},
"status": "ONGOING",
"chainId": 137,
"network": {
"name": "Polygon",
"chainId": 137
},
"currency": "USDC",
"startedAt": "2025-08-29T15:15:22.000Z",
"transaction": null,
"feeInclusive": false,
"intervalUnit": "5mins",
"tokenAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"intervalCount": 2,
"senderAddress": "0x061BA68bc8208F4AddBeE86F74F17D77129cCF70",
"nextExecutionAt": "2025-08-29T15:15:22.000Z",
"receiverAddress": "0xEBFa37194fA74bA3e8195446948FC3B9c72E08AB",
"latestIntervalCount": 0
},
"plan": {
"id": "prod_jy7Z3JdTuTf1uBqhFFl7x23AdoPJjIRX",
"name": "Hooi Nucleus",
"price": {
"id": "price_kBN95XmlS6kUCNJu98ZpAoc4WT6UX3A2",
"price": "0.15",
"currency": "USDC",
"currencyType": "crypto",
"intervalUnit": "5mins",
"intervalCount": 2
},
"status": "ACTIVE",
"imageUrl": "",
"description": "Monthly subscription for Hooli Nucleus",
"paymentType": "recurring"
},
"type": "subscription",
"orderId": "ord_7NcE60Ug3muZXHkVkaOefvf4pRYO1I3i",
"paylink": {
"id": "paylink_xsOVX8sNubCCpPSsmMlmy7llRAkhHyvM",
"name": "Hooli Nucleus Subscription",
"status": "active",
"paylinkType": "subscription"
},
"metadata": null,
"orderStatus": "ONGOING",
"organisationId": "SwHuo5b9UCc43wFCphlC0uQCkQQVvcga"
},
"createdAt": "2025-08-29T15:15:35.830Z"
}
subscription.billing.completed
{
"id": "cf8b4861-4411-4f54-89e8-c31447ceb7a9",
"eventType": "subscription.billing.completed",
"eventData": {
"data": {
"id": "sub_7M9lH66tShtMfLtDyz38WCuoWCuJnBt7",
"token": {
"name": "USD Coin",
"amount": "0x249f0",
"symbol": "USDC",
"address": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"chainId": 137,
"fiatISO": "USD",
"logoURI": "https://api.acta.link/deposit/v1/logos/usdc.png",
"decimals": 6,
"logoSourceURI": "https://api.acta.link/deposit/v1/logos/usdc.png"
},
"status": "COMPLETED",
"chainId": 137,
"network": {
"name": "Polygon",
"chainId": 137
},
"currency": "USDC",
"startedAt": "2025-08-29T15:15:22.000Z",
"transaction": {
"id": "txn_vAVKHctT5NWRgrhOI8yv8KdSbonsaAI2",
"fee": "0x4aaa8",
"hash": "0x56485d8331f8a6041e17eb6a0a52a3aac38b6d6ca5f916cecc9028eba43c6b77",
"amount": "0x249f0",
"status": "EXECUTED",
"chainId": 137,
"paylinkId": "paylink_xsOVX8sNubCCpPSsmMlmy7llRAkhHyvM",
"executedAt": "2025-08-29T15:22:03.507Z",
"executedBy": "0xFF01d8625923C382c4e6fb1307749f10c48908AF",
"paymentType": "subscription",
"feeInclusive": false,
"tokenAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"senderAddress": "0x061BA68bc8208F4AddBeE86F74F17D77129cCF70",
"organizationId": "SwHuo5b9UCc43wFCphlC0uQCkQQVvcga",
"receiverAddress": "0xEBFa37194fA74bA3e8195446948FC3B9c72E08AB"
},
"feeInclusive": false,
"intervalUnit": "5mins",
"tokenAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"intervalCount": 2,
"senderAddress": "0x061BA68bc8208F4AddBeE86F74F17D77129cCF70",
"nextExecutionAt": "2025-08-29T15:27:03.500Z",
"receiverAddress": "0xEBFa37194fA74bA3e8195446948FC3B9c72E08AB",
"effectedInterval": 2,
"latestIntervalCount": 2
},
"plan": {
"id": "prod_jy7Z3JdTuTf1uBqhFFl7x23AdoPJjIRX",
"name": "Hooi Nucleus",
"price": {
"id": "price_kBN95XmlS6kUCNJu98ZpAoc4WT6UX3A2",
"price": "0.15",
"currency": "USDC",
"currencyType": "crypto",
"intervalUnit": "5mins",
"intervalCount": 2
},
"status": "ACTIVE",
"imageUrl": "",
"description": "Monthly subscription for Hooli Nucleus",
"paymentType": "recurring"
},
"type": "subscription",
"orderId": "ord_7NcE60Ug3muZXHkVkaOefvf4pRYO1I3i",
"paylink": {
"id": "paylink_xsOVX8sNubCCpPSsmMlmy7llRAkhHyvM",
"name": "Hooli Nucleus Subscription",
"status": "active",
"paylinkType": "subscription"
},
"orderStatus": "PAID",
"organisationId": "SwHuo5b9UCc43wFCphlC0uQCkQQVvcga"
},
"createdAt": "2025-08-29T15:22:09.237Z"
}
subscription.billing.due
{
"id": "c837a151-a962-44e0-b3e3-b4f61743d7bb",
"eventType": "subscription.billing.due",
"eventData": {
"data": {
"id": "sub_jeRBLFCOuK2jE8Q1209xnPh5g3ELmfnP",
"token": {
"name": "USD Coin",
"amount": "0x249f0",
"symbol": "USDC",
"address": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"chainId": 137,
"fiatISO": "USD",
"logoURI": "https://api.acta.link/deposit/v1/logos/usdc.png",
"decimals": 6,
"logoSourceURI": "https://api.acta.link/deposit/v1/logos/usdc.png"
},
"reason": "BALANCE",
"status": "DUE",
"chainId": 137,
"network": {
"name": "Polygon",
"chainId": 137
},
"attempts": 0,
"currency": "USDC",
"transaction": null,
"feeInclusive": false,
"intervalUnit": "5mins",
"tokenAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"intervalCount": 2,
"senderAddress": "0x061BA68bc8208F4AddBeE86F74F17D77129cCF70",
"nextExecutionAt": "2025-08-16T14:27:02.098Z",
"receiverAddress": "0xEBFa37194fA74bA3e8195446948FC3B9c72E08AB",
"effectedInterval": 1,
"expectedExecutionAt": "2025-08-16T14:20:55.000Z",
"latestIntervalCount": 1
},
"type": "subscription",
"orderId": "ord_7NcE60Ug3muZXHkVkaOefvf4pRYO1I3i",
"paylink": {
"id": "paylink_xsOVX8sNubCCpPSsmMlmy7llRAkhHyvM",
"name": "Hooli Nucleus Subscription",
"status": "active",
"paylinkType": "subscription"
},
"orderStatus": "PAID",
"plan": {
"id": "prod_jy7Z3JdTuTf1uBqhFFl7x23AdoPJjIRX",
"name": "Hooi Nucleus",
"price": {
"id": "price_kBN95XmlS6kUCNJu98ZpAoc4WT6UX3A2",
"price": "0.15",
"currency": "USDC",
"currencyType": "crypto",
"intervalUnit": "5mins",
"intervalCount": 2
}
},
"organisationId": "SwHuo5b9UCc43wFCphlC0uQCkQQVvcga"
},
"createdAt": "2025-08-16T14:22:02.125Z"
}
subscription.billing.cancelled
{
"id": "d6fde329-a92a-46b4-8cf8-f795af3af7a3",
"eventType": "subscription.billing.cancelled",
"eventData": {
"data": {
"id": "sub_raaNHLEqQrxKqQpdhzrR6C4loVJbkEf8",
"token": {
"name": "USD Coin",
"amount": "0x249f0",
"symbol": "USDC",
"address": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"chainId": 137,
"fiatISO": "USD",
"logoURI": "https://api.acta.link/deposit/v1/logos/usdc.png",
"decimals": 6,
"logoSourceURI": "https://api.acta.link/deposit/v1/logos/usdc.png"
},
"status": "CANCELLED",
"chainId": 137,
"network": {
"name": "Polygon",
"chainId": 137
},
"currency": "USDC",
"startedAt": "2025-09-09T19:33:57.000Z",
"transaction": null,
"feeInclusive": false,
"intervalUnit": "5mins",
"tokenAddress": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
"intervalCount": 3,
"senderAddress": "0x21DeFD66c4bf4e6639682BE9F5506a08bb204F27",
"nextExecutionAt": null,
"receiverAddress": "0xEBFa37194fA74bA3e8195446948FC3B9c72E08AB",
"latestIntervalCount": 0
},
"plan": {
"id": "prod_OWp0t5DubYF5be8h1IOXkqX4UxEBsZEn",
"name": "Recipe Basic",
"price": {
"id": "price_cXAgf6A6zpkpVoIyoYGdtLfFZA6FRcaz",
"price": "0.15",
"currency": "USDC",
"currencyType": "crypto",
"intervalUnit": "5mins",
"intervalCount": 3
},
"status": "ACTIVE",
"imageUrl": "",
"description": "Basic plan for Recipe",
"paymentType": "recurring"
},
"type": "subscription",
"orderId": "ord_13o6YnKPvZlWyNPTQ42OkmS89IduNn6k",
"paylink": {
"id": "paylink_0eBaSSNK7j3lEIUeZ16OPuB7v7KZee22",
"name": "Recipe Basic",
"status": "active",
"paylinkType": "subscription"
},
"orderStatus": "CANCELLED",
"organisationId": "SwHuo5b9UCc43wFCphlC0uQCkQQVvcga"
},
"createdAt": "2025-09-09T19:36:30.635Z"
}
Best Practices for Webhooks
✅ Always verify the webhook signature to avoid spoofed requests.
✅ Respond quickly with a 200 OK
— don’t wait for downstream logic to finish.
✅ Handle retries properly. If Acta doesn't receive a 2xx
status, we retry using exponential backoff.
Retry Strategy
- Max Attempts: 10
- Initial Delay: 30 seconds
- Backoff Strategy: Exponential (doubles every attempt)
- No Delay Cap: Keeps doubling until final attempt
- Total Retry Window: ~4h 16m
Retry schedule
Attempt | Delay (s) | Delay (min) | Cumulative Time |
---|---|---|---|
1st | 30 | 0.5 | 0:00:30 |
2nd | 60 | 1 | 0:01:30 |
3rd | 120 | 2 | 0:03:30 |
4th | 240 | 4 | 0:07:30 |
5th | 480 | 8 | 0:15:30 |
6th | 960 | 16 | 0:31:30 |
7th | 1920 | 32 | 1:03:30 |
8th | 3840 | 64 | 2:07:30 |
9th | 7680 | 128 | 4:15:30 |
10th | 15360 | 256 | 8:31:30 |
🔁 If all retries fail, the webhook is marked as unsuccessful.