Kaiten

IntegrationsWebhooks

Event Catalog

All 55 domain events Kaiten emits, across 10 domains — names, versioned types, what triggers each one, and the payload contract it carries.

Kaiten Cloud

Kaiten emits 55 domain events across 10 domains. This page lists every one of them. The events exist on every edition — the badge marks the delivery path this section documents: on Kaiten Cloud they reach your webhook endpoints; on a self-hosted stack you consume them from RabbitMQ. Same names, same types, same data on both paths.

The contract

Every event is a published contract of three fields, and a delivery can carry a fourth, optional one:

FieldContentExample
nameThe stable event identifierCUSTOMER_CREATED
typeThe versioned type — the domain, a version, and the actioncom.kaiten.customer.v1.created
dataThe payload: the entity as it stands after the change, or a change recordThe Customer object
headersOptional. Metadata about the event, outside its payload: instance_id, the id of the Instance the event concerns, and traceparent, the W3C trace context of the request that produced it{ "instance_id": "c2f7…", "traceparent": "00-…-…-01" }

headers is present when the event has metadata to carry, and a consumer should ignore the keys it does not read. instance_id is set on every event of the Instances domain. It is where a usage event names its Instance: the usage payloads identify the entitlement — EntitlementUsage the License too — and only the period rollover and the value read carry an instance_id of their own.

The Payload column below names the schema data carries. Entity snapshots (Customer, Instance, License, …) are the same objects the REST API returns, with camelCase fields; change records (InstanceStatusChanged, InstanceEntitlementCapExceeded, …) are event-specific and use snake_case fields. Every contract — field by field, with its schema — is in the generated API reference's Webhooks group, one page per event: that is the exhaustive machine view of this catalog.

Two kinds of events run through the catalog. Changes (created, updated, deleted, assigned, deployed) fire once per write. Evaluations — ENTITLEMENT_VALUE_GET, FEATURE_FLAG_EVALUATED, the usage-report outcomes — fire on every read, report, or evaluation, at your product's request rate. Subscribe an endpoint to the evaluation events deliberately.

Customers

EventTypeTriggerPayload
CUSTOMER_CREATEDcom.kaiten.customer.v1.createdA customer is createdCustomer
CUSTOMER_UPDATEDcom.kaiten.customer.v1.updatedA customer is updatedCustomer
CUSTOMER_DELETEDcom.kaiten.customer.v1.deletedA customer is deletedCustomer
CUSTOMER_CREATION_REJECTEDcom.kaiten.customer.v1.creation_rejectedA customer creation is refused because the organization has reached its customer entitlement cap; no customer is createdCustomerCreationRejected

Instances

EventTypeTriggerPayload
INSTANCE_CREATEDcom.kaiten.instance.v1.createdAn instance is createdInstance
INSTANCE_UPDATEDcom.kaiten.instance.v1.updatedAn instance is updatedInstance
INSTANCE_DELETEDcom.kaiten.instance.v1.deletedAn instance is deletedInstance
INSTANCE_STATUS_CHANGEDcom.kaiten.instance.v1.status_changedThe operational status changes (HEALTHY, DEGRADED, INCIDENT, MAINTENANCE)InstanceStatusChanged
INSTANCE_LIFECYCLE_STAGE_CHANGEDcom.kaiten.instance.v1.lifecycle_stage_changedThe commercial lifecycle stage changesInstanceLifecycleStageChanged
INSTANCE_DEPLOYEDcom.kaiten.instance.v1.deployedAn instance is deployed to a deployment zoneInstance
INSTANCE_MIGRATEDcom.kaiten.instance.v1.migratedAn instance is migrated from one deployment zone to anotherInstance
INSTANCE_ENTITLEMENT_USAGE_WARNING_THRESHOLD_REACHEDcom.kaiten.instance.entitlement.v1.usage_warning_threshold_reachedUsage crosses the entitlement's early-warning percentage, below the cap — once per crossingInstanceEntitlementUsageWarningThresholdReached
INSTANCE_ENTITLEMENT_USAGE_REACHEDcom.kaiten.instance.entitlement.v1.usage_reachedUsage reaches the granted value exactlyEntitlementUsage
INSTANCE_ENTITLEMENT_CAP_EXCEEDEDcom.kaiten.instance.entitlement.v1.cap_exceededUsage crosses the granted value upward and stays within the grant's overage allowance (limit_cap_exceeded_overage_percent above 0) — the report is accepted, overage included; once per crossingInstanceEntitlementCapExceeded
ENTITLEMENT_USAGE_REPORT_ACCEPTEDcom.kaiten.instance.entitlement.v1.usage_report_acceptedA usage report is persisted, including one that lands inside a grant's overage allowanceInstanceEntitlementUsageReportAccepted
ENTITLEMENT_USAGE_REPORT_REJECTEDcom.kaiten.instance.entitlement.v1.usage_report_rejectedA usage report is refused because it would take usage past the grant's maximum — the granted value at a hard cap (0), or the value plus its allowance; nothing is persistedInstanceEntitlementUsageReportAccepted
INSTANCE_ENTITLEMENT_USAGE_PERIOD_ROLLED_OVERcom.kaiten.instance.entitlement.v1.usage_period_rolled_overA report closes a usage window — one event for the entitlement's stored bucket, plus one synthetic event per window skipped entirely since the last reportInstanceEntitlementUsagePeriodRolledOver
ENTITLEMENT_VALUE_GETcom.kaiten.instance.entitlement.v1.value_getAn instance entitlement's usage value is read — a read-audit signal, not a state changeInstanceEntitlementValueGet

