Create webhook subscription
Subscribe to real-time events across CDP products. A webhook subscription provides a targetURL and other relevant endpoint configuration to enable receiving webhooks when events occur.
Webhook Signature Verification
All webhooks include an HMAC-SHA256 signed header for security. The signature is signed with the secret that is returned in the secret field when creating a subscription.
Do not lose the secret, as you will not be able to recreate it. If you lose the secret, you will need to create a new subscription.
See the verification guide for implementation details.
Authorizations
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.
Body
Request to create a new webhook subscription with support for multi-label filtering.
Types of events to subscribe to. Event types follow a dot-separated format: service.resource.verb (e.g., "onchain.activity.detected", "wallet.activity.detected", "onramp.transaction.created", "acceptance.payment_session.authorization_succeeded"). The subscription will only receive events matching these types AND the label filter(s).
A webhook event type identifier following dot-separated format:
<domain>.<entity>.<verb> (e.g., "onchain.activity.detected").
onchain.activity.detected, wallet.activity.detected, wallet.activity.multi, wallet.transaction.created, wallet.transaction.signed, wallet.transaction.broadcast, wallet.transaction.replaced, wallet.transaction.pending, wallet.transaction.confirmed, wallet.transaction.failed, wallet.delegation.created, wallet.delegation.revoked, wallet.typed_data.signed, wallet.message.signed, wallet.hash.signed, payments.transfers.quoted, payments.transfers.processing, payments.transfers.completed, payments.transfers.failed, payments.transfers.expired, payments.transfers.travel_rule_incomplete, payments.transfers.travel_rule_completed, onramp.transaction.created, onramp.transaction.updated, onramp.transaction.success, onramp.transaction.failed, offramp.transaction.created, offramp.transaction.updated, offramp.transaction.success, offramp.transaction.failed, acceptance.payment_session.created, acceptance.payment_session.canceled, acceptance.payment_session.authorization_pending, acceptance.payment_session.authorization_succeeded, acceptance.payment_session.authorization_failed, acceptance.payment_session.capture_pending, acceptance.payment_session.capture_succeeded, acceptance.payment_session.capture_failed, acceptance.payment_session.refund_pending, acceptance.payment_session.refund_succeeded, acceptance.payment_session.refund_failed, acceptance.payment_session.void_pending, acceptance.payment_session.void_succeeded, acceptance.payment_session.void_failed, acceptance.disbursement.pending, acceptance.disbursement.succeeded, acceptance.disbursement.failed, health.status.updated, health.maintenance.scheduled, health.maintenance.started, health.maintenance.completed, health.maintenance.canceled, customers.capability.changed, customers.customer.deleted Whether the subscription is enabled.
true
Target configuration for webhook delivery. Specifies the destination URL and any custom headers to include in webhook requests.
A human-readable description of the webhook subscription. Must be at most 100 characters.
100"Subscription for token transfer events"
Optional subscription metadata. Up to 10 key/value pairs may be provided. Keys and values must each contain between 1 and 50 characters.
String-valued filters supplied when creating or updating a webhook subscription.
The subscription's eventTypes determine whether labels are required and which
label keys are accepted. A subscription accepts at most 20 client-supplied labels.
Label Behavior
An event must match ALL labels to fire to your subscription targetURL. When multiple labels are supplied, the event must match ALL labels to fire to your subscription targetURL.
Response
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 dot-separated format: service.resource.verb (e.g., "onchain.activity.detected", "wallet.activity.detected", "onramp.transaction.created", "acceptance.payment_session.authorization_succeeded").
A webhook event type identifier following dot-separated format:
<domain>.<entity>.<verb> (e.g., "onchain.activity.detected").
onchain.activity.detected, wallet.activity.detected, wallet.activity.multi, wallet.transaction.created, wallet.transaction.signed, wallet.transaction.broadcast, wallet.transaction.replaced, wallet.transaction.pending, wallet.transaction.confirmed, wallet.transaction.failed, wallet.delegation.created, wallet.delegation.revoked, wallet.typed_data.signed, wallet.message.signed, wallet.hash.signed, payments.transfers.quoted, payments.transfers.processing, payments.transfers.completed, payments.transfers.failed, payments.transfers.expired, payments.transfers.travel_rule_incomplete, payments.transfers.travel_rule_completed, onramp.transaction.created, onramp.transaction.updated, onramp.transaction.success, onramp.transaction.failed, offramp.transaction.created, offramp.transaction.updated, offramp.transaction.success, offramp.transaction.failed, acceptance.payment_session.created, acceptance.payment_session.canceled, acceptance.payment_session.authorization_pending, acceptance.payment_session.authorization_succeeded, acceptance.payment_session.authorization_failed, acceptance.payment_session.capture_pending, acceptance.payment_session.capture_succeeded, acceptance.payment_session.capture_failed, acceptance.payment_session.refund_pending, acceptance.payment_session.refund_succeeded, acceptance.payment_session.refund_failed, acceptance.payment_session.void_pending, acceptance.payment_session.void_succeeded, acceptance.payment_session.void_failed, acceptance.disbursement.pending, acceptance.disbursement.succeeded, acceptance.disbursement.failed, health.status.updated, health.maintenance.scheduled, health.maintenance.started, health.maintenance.completed, health.maintenance.canceled, customers.capability.changed, customers.customer.deleted 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.
When the subscription was last updated.
"2025-01-16T14:00:00Z"
A human-readable description of the webhook subscription. Must be at most 100 characters.
100"Subscription for token transfer events"
Additional metadata for the subscription.
Effective filters stored on the webhook subscription. The response includes client-supplied labels plus labels defaulted or injected by the server.
onchain.activity.detected,wallet.activity.detected, andwallet.activity.multiincludenetwork. It defaults tobase-mainnetwhen omitted from the request.wallet.activity.multiincludes the requested comma-separatedwallet_addresses.health.*includes the requestedservice.- Project-scoped events include the authenticated
project. - Entity-scoped events include the authenticated
entity. - User-scoped events include the authenticated
user_uuidand asandboxvalue.