Real-Time Blockchain Webhooks: Delivery, Retries and Reorgs
Build a real-time event receiver that can recover from duplicates, interruption and revised observations without hiding processing gaps.

Overview
When translating these concepts into an integration, keep the scope described by the wallet history api with the result. The examples in wallet transaction history and smart contract event logs show how the same distinction affects neighbouring data questions.
Real-time blockchain webhooks deliver selected observations to an application as activity is detected. They can support alerts, wallet monitoring and analytical updates. The delivery channel does not remove the need to define event identity, processing state and the meaning of observations near a changing chain tip.
A useful receiver treats a webhook as an input to a durable workflow. It verifies the request, accepts bounded work, processes the event and records the outcome. This separation makes recovery possible when delivery repeats or application work fails after the HTTP request has ended.
Write the event and delivery contract first
Identify the network, observed record type, selection filters and observation boundary. Retain a delivery identifier separately from the technical event identity, because one observation may be delivered more than once. A transport request and a blockchain record are different units.
State which fields identify provisional, accepted, removed or replacement observations when those concepts exist in the service contract. A receiver should not guess that every incoming record is final merely because the HTTP request succeeded. Include examples of a normal event, repeated delivery and a revision. The application can then decide which downstream actions are appropriate for each observed state instead of applying one irreversible response to every message.
Verify the sender under the documented mechanism
Use the delivery authentication and integrity mechanism documented for the particular service. If signatures are calculated over request bytes, preserve those bytes through the verification path rather than verifying a separately reformatted representation. Keep the relevant secret in a controlled backend environment.
Apply request-size and content-type limits before scheduling work. The GitHub webhook guidance is a primary example of documented delivery practices; blockchain-specific fields and guarantees still depend on their own contract. Reject an invalid delivery without exposing credentials or full sensitive payloads in logs. Verification and customer ownership checks remain separate responsibilities when events target customer-specific resources.
Acknowledge durable acceptance rather than unfinished work
A receiver can place accepted work into a durable queue and process it separately from the incoming request. Its acknowledgement should mean what the delivery contract expects, while internal status distinguishes accepted, processing, completed and failed work.
Consider a synthetic event received just before an application restart. If the request was acknowledged but its work was retained only in memory, the event can disappear from the processing history. Test the boundary between acceptance and execution. Preserve enough status to determine whether retrying is safe and which observation has already been applied. A short response time is useful only when it is backed by an understandable acceptance and recovery policy.
Make repeated delivery safe with scoped identities
Duplicate delivery is a normal recovery situation in many event systems. Keep a durable deduplication policy using the appropriate delivery and observation identities. Do not use only a transaction hash when one transaction can contain several distinct relevant records.
A handler should be able to encounter the same observation twice without creating two application movements. Conversely, several events from one transaction must not overwrite each other. Test both cases, including a duplicate after partial processing. Retain the boundary between technical acceptance and downstream side effects. Sending a notification, updating a balance view and scheduling another job may require different idempotency decisions even when they begin from the same accepted event.
Recover gaps using a defined reconciliation path
A real-time channel can be complemented by bounded range checks that identify missed or unresolved observations. Keep the selection rules compatible between streaming delivery and the recovery query so a comparison answers the same question.
Store the requested recovery interval, accepted identities and unresolved scope. An absent delivery is not automatically evidence that no network activity occurred. Test a receiver outage followed by a range replay and compare results with an uninterrupted run. Keep completed observations and later revisions related explicitly. This gives operations a practical way to explain discrepancies between a current view and its event-processing history without silently resetting state or assuming the channel guarantees every application side effect.
Separate observations from costly or irreversible actions
An alerting workflow, a reporting update and an outbound transaction have different consequences. Keep the action policy separate from the event receiver and make its prerequisites explicit. A provisional observation may be suitable for a labeled notification while another action requires additional accepted evidence.
Use synthetic events to test invalid signatures, duplicate messages, interrupted processing, missing intervals and replacement observations. Record correlation identifiers and outcomes without leaking secrets. A useful real-time integration explains what was observed, what was durably accepted and what the application actually did. That distinction supports reliable monitoring while keeping execution and customer-specific authorization within their own deliberate control paths.
Questions about the topic
Frequently asked questions
Does an HTTP success mean processing completed?
Only if the documented contract says so. Many receivers acknowledge durable acceptance and process later. Track acceptance and application completion as separate internal states.
Can a webhook be delivered more than once?
Many delivery systems use retries. Follow the actual contract and design scoped, durable deduplication so repeated delivery cannot accidentally create duplicate movements or side effects.
How should a receiver handle a network reorganization?
Preserve observation state and replacement relationships where supported. Apply a documented consumer policy rather than assuming every delivered record is permanently accepted network evidence.
Standards & technical documentation


