Store the event, then deliver it.

An event type and a JSON payload go in. A stored event and signed delivery attempts to every subscribed endpoint come out.

Event stored · 202
test
order.completed
evt_8e12c · signed · idempotency order-123
Stored
https://hooks.example.com/orders
Delivery attempts
Persisted before any endpoint is called. Your request already returned HTTP 202.
What it does

Real product states, not a promise.

An event type and a JSON payload go in. A stored event and signed delivery attempts to every subscribed endpoint come out.

  • Stored before delivery
  • Signed HTTPS POST per endpoint
  • Attempt status and duration recorded
  • Idempotency-Key deduplicates creates
Input

Event type and a JSON object payload

Output

202 event plus delivery attempts

Where it fits

Where it fits

01

Order and payment notifications

02

Customer-facing webhooks

03

Internal service events

API example

One durable request.

POST /v1/events. Use an idempotency key on create calls. The full request and response contract is in Flowyn Docs.

AcceptedClaimedAttemptedTerminal state
POSThttps://api.flowyn.dev/v1/events202
curl -X POST https://api.flowyn.dev/v1/events \
  -H "Authorization: Bearer flw_test_••••" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-123-completed" \
  -d '{
    "type": "order.completed",
    "payload": {
      "order_id": "ord_123"
    }
  }'

Frequently asked questions

Where is the exact request contract for Webhook Delivery?
In Flowyn Docs and the OpenAPI document at https://api.flowyn.dev/openapi/v1.yaml. This page shows the request; the docs page lists every field, status value, error, and limit.
Is the operation durable?
Yes. The operation is stored before any work happens and remains a resource with state, attempts, and error context, not an ephemeral request log.
Do failures stay inspectable?
Yes. Every attempt is recorded. Repeated failures with the same fingerprint are also grouped into an Issue.

Build with Webhook Delivery.

Create a workspace, make your first call in the test environment, and inspect every attempt.