Licenses

EventTypeTriggerPayload
LICENSE_CREATEDcom.kaiten.license.v1.createdA license is createdLicense
LICENSE_UPDATEDcom.kaiten.license.v1.updatedA license is updatedLicense
LICENSE_DELETEDcom.kaiten.license.v1.deletedA license is deletedLicense
LICENSE_PUBLISHEDcom.kaiten.license.v1.publishedA draft license version is published and goes on saleLicense
LICENSE_ARCHIVEDcom.kaiten.license.v1.archivedA published license version is archived and withdrawn from saleLicense
LICENSE_UNARCHIVEDcom.kaiten.license.v1.unarchivedAn archived license version is put back on saleLicense
LICENSE_ENTITLEMENT_ASSIGNEDcom.kaiten.license.entitlement.v1.assignedAn entitlement is assigned to a licenseLicenseEntitlement
LICENSE_ENTITLEMENT_UPDATEDcom.kaiten.license.entitlement.v1.updatedA license entitlement's value is updatedLicenseEntitlement
LICENSE_ENTITLEMENT_UNASSIGNEDcom.kaiten.license.entitlement.v1.unassignedAn entitlement is unassigned from a licenseLicenseEntitlement
LICENSE_FAMILY_CREATEDcom.kaiten.license_family.v1.createdA license is created without naming a family: its version 1 opens a new one. Recorded in the same transaction as that version's LICENSE_CREATEDLicenseFamilyView
LICENSE_FAMILY_UPDATEDcom.kaiten.license_family.v1.updatedThe family starts serving another version, or none — a version published, archived or unarchived, the family's default taken or given up, or the served version deleted. Recorded with the version event that caused it; a change that leaves the served version where it was emits nothingLicenseFamilyView
LICENSE_FAMILY_DELETEDcom.kaiten.license_family.v1.deletedThe family's last version is deleted, which deletes the family and frees its slug. Recorded in the same transaction as that version's LICENSE_DELETEDLicenseFamilyView

A License family is the product its versions belong to. It has no write operation of its own — its first version opens it and its last one takes it away — so its three events are recorded by the version writes that change it, and they are listed here, under Licenses: the catalog keeps 10 domains. LicenseFamilyView carries the family and, in currentVersion, the version it serves — absent while the family has nothing published.

Entitlements

EventTypeTriggerPayload
ENTITLEMENT_CREATEDcom.kaiten.entitlement.v1.createdAn entitlement is createdEntitlement
ENTITLEMENT_UPDATEDcom.kaiten.entitlement.v1.updatedAn entitlement is updatedEntitlement
ENTITLEMENT_DELETEDcom.kaiten.entitlement.v1.deletedAn entitlement is deletedEntitlement
ENTITLEMENT_GROUP_CREATEDcom.kaiten.entitlement_group.v1.createdAn entitlement group is createdEntitlementGroup
ENTITLEMENT_GROUP_UPDATEDcom.kaiten.entitlement_group.v1.updatedAn entitlement group is updatedEntitlementGroup
ENTITLEMENT_GROUP_DELETEDcom.kaiten.entitlement_group.v1.deletedAn entitlement group is deletedEntitlementGroup

