Event Catalog Canonical list of every PlatformXe domain event you can subscribe to, grouped by service.
PlatformXe emits 134 typed domain events across 22 services. Every event constant lives in src/lib/events/platform-events.ts (PlatformEvents enum) — that file is the source of truth and the one this page mirrors. Names are SCREAMING_SNAKE_CASE and that's exactly the string you pass to event-subscriptions , use in workflow triggers, or match against in webhook handlers.
Bus shapes for each event live in @caldera/events — install the package and import the typed payload interface (e.g. RoleCreatedPayload) for compile-time safety in subscriber handlers. Subscribers can wildcard-match a service prefix (e.g. FRAUD_*) when developing, then narrow to specific events for production.
Authorization (10)
Event Description ROLE_CREATEDNew permission role created. ROLE_UPDATEDRole name/description/model edited. ROLE_DELETEDRole deleted. ROLE_CAPABILITIES_UPDATEDSIMPLE-model capability list changed for a role. ROLE_MODULE_PERMISSIONS_UPDATEDFULL-model module/action grants changed for a role. PERMISSION_OVERRIDE_CREATEDPer-user override added (allow or deny). PERMISSION_OVERRIDE_DELETEDPer-user override removed. RESOURCE_POLICY_CREATEDABAC resource policy created. RESOURCE_POLICY_UPDATEDABAC resource policy edited. RESOURCE_POLICY_DELETEDABAC resource policy deleted.
Documents & Storage (6)
Event Description DOCUMENT_CREATEDDocument record created. DOCUMENT_UPDATEDDocument metadata or content edited. DOCUMENT_DELETEDDocument deleted. FOLDER_CREATEDStorage folder created. FILE_UPLOADEDFile uploaded to media or fixed storage. FILE_DELETEDFile removed.
Invoicing & Billing (6)
Event Description INVOICE_CREATEDNew invoice generated. INVOICE_PAIDInvoice marked paid (Flutterwave/Paystack settled). INVOICE_CANCELLEDInvoice voided before settlement. PLAN_UPGRADEDSubscription tier raised. PLAN_DOWNGRADEDSubscription tier lowered. SUBSCRIPTION_CANCELLEDSubscription cancelled outright.
Webhooks & Subscriptions (7)
Event Description WEBHOOK_CREATEDOutbound webhook endpoint registered. WEBHOOK_UPDATEDWebhook config edited. WEBHOOK_DELETEDWebhook endpoint removed. WEBHOOK_SECRET_ROTATEDWebhook signing secret rotated. EVENT_SUBSCRIPTION_CREATEDNew event subscription created. EVENT_SUBSCRIPTION_UPDATEDSubscription config (filters/active flag) edited. EVENT_SUBSCRIPTION_DELETEDSubscription removed.
Tenant Lifecycle (3)
Event Description ORGANIZATION_CREATEDNew tenant org provisioned. TENANT_USER_CREATEDFirst (or new) user added to a tenant org. API_KEY_GENERATEDAPI key issued for an org.
Auth & Security (4)
Event Description LOGIN_FAILEDFailed login attempt. ACCOUNT_LOCKEDAccount auto-locked after repeated failures. SSO_USER_PROVISIONEDSSO just-in-time provisioned a new user. SSO_CONFIG_UPDATEDOrg SSO settings changed.
Passwordless Auth (6 — v1.19.0)
Event Description AUTH_CODE_REQUESTEDOne-time login code requested. AUTH_CODE_VERIFIEDCode accepted; session issued. AUTH_CODE_FAILEDCode rejected (wrong/expired). RECOVERY_CODE_USEDRecovery code consumed during account recovery. RECOVERY_CODES_REGENERATEDNew batch of recovery codes issued. SESSION_REVOKED_ALLAll sessions for a user invalidated.
Branding (1)
Event Description ORGANIZATION_BRANDING_UPDATEDTenant brand colors/logos/custom CSS edited.
Permission Federation (8)
The v1.x.x cross-app admin permission federation surface — distinct from the CUSTOM_EVENT_FEDERATION_* family below.
Event Description FEDERATION_GROUP_CREATEDPermission federation group created. FEDERATION_GROUP_DELETEDPermission federation group archived. FEDERATION_MEMBER_ADDEDMember org added to a permission federation group. FEDERATION_MEMBER_REMOVEDMember org removed. FEDERATION_PULL_COMPLETEDA module pull from a peer finished. FEDERATION_PUSH_COMPLETEDA resolved-permissions push to a peer finished. FEDERATION_SYNC_COMPLETEDScheduled sync cycle finished. FEDERATION_HEALTH_CHANGEDGroup health (latency, error rate) changed bucket.
Identity Resolution (4)
Event Description IDENTITY_RESOLVEDIdentity match returned. IDENTITY_VERIFIEDIdentity confirmed by upstream provider. IDENTITY_LOOKUPIdentity lookup query executed. IDENTITY_PROVIDER_DOWNUpstream identity provider failed health checks.
Threads (17)
The Caldera Threads contextual-messaging surface.
Event Description THREAD_CHANNEL_CREATEDNew thread channel created. THREAD_CHANNEL_UPDATEDChannel config (slug, lifecycle, escalation) edited. THREAD_CREATEDNew thread opened in a channel. THREAD_CLOSEDThread marked closed. THREAD_REOPENEDClosed thread reopened. THREAD_MESSAGE_CREATEDMessage posted to a thread. THREAD_MESSAGE_EDITEDMessage edited. THREAD_MESSAGE_DELETEDMessage deleted. THREAD_PARTICIPANT_JOINEDParticipant added to a thread. THREAD_PARTICIPANT_LEFTParticipant removed/left. THREAD_READ_UPDATEDRead marker advanced for a participant. THREAD_MESSAGE_FLAGGEDMessage flagged for moderation. THREAD_ESCALATEDThread escalated per channel rules. THREAD_FLAG_REVIEWEDModerator reviewed a flag (resolve/dismiss). THREAD_ARCHIVEDThread archived per retention policy. THREAD_RETENTION_DELETEDThread hard-deleted per retention policy. THREAD_RETENTION_ANONYMIZEDThread anonymized per retention policy.
Service Processors (1)
Event Description PROCESSOR_UPDATEDTenant service processor (messaging/storage/OCR/PDF/etc.) config updated.
Fraud Detection — Phase 6A (18)
Event Description FRAUD_DECISION_RENDEREDFraud engine returned a decision (any verdict). FRAUD_DECISION_BLOCKEDDecision was block. FRAUD_DECISION_STEP_UPDecision was step_up (require additional verification). FRAUD_DECISION_REVIEWDecision was review (queue for manual review). FRAUD_RULE_CREATEDTenant rule created (status: draft). FRAUD_RULE_PROMOTED_TO_SHADOWRule promoted to shadow mode (logs decisions, doesn't enforce). FRAUD_RULE_PUBLISHEDRule published (enforces decisions). FRAUD_RULE_ARCHIVEDRule archived. FRAUD_RULE_TRIGGEREDRule matched on a decision request. FRAUD_SCREEN_HITSubject matched a screening list entry. FRAUD_DEVICE_FIRST_SEENDevice fingerprint observed for the first time. FRAUD_DEVICE_ANOMALYDevice fingerprint flagged anomalous. FRAUD_LIST_REFRESHEDScreening list updated (entries added/removed). FRAUD_PROVIDER_DOWNUpstream fraud signal provider failed health. FRAUD_CASE_OPENEDManual review case opened. FRAUD_CASE_ESCALATEDCase escalated to a higher reviewer tier. FRAUD_CASE_CLOSEDCase closed (approved/rejected). SUSPICIOUS_ACTIVITY_FLAGGEDEngine flagged a generic suspicious-activity signal.
Identity Verification — Nigerian KYC, Phase 6F (7)
Event Description IDENTITY_BVN_VERIFIEDBank Verification Number verified upstream. IDENTITY_NIN_VERIFIEDNational Identification Number verified upstream. IDENTITY_LIVENESS_PASSEDLiveness check passed. IDENTITY_LIVENESS_FAILEDLiveness check failed. IDENTITY_FACE_MATCHEDFace match succeeded. IDENTITY_ACCOUNT_VERIFIEDBank account ownership verified. IDENTITY_VERIFICATION_FAILEDAggregate verification failed.
Identity DLQ — Phase 6F.5b (2)
Event Description IDENTITY_DLQ_RECORDEDFailed verification placed on the DLQ for replay. IDENTITY_DLQ_REPLAYEDDLQ entry replayed successfully.
Fraud Federation — Phase 6G (1)
Event Description FRAUD_FEDERATION_PUSHEDFraud signal pushed to a federation peer.
Fraud Detection T&Cs — Phase 6H (1)
Event Description FRAUD_TERMS_ACCEPTEDTenant accepted current Fraud Detection terms version.
Tenant Custom Events — Registration (10 — Phase 9A)
Per-step lifecycle of registering / updating / archiving a tenant-defined custom event. Subscribers (federation push, drift detection, audit, billing meter, ops alerts, cache pub/sub) are decoupled — pick the event type that matches your concern. Full payload reference: docs/platformxe-tenant-custom-events-lifecycle-events.md .
Event Description CUSTOM_EVENT_REQUESTEDRegister call received — pre-validation. CUSTOM_EVENT_VALIDATION_FAILEDSchema/quota/allowlist validation failed. CUSTOM_EVENT_VALIDATEDValidation passed. CUSTOM_EVENT_PERSISTEDRow written to tenant_custom_event_registrations. CUSTOM_EVENT_MATERIALISEDBus-stable canonical name materialized. CUSTOM_EVENT_REGISTEREDUmbrella — full pipeline succeeded. CUSTOM_EVENT_UPDATEDRegistration edited (description/status/marketplace metadata). CUSTOM_EVENT_ARCHIVEDRegistration archived. CUSTOM_EVENT_INVALIDATEDRegistration invalidated by ops/policy. CUSTOM_EVENT_QUOTA_EXCEEDEDRegistration count quota for the org exceeded.
Tenant Custom Events — Emit (6 — Phase 9A/9B)
Event Description CUSTOM_EVENT_EMIT_REQUESTEDEmit call received — pre-validation. CUSTOM_EVENT_EMIT_REJECTEDEmit rejected (schema/quota/auth). CUSTOM_EVENT_EMIT_RELAYEDEmit accepted and re-emitted on the bus. CUSTOM_EVENT_EMIT_DELIVEREDSubscriber webhook received the relay successfully. CUSTOM_EVENT_EMIT_DELIVERY_FAILEDSubscriber webhook delivery failed after retries. CUSTOM_EVENT_EMIT_QUOTA_EXCEEDEDPer-org or per-event emit quota exceeded.
Tenant Custom Events — Infra (2)
Event Description CUSTOM_EVENT_GENERIC_SEEDEDPer-org generic catch-all event seeded on org creation/backfill. CUSTOM_EVENT_CHAIN_TRUNCATED51st emit in a workflow chain — capped at depth 50 per decision v2 §3.
Marketplace — Phase 9C (5)
Event Description MARKETPLACE_LISTING_PUBLISHEDNew listing created from a published registration. MARKETPLACE_LISTING_UNPUBLISHEDPublisher hid an active listing — existing forks unaffected. MARKETPLACE_LISTING_REPUBLISHEDPreviously-unpublished listing made visible again. MARKETPLACE_LISTING_FORKEDTenant forked a listing into their own org. MARKETPLACE_LISTING_FORK_FAILEDFork rejected by plan gate, allowlist, or duplicate (orgId, ns, name, version).
Custom Event Federation — Phase 9D + Pattern 3 (9)
ENTERPRISE-only fan-out of tenant custom events to peer orgs (Pattern 1: tenant_org peers) or arbitrary HTTPS endpoints (Pattern 3: external_webhook peers, v1.5.0). See Federation .
Event Description CUSTOM_EVENT_FEDERATION_GROUP_CREATEDOwner created a federation group. CUSTOM_EVENT_FEDERATION_GROUP_ARCHIVEDOwner archived a group — pushes/members frozen, history preserved. CUSTOM_EVENT_FEDERATION_MEMBER_INVITEDOwner invited a peer org or added an external webhook peer (state: pending or accepted). CUSTOM_EVENT_FEDERATION_MEMBER_ACCEPTEDMember accepted (tenant_org) or auto-accepted at create time (external_webhook). Relays start flowing. CUSTOM_EVENT_FEDERATION_MEMBER_REMOVEDMember removed by owner, left voluntarily, or kicked by plan downgrade. CUSTOM_EVENT_FEDERATION_PUSH_DECLAREDOwner declared a per-version event push. Bus listener fans out from this point. CUSTOM_EVENT_FEDERATION_PUSH_UNDECLAREDOwner stopped pushing a version. Fan-out halts; prior relays preserved. CUSTOM_EVENT_FEDERATION_RELAYEDSuccessful relay of one emit to one peer (tenant or external). CUSTOM_EVENT_FEDERATION_RELAY_FAILEDRelay attempt failed (peer paused/removed, schema drift, transport/HTTP error).
The data payload for every event is service-specific — consult @caldera/events typed interfaces (<EventName>Payload) for compile-time shapes. Wildcard subscriptions (e.g. FRAUD_*, THREAD_*, CUSTOM_EVENT_*) are useful during development to discover what a service emits in practice.