Subscribe to real-time events across CDP products using flexible filtering.
Onchain Events - Monitor Base mainnet with microsecond precision:
onchain.activity.detected - Smart contract events, transfers, swaps, NFT activitylabels for filtering (e.g., contract_address, event_name)Onramp/Offramp Events - Transaction lifecycle notifications:
onramp.transaction.created, onramp.transaction.updatedonramp.transaction.success, onramp.transaction.failedofframp.transaction.created, offramp.transaction.updatedofframp.transaction.success, offramp.transaction.failedPayments Transfers Events - Transfer lifecycle notifications:
payments.transfers.quotedpayments.transfers.processingpayments.transfers.completedpayments.transfers.failedWallet Events - Wallet activity notifications:
wallet.activity.detectedAll webhooks include cryptographic signatures for security.
The signature secret is returned in secret field when creating a subscription.
Note: Webhooks are in beta and this interface is subject to change.
See the verification guide for implementation details.
For onchain.activity.detected events, use labels for precise filtering with AND logic (max 20 labels per webhook).
Allowed labels (all in snake_case format):
network (required) - Blockchain networkcontract_address - Smart contract addressevent_name - Event name (e.g., “Transfer”, “Burn”)event_signature - Event signature hashtransaction_from - Transaction sender addresstransaction_to - Transaction recipient addressparams.* - Any event parameter (e.g., params.from, params.to, params.sender, params.tokenId)Examples:
{"network": "base-mainnet", "contract_address": "0xcd1f9777571493aeacb7eae45cd30a226d3e612d", "event_name": "Burn"}{"network": "base-mainnet", "contract_address": "0xbac4a9428ea707c51f171ed9890c3c2fa810305d", "event_name": "PriceUpdated"}{"network": "base-mainnet", "contract_address": "0x45c6e6a47a711b14d8357d5243f46704904578e3", "event_name": "Deposit"}A JWT signed using your CDP API Key Secret, encoded in base64. Refer to the Generate Bearer Token section of our Authentication docs for information on how to generate your Bearer Token.
Request to create a new transfer webhook subscription.
Types of transfer events to subscribe to. Valid values are:
payments.transfers.quoted, payments.transfers.processing, payments.transfers.completed, payments.transfers.failed.
["payments.transfers.completed"]Whether the subscription is enabled.
true
Target configuration for webhook delivery. Specifies the destination URL and any custom headers to include in webhook requests.
{
"url": "https://api.example.com/webhooks",
"headers": {
"Authorization": "Bearer token123",
"Content-Type": "application/json"
}
}Description of the webhook subscription.
500"Transfer status change notifications"
Optional metadata as key-value pairs. Use this to store additional structured information on a resource, such as customer IDs, order references, or any application-specific data. Up to 50 key/value pairs may be provided. Keys and values are both strings. Keys must be ≤ 40 characters; values must be ≤ 500 characters.
{
"customer_id": "cust_12345",
"order_reference": "order-67890"
}Labels are not supported for transfer webhooks.
{}Webhook subscription created successfully.
Response containing webhook subscription details.
When the subscription was created.
"2025-01-15T10:30:00Z"
Types of events to subscribe to. Event types follow a three-part dot-separated format: service.resource.verb (e.g., "onchain.activity.detected", "wallet.activity.detected", "onramp.transaction.created").
["onchain.activity.detected"]Whether the subscription is enabled.
true
Secret for webhook signature validation.
"123e4567-e89b-12d3-a456-426614174000"
Unique identifier for the subscription.
"123e4567-e89b-12d3-a456-426614174000"
Target configuration for webhook delivery. Specifies the destination URL and any custom headers to include in webhook requests.
{
"url": "https://api.example.com/webhooks",
"headers": {
"Authorization": "Bearer token123",
"Content-Type": "application/json"
}
}Description of the webhook subscription.
500"Subscription for token transfer events"
Additional metadata for the subscription.
{
"customer_id": "cust_12345",
"order_reference": "order-67890",
"secret": "123e4567-e89b-12d3-a456-426614174000"
}Multi-label filters using total overlap logic. Total overlap means the subscription only triggers when events contain ALL these key-value pairs. Present when subscription uses multi-label format.
{
"env": "dev",
"team": "payments",
"contract_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
}