Events Reference
Kixo auto-collects the common events below; the exact set and wire shape vary by platform. All events include standard fields: device_id, session_id, timestamp, and properties.
Auto-collected events
| Event Type | Event Name | Platform | Properties |
|---|---|---|---|
screen_view | Screen name | iOS, Android | screen_name, screen_class |
screen_visit | Resolved screen name | iOS, Android | screen_id, screen_name, visit_id, entry_index, entered_at, exited_at, dwell_ms, exit_reason, trigger metadata; iOS also includes tap_count and scroll_count |
page_view | page_view | Web | url, path, title, referrer |
tap | Element label | iOS, Android | target_class, target_text, screen_name |
click | click | Web | tag, path, text, href, x, y |
session_start | session_start | Web, iOS, Android | session_id; platform-specific lifecycle context |
session_end | session_end | Web, iOS, Android | session_id; Web includes duration_ms when the end is observable |
scroll_depth | scroll_25 … scroll_100 | Web | depth (25, 50, 75, 100), url, path |
interaction | rage_click | Web | tag, path, text, click_count, x, y |
interaction | dead_click | Web | tag, path, text, x, y |
error | js_error or unhandled_rejection | Web | message, stack, type |
crash | Crash type | iOS, Android | message, stack, exception or signal context |
network | network_request (Web); aggregate or route label (iOS) | Web opt-in, iOS opt-in | Sanitized route, method/status family, duration and outcome |
performance | Metric name (LCP, FCP, CLS, INP, TTFB) | Web | value, rating, id, delta |
heatmap_click | heatmap_click | Web | x, y, viewport_width, viewport_height, page_url, element_selector |
push_received | Push id | iOS; Android/Web when integrated | push_id, kixo_campaign_id, app_state, content_hash |
push_open | Push id | All (host integration required on Android/Web) | push_id, kixo_campaign_id, time_to_open_ms, interaction_type |
push_silent | Push id | iOS, Android | push_id, kixo_campaign_id, content_hash |
push_dismissed | Push id | iOS; Android/Web with host integration | push_id, kixo_campaign_id, interaction_type |
push_action | Push id | iOS; Android with host integration | push_id, kixo_campaign_id, action_id |
custom | Your event name | All | Any key-value pairs you provide |
Standard events (recognized by name)
Kixo recognizes eleven canonical event names. Track any of them via Kixo.track("purchase", {amount: 49.99, currency: "USD"}) and Kixo stamps a standard_kind on the event at ingest. Chat queries, segments, and campaigns can then say standard_kind = 'purchase' and catch every alias (purchase / purchased / purchase_completed / order_completed / checkout_completed) without listing them by hand.
These names also feed the AI's monetization / conversion / activation heuristics — Kixo.track("purchase") is understood as revenue with no configuration; the optional amount_cents (or amount / value) property is summed for revenue goals. If your system stores money in minor units, amount_cents is also accepted.
| Canonical kind | Aliases | Recommended props | Powers |
|---|---|---|---|
signup | sign_up, signed_up, signup_completed, sign_up_completed, account_created, user_registered | — | Acquisition funnel |
activation | activated, user_activated, aha_moment | — | Activation funnel, aha-moment |
purchase | purchased, purchase_completed, order_completed, order_placed, checkout_completed | amount, currency | Revenue / ARPU |
subscribe_start | subscribe_started, subscription_started | plan, amount, currency, interval | MRR, cohort retention |
subscribe_renewed | subscription_renewed | plan, amount | Recurring revenue |
trial_start | trial_started, free_trial_started | plan, days | Trial-conversion funnel |
cancel | cancelled, subscription_cancelled, subscription_canceled | plan | Subscription lifecycle, churn |
upgrade | plan_upgraded | from_plan, to_plan | Expansion revenue |
downgrade | plan_downgraded | from_plan, to_plan | Revenue compression |
share | shared, content_shared | channel | Virality coefficient |
invite | invited, invite_sent, referral_sent | — | K-factor |
Names are matched case-insensitively. Aliases NOT in the list (e.g. bought, customer_paid) are deliberately rejected — converge on a canonical form so the taxonomy stays stable across teams.
Tagging users instead of events. If you want a persistent "has purchased" flag on the user (not just a per-event signal), call Kixo.setUserProperty("subscribe", true) — see each SDK's "Tag a user for segmentation" section ( Web / iOS / Android).
Event structure
Every event sent to Kixo follows this structure:
- event_type — the event family, such as the types shown above
- event_name — a descriptive name for the event
- device_id — unique device identifier
- session_id — groups events within a session
- timestamp — ISO 8601 timestamp
- properties — JSON object with additional data