Praeto Dispatcher Signature Verification
Praeto Dispatcher signs every outbound webhook so receivers can verify that the request came from Praeto Dispatcher and was not modified in transit. Webhook signing is not optional for production integrations. Customers should reject unsigned or unverifiable webhook requests.Headers
Outbound webhook deliveries include these headers:praeto-signature can include more than one signature:
Verification rules
A receiver should verify:- Required headers exist.
- Timestamp is within tolerance.
- Signature matches the raw request body.
- Event ID has not already been processed if the receiver needs idempotent processing.
Signature base string
The expected signature base string is:v1=.
Important: use the raw request body
Do not parse JSON and re-serialize it before checking the signature. This is wrong:Node.js verification example
See../examples/node/verify-praeto-signature.js.
Minimal example:
Python verification example
See../examples/python/verify_praeto_signature.py.
Minimal example:
Secret rotation behavior
When an endpoint secret is rotated:- The old secret becomes
previous_secret. - A new current secret is generated.
- For the configured overlap window, outbound deliveries include signatures for both current and previous secrets.
- After the overlap expires, only the current secret is valid.
Receiver idempotency recommendation
Praeto Dispatcher prevents duplicate event ingestion on the publisher side whenIdempotency-Key is used.
Receivers should still process inbound webhooks idempotently by storing:
praeto-delivery-id if you want to dedupe exact delivery attempts. Use praeto-event-id if you want to process a business event only once regardless of replay.