Find your endpoint
Generate a receiver
--lang takes node or
python; verify.* is separate from the server so it drops into an application that already has
its own HTTP layer.
It also handles three things people discover the hard way: the signed content is
id.timestamp.rawBody rather than the body alone, the header can carry several space-separated
signatures during a secret rotation (accept if any verifies), and deliveries are at-least-once so
the same webhook-id can arrive twice.
Existing files are never overwritten without --force.
Send a test event
Watch deliveries arrive
--json is refused here, because this is a
stream for a person; for scripted output run mercemur webhook deliveries --json in your own
loop.
Look at what happened
A receiver that was never reached and one that returned a 500 need completely different fixes, so
they are never collapsed into one line.
Replay a failure
Deliveries produced by
webhook test are marked (test) and cannot be replayed, because
webhook.test is not an event the platform emits. The listing only suggests replay when
something in it can actually be replayed.Scopes
read_webhooks for endpoints and deliveries. write_webhooks for test and replay.
Subscribing an endpoint to an event also requires the scope for that event’s data. Subscribing to
orders/paid needs read_orders, so a key cannot receive order payloads it would not be allowed
to read.