IOSOR Learn
Webhook contract before the first send
Buyer path: agree signed URL, event types, and idempotency key before the first prepaid send — contract first, paid traffic later.
A prepaid send without a webhook contract is spend with no shared truth. Buyers must lock the signed URL, the event list, and the idempotency key before the first paid message leaves the wallet — not after finance asks why status and ledger disagree. This page is that buyer path, not a keys-at-launch checklist and not a signature deep-dive.
Related: webhooks and keys at launch, webhooks that survive launch, Prepaid hold before first debit, Day-1 runway: what must be green.
IOSOR is white-label prepaid. USD 20 funds a contract pilot on one corridor; soft review near USD 1,000/month prices “send first, contract later” as recon debt. Clients see white-label event names only.
Agree the contract before the first paid send
Paid send means the wallet can debit. Contract means product, finance, and ops already share where callbacks land, which events count as money or status truth, and which key makes retries safe. Launch habits and runway can look green while the contract is still a Slack thread — that is not ready. See webhooks and keys at launch and Day-1 runway: what must be green. Do not buy traffic on last week’s staging callback URL.
Signed URL and consumer ownership
| Contract field | Why buyers care |
|---|---|
| HTTPS callback URL | One destination product and ops can name |
| Signing secret owner | Who rotates; never a shared chat paste |
| ACK vs process rule | Persist first; side effects after ACK |
| Environment split | Pilot URL ≠ production URL |
| Fail closed on unknown host | Spoofed delivered never updates ledger |
A signed URL without an owner becomes folklore at 02:00. Soft USD 1,000/month treats folklore as volume risk; USD 20 proves one URL, one owner, one smoke with 2xx only after signature middleware is on. See also webhooks that survive launch.
Event types product and finance share
List events that may move money or status before the first send: accepted, delivered, failed, expired, inbound STOP, and any verify result you treat as truth. Unlisted events fail closed — they do not invent ledger rows. Shared words: Shared status language for product and finance. Hold still fails closed without prepaid proof — Prepaid hold before first debit. The contract is the event menu; later gates decide whether each row is trusted.
Idempotency key before spend
Agree the key shape before spend: platform event or message ID, stored before side effects, readable next to the debit row. Inventing a key from timestamp plus body is how retries double-charge. Soft volume language stays blocked until a duplicate-event smoke shows one ledger line.
Buyer checklist for the webhook contract
- Signed production URL named and owned before first paid send?
- Event list product and finance share written — not oral?
Start with IOSOR
Enter the IOSOR console and register your signed HTTPS callback URL alongside your designated idempotency key field before enabling paid message dispatches. Ensure product, finance, and engineering team leads review the shared event schema—such as delivered, failed, and expired—to confirm unlisted callbacks automatically fail closed. Run a zero-spend duplicate-event payload test through your webhook gate to verify that retries record against a single ledger row before releasing traffic holds.
IOSOR takeaway
A webhook contract is not an informal alignment; it is an explicit boundary that protects finance and product from double-debits and phantom status updates. Establishing signing secret ownership, exact URL ownership, and strict idempotency key parsing prior to the first paid delivery prevents retry storms from inventing ledger entries.
Do freeze your callback event list and enforce an ACK-before-side-effects architecture across all inbound callbacks. Don't launch live production traffic using synthetic keys derived from timestamps or body hashes, and never rely on oral agreements for event status definitions.
Was this guide helpful?
Related guides
- Monitoring Consumer Webhook Endpoint Health Metrics
Learn how to track receiver response latency and status codes within the IOSOR platform to proactively manage webhook health and prevent callback failures.
- Configuring Threshold Webhook Alerts for Wallet Floors
Learn how to configure automated balance threshold webhooks in IOSOR to monitor prepaid accounts, prevent service interruptions, and manage JIT number provisioning effectively.
- Processing Just-in-Time Provisioning Webhook Events
Master the real-time lifecycle of inbound channels using IOSOR JIT provisioning webhooks. Automate number assignment and ledger updates for your white-label CPaaS.