# Kixo SDK Integration Brief

Kixo is a B2B analytics, campaigns, and AI-chat platform. Integrate Kixo into the customer's app; end users do not log in to Kixo.

Use exactly one SDK for the target platform:

- Web: `https://cdn.kixo.io/kixo.min.js` (script embed; npm `@kixo.io/web`)
- iOS: Swift Package `https://github.com/kixoio/kixo-ios-sdk`, `import Kixo`
- Android: Maven repo `https://raw.githubusercontent.com/kixoio/kixo-android-sdk/main/repo`, dependency `io.kixo:kixo-android-sdk:0.1.17`, `import io.kixo.sdk.Kixo`

Configure once at app startup:

- Web app entry or head: `Kixo.init({ projectId, apiKey })`
- iOS App init or AppDelegate: `Kixo.configure(projectId:apiKey:)`
- Android `Application.onCreate`: `Kixo.configure(context = this, projectId, apiKey)`

Use dashboard Project ID and SDK API key placeholders. Never commit real keys. Never use dashboard or admin tokens in client apps.

Do not duplicate Kixo's auto-tracked page, screen, session, click, tap, error, crash, or push lifecycle events. Add custom events only for product-specific actions.

Event naming: one event per user action, context in properties. Use snake_case, object_verb, past tense, same names across Web, iOS, and Android. Include stable entity IDs such as `post_id`, `order_id`, `video_id`.

Prefer canonical standard events or typed helpers where available: `signup`, `activation`, `purchase`, `subscribe_start`, `subscribe_renewed`, `trial_start`, `cancel`, `upgrade`, `downgrade`, `share`, `invite`.

Identity: call `identify` only when a stable product user ID is known. Put email, name, and plan in traits such as `$email`, `$name`, `$plan`. Call `reset` on logout.

Use boolean user properties for durable segmentation tags, e.g. `Kixo.setUserProperty("subscribe", true)` or `vip: true`.

Replay is enabled from Kixo project settings. Mouse-move heatmaps are disabled by default. The SDK collects the trackers enabled by the customer and the events and properties their application sends. Use only APIs listed in the current platform SDK reference; do not invent policy controls.

Project collection settings can override local SDK defaults. Do not expose or document internal Kixo dev-routing flags.

For Deep Links, use the exact branded host shown in Kixo Project Settings.
Never use a wildcard or the base Kixo domain. Android needs an App Links
manifest filter, the release package name, every SHA-256 signing fingerprint,
and warm `onNewIntent` forwarding to `Kixo.handleDeepLink`. iOS needs the exact
`applinks:` Associated Domains entitlement plus cold and warm lifecycle
forwarding. Keep navigation inside the host app and test both cold and warm
opens. See https://docs.kixo.io/deep-links.

Verify by triggering one auto event and one custom event, checking `diagnostics()` where available, and confirming events in the Kixo dashboard or chat.
