POST requests to your configured URL whenever monitored addresses are involved in on-chain events.
Mandatory Test Webhook
Whenever you create or update a stream, you will receive a test webhook. You must return a200 status code (or any 2xx code) for the stream to start delivering real data.
The test body looks like this:
No response body is required — only the status code matters. See Test Webhooks for more details.
Two Webhooks Per Event
You will receive two webhooks for each event:-
Unconfirmed (
confirmed: false) — Sent as soon as the transaction is included in a block. The block may still be dropped due to a chain reorganization. You are not charged for unconfirmed webhooks. -
Confirmed (
confirmed: true) — Sent once enough blocks have been mined to consider the block final. Only confirmed webhooks count toward your billing.
Webhook Payload Structure
The webhook body contains all the data for the block event. The key fields are:| Field | Description |
|---|---|
chainId | The chain ID (e.g., 0x1 for Ethereum) |
block | Block metadata (number, hash, timestamp) |
txs | Array of native transactions |
txsInternal | Array of internal transactions |
logs | Array of raw event logs |
erc20Transfers | Decoded ERC20 transfer events (free) |
erc20Approvals | Decoded ERC20 approval events (free) |
nftTransfers | Decoded NFT transfer events (free) |
nftApprovals | Decoded NFT approval events (free) |
tag | Your user-defined stream tag |
streamId | The ID of the stream that triggered this webhook |
confirmed | Whether the block is confirmed |
retries | Number of delivery retries |
Example: Native Transaction Webhook
Verifying Webhook Signatures
Every webhook includes anx-signature header — a SHA3 hash of the body combined with your API key. Always verify this signature to ensure the webhook is from Moralis.
- JavaScript
- Python
Decoded Data (Free)
Moralis automatically decodes standard contract events at no additional cost:- ERC20 Transfers — Includes
tokenName,tokenSymbol,tokenDecimals,from,to,value, andcontractaddress. - ERC20 Approvals — Includes
owner,spender,value, and token metadata. - NFT Transfers — Includes
tokenId,tokenName,tokenContractType(ERC721/ERC1155),from,to,amount, andcontractaddress.
Next Steps
- Webhook Payloads — Detailed reference for all payload types.
- Confirmation and Finality — How block confirmations work across chains.
- Pricing — Understand how records and compute units are calculated.

