KiteDocs
Concepts

Concepts

The design principles behind Customer Success as Code.

Customer Success as Code

Customer outcomes should be explicit, reviewable definitions rather than hidden settings in a vendor UI. A definition of activation belongs beside the product code that emits the events.

Event-driven state

Events are immutable facts. Kite evaluates them against versioned definitions to derive current customer state and explain why that state changed.

Idempotency

Retries must not duplicate product activity. The SDK adds idempotency keys by default when retries are enabled. Ingestion fingerprints the event's customer, name, properties, and an explicit timestamp using canonical JSON. Reusing a key with the same payload returns the original event; reusing it with a different payload returns 409 IDEMPOTENCY_CONFLICT. Idempotency keys must contain at least one non-whitespace character and may contain at most 256 characters. A conflict in a batch rejects and rolls back the entire batch.

Test and live

API keys encode their environment with kt_test_ or kt_live_. Data and deployed configuration remain isolated between environments.

On this page