Skip to main content
WEBHOOK
onchainActivityDetected
{
  "block_number": 46218191,
  "contract_address": "0x940181a94A35A4569E4529A3CDfB74e38FD98631",
  "event_name": "Transfer",
  "event_signature": "Transfer(address,address,uint256)",
  "log_index": 29,
  "network": "base-mainnet",
  "parameters": {
    "from": "0xF33a96b5932D9E9B9A0eDA447AbD8C9d48d2e0c8",
    "to": "0x61040E143A77F165Ba44543AF4A079F2C809D14b",
    "value": "474891138228179365"
  },
  "timestamp": "2026-05-19T21:22:10Z",
  "transaction_from": "0x3E16D476D8Df15e3E776EAa5A46f37EC44C830cD",
  "transaction_hash": "0xa58e4471bcce875b1ea49cc0864a620d3a484b9b7c1b0b4fd18ce83f5b30e5e0",
  "transaction_to": "0x61040E143A77F165Ba44543AF4A079F2C809D14b"
}

Authorizations

X-Hook0-Signature
string
header
required

HMAC-SHA256 signature of the raw request body, computed using your webhook secret. Webhook receivers should always verify this header before processing the event. The header value is hex-encoded and prefixed by the algorithm and timestamp, e.g. t=1700000000,v1=abc123... (refer to the Webhook Security docs for the exact verification algorithm).

This scheme applies to webhook delivery (outbound POSTs from CDP to your endpoint), not to inbound CDP API requests.

Body

application/json

The decoded blockchain event data. Payload shape varies by the type of onchain activity detected (token transfer, contract interaction, etc.).

The payload delivered when onchain activity matching your subscription filters is detected. Each event corresponds to a single decoded contract log emitted onchain. The set of keys in parameters varies by the contract event being decoded (e.g., Transfer(address,address,uint256)).

block_number
integer<int64>
required

The block number containing the transaction that emitted the event.

Example:

46218191

contract_address
string
required

The contract address that emitted the event.

Example:

"0x940181a94A35A4569E4529A3CDfB74e38FD98631"

event_name
string
required

The name of the decoded contract event.

Example:

"Transfer"

event_signature
string
required

The canonical event signature used to decode the log, including parameter types (e.g., Transfer(address,address,uint256)).

Example:

"Transfer(address,address,uint256)"

log_index
integer<int64>
required

The zero-based index of the log within the transaction.

Example:

29

network
string
required

The blockchain network where the activity was detected.

Example:

"base-mainnet"

parameters
object
required

Decoded event parameters from the contract event. Keys correspond to the named arguments in the event signature (e.g., from, to, value for an ERC-20 Transfer). Values are returned as strings to preserve precision for large integers and to avoid loss for address types. The exact set of keys depends on the contract event.

Example:
{
"from": "0xF33a96b5932D9E9B9A0eDA447AbD8C9d48d2e0c8",
"to": "0x61040E143A77F165Ba44543AF4A079F2C809D14b",
"value": "474891138228179365"
}
timestamp
string<date-time>
required

The block timestamp of the transaction (ISO 8601 format).

Example:

"2026-05-19T21:22:10Z"

transaction_from
string
required

The address that initiated the transaction (the transaction sender).

Example:

"0x3E16D476D8Df15e3E776EAa5A46f37EC44C830cD"

transaction_hash
string
required

The hash of the transaction that emitted the event.

Example:

"0xa58e4471bcce875b1ea49cc0864a620d3a484b9b7c1b0b4fd18ce83f5b30e5e0"

transaction_to
string
required

The address the transaction was sent to (typically a contract address).

Example:

"0x61040E143A77F165Ba44543AF4A079F2C809D14b"

Response

Webhook received and processed successfully. Return a 200 status code to acknowledge receipt. If your endpoint does not return a 2xx status code, the webhook will be retried with exponential backoff.