API Reference
Webhook Events

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

EventTriggerKey Data
user.createdNew user + party allocateduserId, partyId, trustLevel
user.upgradedTrust level migration completefromLevel, toLevel
tx.submittedDaml command sent to CantoncommandId, templateId
tx.completedTransaction confirmed on ledgerupdateId, contractId
tx.failedTransaction rejectederror, message
reward.claimedClaimReward choice exercisedamount, contractId
reward.processedProcessClaim choice exercisedclaimId, amount
app.verifiedApp verified by operatorappId, tier