POST request containing a structured event payload to an endpoint you register. This guide walks you through registering an endpoint, verifying authenticity, handling the event envelope, and building resilient event consumers.
Setting Up Webhooks
1
Register a Webhook Endpoint
Register the URL where UMW should send events. You can subscribe to specific event types to limit noise to only the signals relevant to your integration.Response:
2
Verify Your Endpoint
After you register, UMW sends a one-time If your endpoint does not respond with
ping event to your endpoint to confirm it is reachable. Your server must respond with an HTTP 200 status code within 10 seconds.Ping event payload:200 within the timeout window, the webhook will be created in an unverified state and no live events will be delivered until verification succeeds. You can trigger a new ping at any time:3
Handle Incoming Events
All UMW events share a consistent envelope structure. Parse the outer fields first to identify the event type, then route the Your handler should return an HTTP
data object to your domain-specific handler.Event envelope:Example —
release.status.changed event:200 response as quickly as possible — ideally before performing any heavy business logic. Enqueue events for asynchronous processing to avoid timeouts that would cause UMW to retry delivery unnecessarily.4
Verify the Signature
Every event UMW delivers includes an
X-UMW-Signature header. Validate this signature before processing the event to confirm it originated from UMW and was not tampered with in transit.The signature is computed as an HMAC-SHA256 digest of the raw request body, using your webhook secret as the key. The header value is prefixed with sha256=.Retry Logic
If your endpoint returns a non-2xx status code, or does not respond within the 30-second timeout window, UMW will automatically retry delivery with exponential backoff.
After 5 failed retries, the event is marked as undeliverable and no further attempts are made. You can view all undelivered events and trigger manual redelivery from the UMW developer dashboard or via the API:
UMW retains event history for 30 days. If your endpoint experiences a prolonged outage, use the relevant REST endpoints (e.g.,
GET /v1/deliveries, GET /v1/royalties) to backfill any state you may have missed from failed webhook deliveries.Deduplication
UMW guarantees at-least-once delivery — under certain network or infrastructure conditions, your endpoint may receive the same event more than once. Design your event handlers to be idempotent by tracking theid field of each processed event.
SET NX operation, a unique constraint on a database events table, or any idempotency key store with a TTL of at least 30 days is sufficient for deduplication.