# Kixo LLM Integration Context Kixo is an AI-first B2B platform for product analytics, dashboards, audience engagement, campaigns, and chat-first work. Customer companies integrate Kixo into their own web, iOS, and Android products. Their team members use the Kixo dashboard. Their audience members do not log in to Kixo. ## Public SDKs Use exactly one SDK for the target platform. ### Web Install with the CDN script embed or npm `@kixo.io/web`: ```html ``` To configure options in code, load without the URL params and call `Kixo.init()` — the global `Kixo` is available once the module has loaded: ```html ``` ### iOS Use Swift Package Manager: ```text https://github.com/kixoio/kixo-ios-sdk ``` Then: ```swift import Kixo Kixo.configure( projectId: "YOUR_PROJECT_ID", apiKey: "YOUR_API_KEY" ) ``` ### Android Add the Maven repository: ```kotlin maven { url = uri("https://raw.githubusercontent.com/kixoio/kixo-android-sdk/main/repo") } ``` Add the dependency: ```kotlin implementation("io.kixo:kixo-android-sdk:0.1.17") ``` Configure once: ```kotlin import io.kixo.sdk.Kixo Kixo.configure(this, "YOUR_PROJECT_ID", "YOUR_API_KEY") ``` ## Event design 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. Use one event per user action. Put context in properties. Use snake_case, object_verb, past tense, and the same names across Web, iOS, and Android. Good: ```js Kixo.track('post_opened', { source: 'search', post_id: 'post_123', }); ``` Avoid: ```text post_opened_from_search post_opened_from_feed ``` Prefer canonical standard events or typed helpers where available: - signup - activation - purchase - subscribe_start - subscribe_renewed - trial_start - cancel - upgrade - downgrade - share - invite Use `amount` and `currency` for money in SDK helpers. `amount_cents` is accepted when the source system stores minor units. ## Identity and segmentation Call `identify` only when a stable product user ID is known. Use reserved profile traits when available: - `$email` - `$name` - `$plan` - `$country` - `$created` Use boolean user properties for durable segmentation tags: ```js Kixo.setUserProperty('subscribe', true); Kixo.setUserProperty('vip', true); ``` Call `reset` on logout. ## Data collection and scope The SDK API key is a client-side ingestion credential, not a dashboard secret. It can send SDK data for the project, but it must not be confused with dashboard tokens or admin credentials. 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. ## Deep Links Deep Links use the exact branded host shown in Kixo Project Settings. Never replace it with the base Kixo domain or a wildcard. Android: - Save the release package name and every SHA-256 signing fingerprint in Kixo. - Add an `android:autoVerify="true"` HTTPS intent filter for `YOUR_EXACT_KIXO_HOST` with `android:pathPrefix="/link/"`. - Forward warm `Activity.onNewIntent` URLs to `Kixo.handleDeepLink(url, source = "applink")`. - Test both a cold open and a warm open. `pm get-app-links` must report the exact host as verified. iOS: - Save the bundle ID and Apple team ID in Kixo. - Add `applinks:YOUR_EXACT_KIXO_HOST` to the app target's Associated Domains entitlement. - SwiftUI apps should attach `.onKixoDeepLink` to the root view. - UIKit scene apps should forward cold `connectionOptions` with `Kixo.handleSceneConnection` and warm `NSUserActivity` with `Kixo.handleUserActivity`. - Test both a cold open and a warm open from a real tappable link. Keep navigation in the host app. Route only known in-app paths; do not turn a resolved destination into an unrestricted URL opener. Full guide: https://docs.kixo.io/deep-links Web: - Read landing context with `Kixo.getLinkData()` and allowlist any custom parameters before routing. - Use `Kixo.showSmartBanner({ linkId, linkUrl })` for an explicit mobile-web “Open in app” prompt. - Use `await Kixo.createQrHandoff({ linkId, params })` for a desktop QR. Kixo resolves the saved app and website destinations for that link. Render the returned `url` unchanged; never encode a user ID or device ID into a QR. ## Verification Trigger one auto event and one custom event, check `diagnostics()` where available, and confirm events in the Kixo dashboard or chat. Canonical docs: - https://docs.kixo.io/quickstart - https://docs.kixo.io/ai-agents - https://docs.kixo.io/deep-links - https://docs.kixo.io/tracking-in-context - https://docs.kixo.io/sdk/events - https://docs.kixo.io/sdk/web - https://docs.kixo.io/sdk/ios - https://docs.kixo.io/sdk/android