Spectrum Nodes

Introducing Spectrum Webhooks

Featured image for: Introducing Spectrum Webhooks
Share

On-chain events, decoded, signed, and pushed to your backend. No nodes to run.

Every team building on-chain writes the same loop eventually. Poll the node. Diff the result. Poll again. It holds up fine until the node falls behind, or a deploy restarts the process mid block, or a reorg quietly invalidates a balance you already showed a user.

Spectrum Webhooks deletes the loop. Give us the addresses you care about and a URL you own. When something touches one of those addresses, we POST it to your endpoint, decoded and signed, seconds after the block is mined.

What arrives

One webhook type, ADDRESS_ACTIVITY, covers five categories of movement:

  • external, native asset transfers at the top level of a transaction
  • internal, value bearing internal calls, recovered from block traces
  • token, ERC-20 Transfer events, enriched with symbol and decimals
  • erc721, NFT transfers, including tokenId
  • erc1155, single and batch transfers, with batches fanned out per token

Token events arrive with symbol, name and decimals already resolved from our metadata cache. Your handler never makes a second RPC call to work out what moved:

{
  "category": "token",
  "fromAddress": "0x...",
  "toAddress": "0x...",
  "value": "1000000",
  "asset": "USDC",
  "rawContract": { "decimals": 6 }
}

Values stay as raw integer strings, so nothing is lost to rounding on the way to you. Apply the decimals when you render a number for a human.

What you no longer have to build

Verification. Every delivery is signed with HMAC-SHA256. Your endpoint checks the X-Spectrum-Signature header and knows the payload came from us untampered. Key rotation is built in, with a grace window that sends both signatures so you can roll keys without downtime.

Durability. Deliveries queue in Postgres before anyone tries to send them. If your endpoint is briefly down, nothing is dropped. Retries follow a per webhook policy and honour Retry-After. Deliveries that exhaust their retries land in a dead letter queue you can inspect and replay on demand, rather than disappearing.

Delivery is at-least-once, and we documented the contract rather than promising something a network cannot guarantee. Every delivery carries an X-Spectrum-Event-Id. Dedupe on it and repeats become no ops.

Reorg handling. Blocks are provisional. When a block we already delivered gets orphaned, you get a follow up POST with removed set to true, so your system can reverse the change instead of carrying bad state. Live detection covers reorg depths up to 64 blocks, and deeper rewrites are caught by startup recovery.

Efficient payloads. All events from one block for one webhook arrive in your dashboard, with block level fields on the envelope so nothing repeats. Busy blocks split into sequential batches of up to 100 events that you correlate by block hash.

Where it runs

Ethereum, Polygon, BSC, Arbitrum, Optimism, Gnosis and Hyperliquid. Chain endpoints are provisioned from the Spectrum Nodes backbone, so additional EVM chains come online without a code change on our side or yours. Each chain runs multiple WebSocket endpoints with automatic failover, and each region runs independently.

Screenshot 2026-07-30 at 12.37.54 PM.png

Start in a few minutes

The API is REST behind an API key gateway, with an OpenAPI spec you can point a TypeScript generator at. There is a test endpoint that fires a synthetic delivery to your URL, so you can build and debug your handler before waiting on the chain to cooperate.

Create a webhook, point it at a URL, and stop babysitting nodes.

Read the docs