Skip to main content

Webhooks

How a DALP webhook reaches your endpoint, what your receiver checks on each request, and which page documents each part of the contract.

The platform tells your systems what happened through webhooks, which are HTTP POST requests that it sends to an endpoint you register, each one signed with that endpoint's secret. Each request carries one event, such as token.transfer.final, which confirms a token transfer. The platform selects a new event for your endpoint when one of the endpoint's subscription patterns matches the event name. When a chain reorganisation replaces recent blocks, an automatic correction can also follow a provisional event your endpoint already received.

Use webhooks when a system must react to changes, such as an accounting ledger or a monitoring pipeline. Use Platform API reads when you need current state or must reconcile an uncertain notification. Registering an endpoint and receiving notifications change no asset ownership and start no transfers.

Your receiver must expect the same event more than once. The platform retries a failed attempt, and a reply that takes longer than the attempt timeout counts as a failure, even when your system already processed the request. Each repeat carries the same webhook-id. An event also reports a lifecycle state, such as provisional or final, which says how far the reported fact has progressed, and a later event can retract an earlier one. Your receiver verifies each signature, processes each event id once and acts on the lifecycle state. A retraction withdraws an earlier reported fact: reverse only effects your system applied, using the earlier event id or the payload identifiers. After 30 failed attempts in a row the platform switches the endpoint off, and while it is off the platform records no events for it. Repair the receiver before recovering deliveries. Resend adds one more attempt to a delivery, and Replay sends a stored event again as a new event. Both recover only events the platform recorded, so read what happened while the endpoint was off from the Platform API. The failure runbook covers that recovery. Attempt outcomes remain in the endpoint's delivery history.

Every attempt and every Resend of an event carry one id, and your endpoint processes that id once.One event on its way to one endpoint, in three bands. Subscriptions: the event name, such as token.transfer.final from the event catalogue, is compared with your endpoint's subscription patterns. The pattern *.final matches it, so the platform queues the event for your endpoint with its own evt_id. When no pattern matches, the platform queues no initial event. Delivery: attempt 1 ends in a retryable failure, attempt 2 follows after a backoff delay and gets a 2xx reply, and a Resend adds another attempt. All three carry the same webhook-id, equal to evt_id. A Replay is a new event, with a new evt_id and is_replay set to true. Your endpoint: verify the signature on every request with your endpoint's signing secret. Deduplicate on evt_id, the focal step: process each id once and reply 2xx to a repeat. Then act on lifecycle_state, the fact's state in the event envelope.Every attempt and every Resend of an event carry one id, and your endpoint processes that id once.The same figure as the desktop variant, drawn portrait for phone widths. Subscriptions: the event name, such as token.transfer.final from the event catalogue, is compared with your endpoint's subscription patterns. The pattern *.final matches it, so the platform queues the event for your endpoint with its own evt_id. When no pattern matches, the platform queues no initial event. Delivery: attempt 1 ends in a retryable failure, attempt 2 follows after a backoff delay and gets a 2xx reply, and a Resend adds another attempt. All three carry the same webhook-id, equal to evt_id. A Replay is a new event, with a new evt_id and is_replay set to true. Your endpoint: verify the signature on every request with your endpoint's signing secret. Deduplicate on evt_id, the focal step: process each id once and reply 2xx to a repeat. Then act on lifecycle_state, the fact's state in the event envelope.

Every attempt and every Resend of an event carry the same webhook-id, and a Replay sends a new evt_id.

One event reaches one endpoint in three stages:

  1. Subscriptions. For an initial event, the platform compares its name with your endpoint's subscription patterns. A match queues the event for your endpoint with its own event id, evt_id. A chain reorganisation can later send a correction for a delivered provisional event without matching the correction against your subscriptions. When no pattern matches, the platform queues no initial event. Subscriptions lists the patterns and the events that the default subscriptions skip.
  2. Delivery. Each attempt is a signed POST request, and every attempt for the event carries the same webhook-id header, equal to evt_id. A retryable failure gets another attempt after a backoff delay. A Resend, which you request for one delivery, adds another attempt with the same id. A Replay, which you request for one event or a block range, sends each event again as a new event with a new evt_id and sets is_replay to true. Consuming webhooks states which failures the platform retries and how Resend and Replay work.
  3. Your endpoint. Verify the signature on every request with your endpoint's signing secret. Then deduplicate on evt_id: process each id once, and reply with a 2xx status to a repeat so the platform records it as delivered. Then act on the fact's lifecycle_state, not on the event-name suffix. The setup guide shows the signature check, and Lifecycle states says what each state means.

Where to find what

Setup guide

Register an endpoint, verify signatures, send a test event and rotate the secret.

Event catalogue

Events of every domain except markets and settlement, with state, timing and action.

Market and settlement events

Events of token sales, trading venues and XvP settlements, with state and timing.

Subscriptions

The pattern grammar, the default subscriptions and the live events they skip.

Lifecycle states

What each event state means and the sequences an endpoint receives.

Consuming webhooks

Deduplication, ordering, retries, Resend and Replay, and retraction handling.

Was this page helpful?