Webhook Events
All webhook events follow this envelope format:
{
"id": "evt_abc123",
"type": "event.type",
"created_at": "2026-03-01T10:00:00.000Z",
"api_version": "2026-03-01",
"data": { ... }
}user.created
Fired when a new user is created and their Canton party is allocated.
{
"id": "evt_001",
"type": "user.created",
"created_at": "2026-03-01T10:00:00.000Z",
"api_version": "2026-03-01",
"data": {
"userId": "usr_abc123",
"email": "alice@example.com",
"name": "Alice",
"partyId": "myapp_alice::1220abcd",
"trustLevel": "embedded"
}
}user.upgraded
Fired when a user's trust level changes.
{
"id": "evt_002",
"type": "user.upgraded",
"created_at": "2026-03-01T12:00:00.000Z",
"api_version": "2026-03-01",
"data": {
"userId": "usr_abc123",
"fromLevel": "embedded",
"toLevel": "custodial",
"migrationId": "mig_xyz"
}
}tx.submitted
Fired when a transaction (Daml command) is submitted to Canton.
{
"id": "evt_003",
"type": "tx.submitted",
"created_at": "2026-03-01T10:05:00.000Z",
"api_version": "2026-03-01",
"data": {
"commandId": "cmd_abc",
"userId": "usr_abc123",
"templateId": "Cayvox.PartyLayer.RewardDelegation:RewardDelegation",
"commandType": "create"
}
}tx.completed
Fired when a transaction is confirmed on the Canton ledger.
{
"id": "evt_004",
"type": "tx.completed",
"created_at": "2026-03-01T10:05:01.000Z",
"api_version": "2026-03-01",
"data": {
"commandId": "cmd_abc",
"updateId": "upd_xyz",
"userId": "usr_abc123",
"contractId": "00abcd1234::1220",
"templateId": "Cayvox.PartyLayer.RewardDelegation:RewardDelegation"
}
}tx.failed
Fired when a transaction fails.
{
"id": "evt_005",
"type": "tx.failed",
"created_at": "2026-03-01T10:05:02.000Z",
"api_version": "2026-03-01",
"data": {
"commandId": "cmd_abc",
"userId": "usr_abc123",
"error": "INVALID_ARGUMENT",
"message": "Template not found"
}
}reward.claimed
Fired when a user claims a reward via the RewardDelegation contract.
{
"id": "evt_006",
"type": "reward.claimed",
"created_at": "2026-03-01T14:00:00.000Z",
"api_version": "2026-03-01",
"data": {
"userId": "usr_abc123",
"contractId": "00abcd1234::1220",
"amount": "100.0",
"note": "Monthly reward claim"
}
}reward.processed
Fired when a claimed reward is processed by the operator.
{
"id": "evt_007",
"type": "reward.processed",
"created_at": "2026-03-01T14:01:00.000Z",
"api_version": "2026-03-01",
"data": {
"userId": "usr_abc123",
"claimId": "00efgh5678::1220",
"amount": "100.0",
"processedAt": "2026-03-01T14:01:00.000Z"
}
}app.verified
Fired when an app is verified by the operator.
{
"id": "evt_008",
"type": "app.verified",
"created_at": "2026-03-01T16:00:00.000Z",
"api_version": "2026-03-01",
"data": {
"appId": "app_abc123",
"appName": "My DApp",
"verifiedAt": "2026-03-01T16:00:00.000Z",
"tier": "growth"
}
}Event Type Summary
| Event | Trigger | Key Data |
|---|---|---|
user.created | New user + party allocated | userId, partyId, trustLevel |
user.upgraded | Trust level migration complete | fromLevel, toLevel |
tx.submitted | Daml command sent to Canton | commandId, templateId |
tx.completed | Transaction confirmed on ledger | updateId, contractId |
tx.failed | Transaction rejected | error, message |
reward.claimed | ClaimReward choice exercised | amount, contractId |
reward.processed | ProcessClaim choice exercised | claimId, amount |
app.verified | App verified by operator | appId, tier |