Wocha Docs

Event catalogue

Complete reference for every webhook event type emitted by the Wocha platform

Complete reference for every webhook event type emitted by the Wocha platform. These events are persisted to the Events API and delivered to registered webhook subscribers.

Envelope format

Every webhook delivery uses the same top-level envelope:

FieldTypeDescription
event_typestringCanonical event identifier (see table below)
event_idstringUnique UUID for this delivery
timestampstringISO 8601 timestamp included in the HMAC signature
idempotency_keystringUUID for subscriber-side deduplication
dataobjectEvent-specific payload (documented per event)

Request headers

Content-Type: application/json
X-Wocha-Signature: t=2026-06-11T12:00:00.000Z,v1=<hmac_hex>
X-Webhook-Event: user.created
X-Webhook-Id: 550e8400-e29b-41d4-a716-446655440000
X-Webhook-Timestamp: 2026-06-11T12:00:00.000Z
X-Idempotency-Key: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
X-Webhook-Attempt: 1
X-Webhook-Source: platform-api

Legacy event names

Some internal dispatch paths still emit legacy names. The Events API normalizes these automatically:

Legacy nameCanonical name
org.createdorganisation.created
org.updatedorganisation.updated
org.deletedorganisation.deleted
org.member.addedorganisation.member_added
org.member.removedorganisation.member_removed
org.member.updatedorganisation.member_updated
org.member.default_roles_appliedorganisation.member_default_roles_applied

Webhook subscribers may receive either form depending on the emitting code path. Treat both as equivalent.


User events

user.created

Description: A new identity was registered in the tenant.

When it fires:

  • Self-service registration completes (Kratos post-registration hook)
  • An admin creates a user via the Management API
  • SCIM or bulk import provisions a new identity

Example payload:

