token.* webhook events alongside the existing transaction.* lifecycle events. Both streams are useful: token.* carries token-specific context (token ID, amount, recipient, role, contract address); transaction.* carries low-level transaction lifecycle.
Delivery semantics
- HMAC-SHA256 signed with the per-endpoint secret. See Webhooks.
- At-least-once delivery; treat your handler as idempotent (
event.idis unique). - Retried with exponential backoff on non-2xx responses.
Event envelope
Event catalog
| Event type | Fires when |
|---|---|
token.created | A new token configuration is created (status DRAFT). |
token.deployment_requested | Deployment accepted by Qustody. |
token.deployed | Deployment confirmed on chain. Carries contractAddress. |
token.deployment_failed | Deployment failed during signing or chain submission. |
token.mint_requested | Mint accepted by Qustody. |
token.minted | Mint confirmed on chain. |
token.burn_requested | Burn accepted by Qustody. |
token.burned | Burn confirmed on chain. |
token.transfer_requested | Typed token transfer accepted by Qustody. |
token.transferred | Token transfer confirmed on chain. |
token.role_granted | On-chain role granted. |
token.role_revoked | On-chain role revoked. |
token.paused | Token paused on chain. |
token.unpaused | Token unpaused on chain. |
token.frozen | Address frozen on chain. |
token.unfrozen | Address unfrozen on chain. |
token.compliance_updated | Compliance configuration updated on chain. |
token.allowlist_added | Address added to the allowlist. |
token.allowlist_removed | Address removed from the allowlist. |
token.operation_rejected | Approver rejected the operation. |
token.operation_failed | Operation reached terminal FAILED state. |
Naming convention
Event names follow the existing Qustody conventionentity.verb_past. The token.* events match the same shape as transaction.created, deposit.detected, etc.