Skip to main content
KeyPort delivers webhooks by sending an HTTP POST request to your registered endpoint. Understanding the delivery and retry behavior helps you build a reliable integration.

Delivery

KeyPort attempts the first delivery immediately after an event fires. Your endpoint must return a 2xx HTTP status code to acknowledge receipt. Any other response — including 3xx redirects, 4xx client errors, and 5xx server errors — is treated as a failed delivery.
Make your webhook handler idempotent. KeyPort may deliver the same event more than once if an initial delivery succeeds but a retry is already in flight. Use the event’s timestamp field and your own logging to detect and safely ignore duplicate deliveries.

Retry schedule

If a delivery fails, KeyPort retries at the following intervals after the previous attempt:
AttemptDelay after previous failure
Retry 11 minute
Retry 25 minutes
Retry 330 minutes
After the third retry fails, the delivery is marked as failed and no further attempts are made.

Recommendations

  • Respond quickly. Return a 2xx status as soon as you receive the request, before doing any processing. If your handler takes too long to respond, KeyPort may treat it as a timeout and retry.
  • Process asynchronously. Enqueue the event and handle it in a background job rather than inline in the request handler. This keeps your response time short and separates concerns.
  • Log deliveries. Record the event type, timestamp, and signature verification result on your side. This makes it easier to debug failed or duplicate deliveries.