Feature flags

EventTypeTriggerPayload
FEATURE_FLAG_CREATEDcom.kaiten.feature_flag.v1.createdA feature flag is createdFeatureFlag
FEATURE_FLAG_UPDATEDcom.kaiten.feature_flag.v1.updatedA feature flag is updatedFeatureFlag
FEATURE_FLAG_DELETEDcom.kaiten.feature_flag.v1.deletedA feature flag is deletedFeatureFlag
FEATURE_FLAG_EVALUATEDcom.kaiten.feature_flag.v1.evaluatedA flag is evaluated. The payload carries the flag, the variant, and the reason — no evaluation context, so no targeting key or user attribute is exposedFeatureFlagEvaluated

Components

EventTypeTriggerPayload
COMPONENT_CREATEDcom.kaiten.component.v1.createdA component is createdComponent
COMPONENT_UPDATEDcom.kaiten.component.v1.updatedA component is updated or auto-versionedComponent
COMPONENT_DELETEDcom.kaiten.component.v1.deletedA component is deletedComponent

Releases

EventTypeTriggerPayload
RELEASE_CREATEDcom.kaiten.release.v1.createdA release is createdRelease
RELEASE_DELETEDcom.kaiten.release.v1.deletedA release is deletedRelease

Deployment zones

EventTypeTriggerPayload
DEPLOYMENT_ZONE_CREATEDcom.kaiten.deployment_zone.v1.createdA deployment zone is createdDeploymentZone
DEPLOYMENT_ZONE_UPDATEDcom.kaiten.deployment_zone.v1.updatedA deployment zone is updatedDeploymentZone
DEPLOYMENT_ZONE_DELETEDcom.kaiten.deployment_zone.v1.deletedA deployment zone is deletedDeploymentZone
RELEASE_DEPLOYEDcom.kaiten.deployment_zone.v1.release_deployedA release is deployed to a deployment zone — at zone creation, or when an existing zone's release changesDeployment

Metadata fields

EventTypeTriggerPayload
METADATA_FIELD_CREATEDcom.kaiten.metadata_field.v1.createdA metadata field is declared for a resource typeMetadataField
METADATA_FIELD_UPDATEDcom.kaiten.metadata_field.v1.updatedA field's label or JSON schema changes (a reordering emits METADATA_FIELD_REORDERED instead)MetadataField
METADATA_FIELD_ARCHIVEDcom.kaiten.metadata_field.v1.archivedA field is archived and leaves the active schema compositionMetadataField
METADATA_FIELD_UNARCHIVEDcom.kaiten.metadata_field.v1.unarchivedAn archived field is restored to the active schema compositionMetadataField
METADATA_FIELD_REORDEREDcom.kaiten.metadata_field.v1.reorderedThe display order of a resource type's fields is rewrittenMetadataFieldReordered

Identity

EventTypeTriggerPayload
SYSTEM_ORGANIZATION_TOKEN_ISSUEDcom.kaiten.identity.v1.system_token_issuedA platform credential mints an organization-scoped credential for the system:kaiten platform identity inside your organization. The payload carries the minting credential and the scopes granted, never the credential value. Expect it at the rate an integration refreshes — 96 a day per process at a 15-minute lifetime, more if it refreshes before expirySystemTokenIssuance

Subscribing

On Kaiten Cloud, a webhook endpoint subscribes to events by type — the second column above — and receives every event whose type is on its list, and nothing else. POST /webhooks takes those types in eventTypes and refuses an event name with 400; there is no "all events" subscription. Create the endpoint under Integrations → Webhooks or over the API; managing endpoints has both. Delivery is at least once, so a handler should be idempotent; retries and the delivery history are on delivery and retries.

The console's New Webhook dialog offers 53 of the 55 events. It leaves out ENTITLEMENT_VALUE_GET and FEATURE_FLAG_EVALUATED, which fire on every entitlement read and every flag evaluation: subscribe an endpoint to either over the API, by its type.

On a self-hosted stack, the same names arrive as the outbox row's event_name, and each message's type is the event's, which your consumer filters on — consuming events. Inside the API, one delivery of the same stream is fanned out to several in-process consumers — the audit trail, and a CRM connector for the organizations that activated one — each keeping its own record of what it has processed, so a failure in one is retried for that one alone. Your consumer is not part of that fan-out: it binds its own queue to the exchange and keeps its own record.

Where to go next

On this page