{
  "event_type": "user.created",
  "event_id": "550e8400-e29b-41d4-a716-446655440000",
  "timestamp": "2026-06-11T12:00:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
  "data": {
    "id": "user_abc123",
    "email": "dev@example.com",
    "name": "Dev User",
    "org_id": "org_xyz",
    "created_at": "2026-06-11T12:00:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesIdentity ID (identity_id in some dispatch paths)
data.emailstringyesPrimary email address
data.namestringnoDisplay name or { first, last } object
data.org_idstringnoOrganisation the user was assigned to at creation
data.created_atstringyesISO 8601 creation timestamp

user.updated

Description: User traits, metadata, or account state changed.

When it fires:

  • Profile fields are edited in Console or via API
  • Account state transitions (e.g. activesuspended)
  • Email or name traits are updated

Example payload:

{
  "event_type": "user.updated",
  "event_id": "550e8400-e29b-41d4-a716-446655440001",
  "timestamp": "2026-06-11T12:05:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430c9",
  "data": {
    "id": "user_abc123",
    "email": "dev@example.com",
    "name": "Dev User",
    "state": "active",
    "updated_at": "2026-06-11T12:05:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesIdentity ID
data.emailstringnoUpdated email (if changed)
data.namestringnoUpdated display name
data.statestringnoAccount state (active, suspended, etc.)
data.updated_atstringyesISO 8601 update timestamp

user.deleted

Description: An identity was permanently removed from the tenant.

When it fires:

  • Admin deletes a user via Console or Management API
  • SCIM deprovisioning removes the identity
  • GDPR erasure workflow completes

Example payload:

{
  "event_type": "user.deleted",
  "event_id": "550e8400-e29b-41d4-a716-446655440002",
  "timestamp": "2026-06-11T12:10:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430ca",
  "data": {
    "id": "user_abc123",
    "deleted_at": "2026-06-11T12:10:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesDeleted identity ID
data.deleted_atstringyesISO 8601 deletion timestamp

Session events

session.created

Description: A new authenticated session was issued.

When it fires:

  • User completes sign-in (password, social, SSO, or passkey)
  • Token refresh creates a new session record (if configured)
  • Machine-to-machine token exchange issues a session

Example payload:

{
  "event_type": "session.created",
  "event_id": "550e8400-e29b-41d4-a716-446655440003",
  "timestamp": "2026-06-11T12:15:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430cb",
  "data": {
    "id": "sess_def456",
    "identity_id": "user_abc123",
    "authenticated_at": "2026-06-11T12:15:00.000Z",
    "expires_at": "2026-06-12T12:15:00.000Z",
    "aal": "aal1",
    "org_id": "org_xyz"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesSession ID
data.identity_idstringyesIdentity that owns the session
data.authenticated_atstringyesISO 8601 authentication timestamp
data.expires_atstringyesISO 8601 session expiry
data.aalstringyesAuthenticator assurance level (aal1, aal2)
data.org_idstringnoActive organisation context

session.revoked

Description: A session was terminated before its natural expiry.

When it fires:

  • User signs out
  • Admin revokes a session via Console or API
  • Security policy forces session invalidation
  • Password reset or account suspension revokes active sessions

Example payload:

{
  "event_type": "session.revoked",
  "event_id": "550e8400-e29b-41d4-a716-446655440004",
  "timestamp": "2026-06-11T13:00:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430cc",
  "data": {
    "id": "sess_def456",
    "identity_id": "user_abc123",
    "revoked_at": "2026-06-11T13:00:00.000Z",
    "reason": "user_logout"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesRevoked session ID
data.identity_idstringyesIdentity that owned the session
data.revoked_atstringyesISO 8601 revocation timestamp
data.reasonstringnoRevocation reason (user_logout, admin_revoke, policy)

Organisation events

organisation.created

Description: A new organisation was created in the tenant hierarchy.

When it fires:

  • Admin creates an organisation via Console or Management API
  • Self-service org signup completes
  • Parent org provisions a child organisation

Example payload:

{
  "event_type": "organisation.created",
  "event_id": "550e8400-e29b-41d4-a716-446655440005",
  "timestamp": "2026-06-11T14:00:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430cd",
  "data": {
    "id": "org_xyz",
    "slug": "acme-corp",
    "display_name": "Acme Corp",
    "parent_id": "org_root",
    "created_at": "2026-06-11T14:00:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesOrganisation ID
data.slugstringyesURL-safe identifier
data.display_namestringyesHuman-readable name
data.parent_idstringnoParent organisation ID (for nested hierarchies)
data.created_atstringyesISO 8601 creation timestamp

organisation.updated

Description: Organisation metadata or configuration changed.

When it fires:

  • Display name or slug is updated
  • Organisation settings are modified via Console or API
  • Branding or metadata fields change

Example payload:

{
  "event_type": "organisation.updated",
  "event_id": "550e8400-e29b-41d4-a716-446655440006",
  "timestamp": "2026-06-11T14:30:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430ce",
  "data": {
    "id": "org_xyz",
    "slug": "acme-corp",
    "display_name": "Acme Corporation",
    "updated_at": "2026-06-11T14:30:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesOrganisation ID
data.slugstringnoUpdated slug (if changed)
data.display_namestringnoUpdated display name
data.updated_atstringyesISO 8601 update timestamp

organisation.deleted

Description: An organisation was permanently removed.

When it fires:

  • Admin deletes an organisation via Console or Management API
  • Tenant cleanup removes an empty organisation

Example payload:

{
  "event_type": "organisation.deleted",
  "event_id": "550e8400-e29b-41d4-a716-446655440007",
  "timestamp": "2026-06-11T15:00:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430cf",
  "data": {
    "id": "org_xyz",
    "deleted_at": "2026-06-11T15:00:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesDeleted organisation ID
data.deleted_atstringyesISO 8601 deletion timestamp

organisation.member_added

Description: A user was added to an organisation with a role.

When it fires:

  • Admin invites or adds a member via Console or API
  • SCIM group sync adds a user to an organisation
  • Self-service join flow completes

Example payload:

{
  "event_type": "organisation.member_added",
  "event_id": "550e8400-e29b-41d4-a716-446655440008",
  "timestamp": "2026-06-11T14:05:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430d0",
  "data": {
    "org_id": "org_xyz",
    "identity_id": "user_abc123",
    "role": "member",
    "added_at": "2026-06-11T14:05:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.org_idstringyesOrganisation ID
data.identity_idstringyesAdded member's identity ID
data.rolestringyesAssigned role (owner, admin, member)
data.added_atstringyesISO 8601 timestamp

organisation.member_removed

Description: A user was removed from an organisation.

When it fires:

  • Admin removes a member via Console or API
  • SCIM deprovisioning removes group membership
  • User leaves an organisation voluntarily

Example payload:

{
  "event_type": "organisation.member_removed",
  "event_id": "550e8400-e29b-41d4-a716-446655440009",
  "timestamp": "2026-06-11T14:10:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430d1",
  "data": {
    "org_id": "org_xyz",
    "identity_id": "user_abc123",
    "removed_at": "2026-06-11T14:10:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.org_idstringyesOrganisation ID
data.identity_idstringyesRemoved member's identity ID
data.removed_atstringyesISO 8601 timestamp

organisation.member_updated

Description: A member's role or permissions within an organisation changed.

When it fires:

  • Admin changes a member's role via Console or API
  • SCIM group sync updates role assignment
  • Default roles are applied after org creation

Example payload:

{
  "event_type": "organisation.member_updated",
  "event_id": "550e8400-e29b-41d4-a716-44665544000a",
  "timestamp": "2026-06-11T14:15:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430d2",
  "data": {
    "org_id": "org_xyz",
    "identity_id": "user_abc123",
    "role": "admin",
    "previous_role": "member",
    "updated_at": "2026-06-11T14:15:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.org_idstringyesOrganisation ID
data.identity_idstringyesMember's identity ID
data.rolestringyesNew role
data.previous_rolestringnoPrevious role (if known)
data.updated_atstringyesISO 8601 timestamp

organisation.member_default_roles_applied

Description: Default roles were applied to an organisation member after join or provisioning.

When it fires:

  • A new member is added and tenant default role policy runs
  • SCIM provisioning applies configured default roles
  • Admin invite acceptance triggers default role assignment

Example payload:

{
  "event_type": "organisation.member_default_roles_applied",
  "event_id": "550e8400-e29b-41d4-a716-44665544000b",
  "timestamp": "2026-06-11T14:20:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430d3",
  "data": {
    "org_id": "org_xyz",
    "identity_id": "user_abc123",
    "roles": ["member"],
    "applied_at": "2026-06-11T14:20:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.org_idstringyesOrganisation ID
data.identity_idstringyesMember's identity ID
data.rolesstring[]yesRoles that were applied
data.applied_atstringyesISO 8601 timestamp

Connection events

connection.created

Description: A social, enterprise SSO, or SCIM connection was added to the tenant.

When it fires:

  • Admin configures a new OIDC/SAML connection
  • Social login provider is enabled
  • SCIM provisioning endpoint is registered

Example payload:

{
  "event_type": "connection.created",
  "event_id": "550e8400-e29b-41d4-a716-44665544000b",
  "timestamp": "2026-06-11T16:00:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430d3",
  "data": {
    "id": "conn_abc123",
    "type": "oidc",
    "provider": "okta",
    "created_at": "2026-06-11T16:00:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesConnection ID
data.typestringyesConnection type (oidc, saml, social, scim)
data.providerstringyesProvider identifier (okta, google, github, etc.)
data.created_atstringyesISO 8601 creation timestamp

connection.activated

Description: A connection was enabled and is now available for authentication.

When it fires:

  • Admin toggles a connection to active
  • Domain verification completes for an enterprise connection
  • Connection health check passes after initial setup

Example payload:

{
  "event_type": "connection.activated",
  "event_id": "550e8400-e29b-41d4-a716-44665544000c",
  "timestamp": "2026-06-11T16:30:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430d4",
  "data": {
    "id": "conn_abc123",
    "type": "oidc",
    "provider": "okta",
    "activated_at": "2026-06-11T16:30:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesConnection ID
data.typestringyesConnection type
data.providerstringyesProvider identifier
data.activated_atstringyesISO 8601 activation timestamp

connection.deactivated

Description: A connection was disabled and is no longer available for authentication.

When it fires:

  • Admin disables a connection via Console or API
  • Automated health monitoring marks a connection unhealthy
  • Provider certificate expiry triggers deactivation

Example payload:

{
  "event_type": "connection.deactivated",
  "event_id": "550e8400-e29b-41d4-a716-44665544000d",
  "timestamp": "2026-06-11T17:00:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430d5",
  "data": {
    "id": "conn_abc123",
    "type": "oidc",
    "provider": "okta",
    "deactivated_at": "2026-06-11T17:00:00.000Z",
    "reason": "admin_disabled"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesConnection ID
data.typestringyesConnection type
data.providerstringyesProvider identifier
data.deactivated_atstringyesISO 8601 deactivation timestamp
data.reasonstringnoDeactivation reason

Application events

application.created

Description: A new OAuth client application was registered.

When it fires:

  • Admin creates an application via Console or Management API
  • CLI auto-provisioning creates an OAuth app during wocha init
  • Terraform provider creates an application resource

Example payload:

{
  "event_type": "application.created",
  "event_id": "550e8400-e29b-41d4-a716-44665544000e",
  "timestamp": "2026-06-11T18:00:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430d6",
  "data": {
    "id": "app_abc123",
    "client_id": "client_xyz789",
    "client_name": "My Web App",
    "created_at": "2026-06-11T18:00:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesApplication ID
data.client_idstringyesOAuth client ID
data.client_namestringyesHuman-readable application name
data.created_atstringyesISO 8601 creation timestamp

application.updated

Description: OAuth application configuration changed.

When it fires:

  • Redirect URIs, grant types, or scopes are modified
  • Application name or metadata is updated
  • Token endpoint auth method changes

Example payload:

{
  "event_type": "application.updated",
  "event_id": "550e8400-e29b-41d4-a716-44665544000f",
  "timestamp": "2026-06-11T18:30:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430d7",
  "data": {
    "id": "app_abc123",
    "client_id": "client_xyz789",
    "client_name": "My Web App (Production)",
    "updated_at": "2026-06-11T18:30:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesApplication ID
data.client_idstringyesOAuth client ID
data.client_namestringnoUpdated application name
data.updated_atstringyesISO 8601 update timestamp

application.deleted

Description: An OAuth client application was permanently removed.

When it fires:

  • Admin deletes an application via Console or Management API
  • Terraform destroy removes an application resource

Example payload:

{
  "event_type": "application.deleted",
  "event_id": "550e8400-e29b-41d4-a716-446655440010",
  "timestamp": "2026-06-11T19:00:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430d8",
  "data": {
    "id": "app_abc123",
    "client_id": "client_xyz789",
    "deleted_at": "2026-06-11T19:00:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesDeleted application ID
data.client_idstringyesOAuth client ID
data.deleted_atstringyesISO 8601 deletion timestamp

API key events

api_key.created

Description: A new Management API key was created.

When it fires:

  • Admin creates an API key via Console or Management API
  • Terraform wocha_api_key resource is created
  • CLI auto-provisioning generates a key during setup

Example payload:

{
  "event_type": "api_key.created",
  "event_id": "550e8400-e29b-41d4-a716-446655440011",
  "timestamp": "2026-06-11T19:30:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430d9",
  "data": {
    "id": "key_abc123",
    "name": "CI deploy",
    "prefix": "wocha_mgmt_abc",
    "scopes": ["applications:read", "applications:write"],
    "environment_id": "env_staging",
    "created_at": "2026-06-11T19:30:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesAPI key ID
data.namestringyesHuman-readable key name
data.prefixstringyesKey prefix (secret is never included)
data.scopesstring[]noGranted scopes
data.environment_idstringnoEnvironment scope, if any
data.created_atstringyesISO 8601 creation timestamp

api_key.rotated

Description: An API key was rotated — a new key replaces the old one.

When it fires:

  • Admin rotates a key via Console or Management API
  • Scheduled rotation policy executes

Example payload:

{
  "event_type": "api_key.rotated",
  "event_id": "550e8400-e29b-41d4-a716-446655440012",
  "timestamp": "2026-06-11T19:35:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430da",
  "data": {
    "id": "key_abc123",
    "previous_id": "key_old456",
    "name": "CI deploy",
    "prefix": "wocha_mgmt_xyz",
    "rotated_at": "2026-06-11T19:35:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesNew API key ID
data.previous_idstringyesPrevious key ID (now revoked)
data.namestringyesKey name
data.prefixstringyesNew key prefix
data.rotated_atstringyesISO 8601 rotation timestamp

api_key.revoked

Description: An API key was permanently revoked.

When it fires:

  • Admin revokes a key via Console or Management API
  • Key rotation retires the previous key
  • Security policy disables a compromised key

Example payload:

{
  "event_type": "api_key.revoked",
  "event_id": "550e8400-e29b-41d4-a716-446655440013",
  "timestamp": "2026-06-11T19:40:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430db",
  "data": {
    "id": "key_old456",
    "name": "CI deploy",
    "revoked_at": "2026-06-11T19:40:00.000Z",
    "reason": "rotation"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesRevoked API key ID
data.namestringnoKey name
data.revoked_atstringyesISO 8601 revocation timestamp
data.reasonstringnoRevocation reason (rotation, admin_revoke, policy)

Environment events

environment.created

Description: A new environment was created for config isolation (e.g. staging, production).

When it fires:

  • Admin creates an environment via Console or Management API
  • Terraform or CLI provisioning creates a default environment

Example payload:

{
  "event_type": "environment.created",
  "event_id": "550e8400-e29b-41d4-a716-446655440014",
  "timestamp": "2026-06-11T20:00:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430dc",
  "data": {
    "id": "env_staging",
    "name": "Staging",
    "slug": "staging",
    "created_at": "2026-06-11T20:00:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesEnvironment ID
data.namestringyesDisplay name
data.slugstringyesURL-safe identifier
data.created_atstringyesISO 8601 creation timestamp

environment.updated

Description: Environment metadata or configuration changed.

When it fires:

  • Display name or slug is updated via Console or API
  • Environment settings are modified

Example payload:

{
  "event_type": "environment.updated",
  "event_id": "550e8400-e29b-41d4-a716-446655440015",
  "timestamp": "2026-06-11T20:15:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430dd",
  "data": {
    "id": "env_staging",
    "name": "Staging (EU)",
    "slug": "staging",
    "updated_at": "2026-06-11T20:15:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesEnvironment ID
data.namestringnoUpdated display name
data.slugstringnoUpdated slug
data.updated_atstringyesISO 8601 update timestamp

environment.deleted

Description: An environment was permanently removed.

When it fires:

  • Admin deletes an environment via Console or Management API
  • Tenant cleanup removes an unused environment

Example payload:

{
  "event_type": "environment.deleted",
  "event_id": "550e8400-e29b-41d4-a716-446655440016",
  "timestamp": "2026-06-11T20:30:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430de",
  "data": {
    "id": "env_staging",
    "deleted_at": "2026-06-11T20:30:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesDeleted environment ID
data.deleted_atstringyesISO 8601 deletion timestamp

environment.promoted

Description: Configuration was promoted from one environment to another.

When it fires:

  • Admin promotes staging config to production via Console or Management API
  • CI/CD pipeline triggers an environment promotion

Example payload:

{
  "event_type": "environment.promoted",
  "event_id": "550e8400-e29b-41d4-a716-446655440017",
  "timestamp": "2026-06-11T20:45:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430df",
  "data": {
    "source_environment_id": "env_staging",
    "target_environment_id": "env_production",
    "promoted_at": "2026-06-11T20:45:00.000Z",
    "resources": ["applications", "connections", "webhooks"]
  }
}

Available fields:

FieldTypeRequiredDescription
data.source_environment_idstringyesSource environment ID
data.target_environment_idstringyesTarget environment ID
data.promoted_atstringyesISO 8601 promotion timestamp
data.resourcesstring[]noResource types included in the promotion

Feature flag events

feature_flag.created

Description: A new feature flag was created.

When it fires:

  • Admin creates a flag via Console or Management API
  • Terraform or config sync provisions a new flag

Example payload:

{
  "event_type": "feature_flag.created",
  "event_id": "550e8400-e29b-41d4-a716-446655440018",
  "timestamp": "2026-06-11T21:00:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430e0",
  "data": {
    "id": "flag_new_dashboard",
    "key": "new_dashboard",
    "name": "New dashboard",
    "enabled": false,
    "created_at": "2026-06-11T21:00:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesFeature flag ID
data.keystringyesFlag key used in evaluation
data.namestringyesHuman-readable name
data.enabledbooleanyesDefault enabled state
data.created_atstringyesISO 8601 creation timestamp

feature_flag.updated

Description: Feature flag configuration or overrides changed.

When it fires:

  • Flag default value or targeting rules are updated
  • Per-organisation or per-user overrides are added or modified

Example payload:

{
  "event_type": "feature_flag.updated",
  "event_id": "550e8400-e29b-41d4-a716-446655440019",
  "timestamp": "2026-06-11T21:15:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430e1",
  "data": {
    "id": "flag_new_dashboard",
    "key": "new_dashboard",
    "enabled": true,
    "updated_at": "2026-06-11T21:15:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesFeature flag ID
data.keystringyesFlag key
data.enabledbooleannoUpdated default enabled state
data.updated_atstringyesISO 8601 update timestamp

feature_flag.deleted

Description: A feature flag was permanently removed.

When it fires:

  • Admin deletes a flag via Console or Management API
  • Config cleanup removes an unused flag

Example payload:

{
  "event_type": "feature_flag.deleted",
  "event_id": "550e8400-e29b-41d4-a716-44665544001a",
  "timestamp": "2026-06-11T21:30:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430e2",
  "data": {
    "id": "flag_new_dashboard",
    "key": "new_dashboard",
    "deleted_at": "2026-06-11T21:30:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesDeleted feature flag ID
data.keystringyesFlag key
data.deleted_atstringyesISO 8601 deletion timestamp

Tenant events

tenant.signup

Description: A new tenant signed up for Wocha Cloud.

When it fires:

  • Self-service signup completes on wocha.ai
  • Sales-assisted onboarding creates a pending tenant record

Example payload:

{
  "event_type": "tenant.signup",
  "event_id": "550e8400-e29b-41d4-a716-44665544001b",
  "timestamp": "2026-06-11T22:00:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430e3",
  "data": {
    "tenant_id": "tenant_abc123",
    "slug": "acme-corp",
    "email": "admin@acme.com",
    "signed_up_at": "2026-06-11T22:00:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.tenant_idstringyesTenant ID
data.slugstringyesTenant slug
data.emailstringyesPrimary admin email
data.signed_up_atstringyesISO 8601 signup timestamp

tenant.provisioned

Description: A tenant was fully provisioned and activated.

When it fires:

  • Schema provisioning and default config seeding complete
  • Tenant transitions from pending to active status

Example payload:

{
  "event_type": "tenant.provisioned",
  "event_id": "550e8400-e29b-41d4-a716-44665544001c",
  "timestamp": "2026-06-11T22:05:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430e4",
  "data": {
    "tenant_id": "tenant_abc123",
    "slug": "acme-corp",
    "provisioned_at": "2026-06-11T22:05:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.tenant_idstringyesTenant ID
data.slugstringyesTenant slug
data.provisioned_atstringyesISO 8601 provisioning timestamp

Product events

product.registered

Description: A product was registered for a tenant.

When it fires:

  • Admin registers a product via Console or Management API
  • Onboarding flow creates the initial product record for billing and entitlements

Example payload:

{
  "event_type": "product.registered",
  "event_id": "550e8400-e29b-41d4-a716-44665544001d",
  "timestamp": "2026-06-11T22:30:00.000Z",
  "idempotency_key": "6ba7b810-9dad-11d1-80b4-00c04fd430e5",
  "data": {
    "id": "prod_abc123",
    "name": "Acme Platform",
    "slug": "acme-platform",
    "registered_at": "2026-06-11T22:30:00.000Z"
  }
}

Available fields:

FieldTypeRequiredDescription
data.idstringyesProduct ID
data.namestringyesProduct name
data.slugstringyesURL-safe identifier
data.registered_atstringyesISO 8601 registration timestamp

Quick reference

Event typeCategory
user.createdUser
user.updatedUser
user.deletedUser
session.createdSession
session.revokedSession
organisation.createdOrganisation
organisation.updatedOrganisation
organisation.deletedOrganisation
organisation.member_addedOrganisation
organisation.member_removedOrganisation
organisation.member_updatedOrganisation
connection.createdConnection
connection.activatedConnection
connection.deactivatedConnection
application.createdApplication
application.updatedApplication
application.deletedApplication
organisation.member_default_roles_appliedOrganisation
api_key.createdAPI key
api_key.rotatedAPI key
api_key.revokedAPI key
environment.createdEnvironment
environment.updatedEnvironment
environment.deletedEnvironment
environment.promotedEnvironment
feature_flag.createdFeature flag
feature_flag.updatedFeature flag
feature_flag.deletedFeature flag
tenant.signupTenant
tenant.provisionedTenant
product.registeredProduct