Automation & Orchestration
Webhook orchestration: acknowledge fast, process later, never twice
A webhook is someone else's promise
When you connect a payments provider or a scheduling tool, it calls an address you give it whenever something changes. That's better than checking every few minutes, but you don't control the caller. If you're slow to answer, it retries. It may send the same event twice, or in a different order. And without a check, anyone who finds the address can send you a fake one.
Webhook orchestration makes the receiving end dependable. Each call is verified, stored before anything else, answered quickly, and then processed from the stored copy by a worker that knows which events it has already handled. Nothing is lost when a downstream system is down, and nothing happens twice.
Five checks every webhook passes
01
Verify the sender
Is it really them?
The signature on every call is checked with the secret you share with the sender. Anything unsigned or altered is rejected.
02
Store it first
Before doing anything
The event is saved as it arrived, so a crash a moment later loses nothing.
03
Answer fast
Then do the work
The sender gets its 200 at once. Slow work happens afterwards, so the sender doesn't retry while you're busy.
04
Recognise repeats
Same ID, same outcome
Each event's ID is remembered. A repeat is acknowledged and skipped, so a payment is never recorded twice.
05
Process from the stored copy
Retry without asking again
If the work fails, it's retried from what was stored, in order where order matters, and a person is told if retries run out.
Three deliveries
evt_901 · payment.succeeded
- done
Signature verified
- done
Stored
- done
Answered 200
- done
Invoice INV-2263 marked paid
- done
Customer receipt sent
The provider got its answer at once; the work followed from the stored copy.
evt_901 · sent again
- done
Signature verified
- done
Event ID already seen
stored at 10:42
- done
Answered 200
- skipped
Invoice update
already paid
- skipped
Receipt
already sent
The provider retried because of a network hiccup. The repeat was acknowledged and nothing happened twice.
evt_455 · job.updated
- done
Signature verified
- done
Stored
- done
Answered 200
- failed
Sync to accounting
accounting not responding
- done
Retry from the stored copy
attempt 2 of 5
The sender never knew. The update waited in storage and went through when accounting came back.
What webhook orchestration hands off
In
Out
Worth building when other systems tell you things
Good fit
- Payments, scheduling, CRM or form tools can send you events.
- Today those events trigger things directly, with no record.
- A duplicate or missed event has caused a problem.
Not the right fit
- The system you need data from can't send events. Scheduled reads are the answer there.
- A handful of events a month that a person can check.
Questions about webhook orchestration
Why answer before the work is done?
Because the sender is waiting. If you take too long it assumes failure and sends again. Storing the event and answering at once keeps the sender happy and leaves the work to a worker that can take its time.
What if events arrive out of order?
Each event carries a time or a version. Where order matters, such as a job's status, the worker applies only what's newer than what it already has.
Where do the webhooks land?
An endpoint we build for you, often a small serverless function in front of a queue, or n8n's webhook node for simpler cases. These are starting candidates, not requirements.
What happens if we change the shared secret?
Both the old and new secrets are accepted for a short overlap, so no real event is rejected while the sender switches over.