Skip to main content
FlowPilot emits a fixed set of analytics events. Each one is an event_type on the events endpoint. This page defines every type, the key fields it carries, and how the dashboard turns them into metrics.

Event types

Every event also carries the shared context: user_id, session_id, app_id, device_platform, sdk_version, timestamp, and (when applicable) flow_id, flow_version_id, placement_id, experiment_id, variant_id.

What the SDKs emit

Both SDKs fire the same seven automatic lifecycle events, with these exact wire values: flow_start, flow_complete, flow_exit, screen_view, screen_exit, experiment_exposure, element_interaction. Two more exist that the SDKs do not fire automatically:
  • conversion is sent explicitly via trackConversion (iOS / Expo), not as an automatic lifecycle event.
  • resolve_no_flow is recorded server-side by the backend when a resolve matches no flow. The SDKs do not emit it.
The SDKs’ automatic event names match the backend’s recognized list exactly.

Mapping to dashboard metrics

The placement and dashboard analytics are built from these raw events: Revenue is not aggregated or displayed at MVP, even though conversion events carry revenue and currency. See Placement analytics and Reading results.

Reading these in your app

Your app can observe every event (including conversion) through the SDK analytics callback. The callback fires in-process for each event the SDK enqueues. See analytics integration for iOS or Expo for the AnalyticsEvent shape and how to forward events to your own analytics.