⚡ ⚡ Learn how Investing.com uses Jitsu to move data faster

Mobile analytics for apps and games

Retention charts live in a product analytics tool, validated purchases in the backend, and level events on the game server, so one question about paying players touches three systems. A modified build can report a purchase that never happened, and lobby heartbeats fill every tool they reach.

Jitsu is an open-source event pipeline under the MIT license. It takes events from the app on the device, the game server and the backend that validates App Store and Google Play purchases, runs JavaScript functions you write on each one, and sends them to your warehouse and to the product tools your team already uses, from Mixpanel and Amplitude to Braze.

TL;DR

  • Purchase revenue in the warehouse is store-confirmed only, sent by your backend with the store's transaction ID.
  • Retention by install day, sessions and first-week revenue are SQL queries against the ClickHouse warehouse included with Jitsu Cloud.
  • Free covers 200,000 active events a month. Business is $99 a month for 2M, then $40 per extra 1M.

What app and game teams run through Jitsu

Purchases from the backend, and a tracking plan checked in the warehouse

The backend sends Order Completed after store validation, with the store's transaction ID as order_id. A purchase reported by a modified build never reaches Mixpanel or the warehouse. Another function, on the warehouse connection, routes events outside the 33-event plan to an events_unplanned table, so a renamed event shows up there rather than splitting the warehouse funnel. The event and game tracking plan.

Heartbeats and frame telemetry dropped before they are billed

Lobby heartbeats and signed-in test accounts' traffic stop showing up in funnels and tables, and frame-rate data arrives as a sample. A new noisy event is handled without shipping a build. Filtering noisy events.

Retention and first-week revenue in SQL you own

A data team gets D1, D7 and D30 retention by install day, sessions, and first-week purchase revenue per cohort from SQL in the included ClickHouse, with backend purchases joined to installs through the app's identify calls. The queries are plain ClickHouse SQL, so the definition of an active player is a line the data team can edit and review like any other code. Retention and revenue in ClickHouse.

How game studios at scale handle it

  • Roblox used to land analytics events in one table, events_hourly, against a three-hour delivery target it regularly missed. It now routes events to dedicated tables, checks every event schema with a linter in a central repository, and averages 15 minutes (Roblox, 2025). In Jitsu, a function can route an event family to its own table, and plan-guard from the tracking plan page checks events against the plan as they arrive.
  • MY.GAMES wrote that over poor mobile connections its clients make several attempts to send the same batch, and that an attribute such as a user ID can arrive as a number and then as a string (MY.GAMES on dev.to). A resent copy collapses into one warehouse row on message_id, and a function can pin a column's type, as the retention page does for revenue.

Where each event goes

EventGoes toUsed for
Application Installed, Application Openedwarehouse, product analyticsD1, D7 and D30 retention
identifyevery destinationLinking an install to an account
onboarding_step_completedwarehouse, product analyticsThe step where new users stop
paywall_viewedwarehouse, product analytics, BrazePaywall conversion
Order Completedwarehouse, product analytics, BrazeRevenue the store has confirmed
subscription_renewedwarehouse, product analyticsRenewals the app never sees
level_start, level_endwarehouse, product analyticsWhere players fail and quit
earn_virtual_currency, spend_virtual_currencywarehouse, product analyticsSources and sinks of the economy
performance_samplewarehouse, product analytics, 1 in N installsFrame rate by device model
heartbeatfiltered outPresence logic inside the app

Product analytics here means Mixpanel, Amplitude or PostHog, which get events with the email trait removed. Braze's allowlist is on the tracking plan page. All 33 events, with properties, types and PII handling, are in the tracking plan CSV.

How the pipeline is laid out

Pipeline diagram: iOS, Android and React Native apps send through Segment's open-source libraries, game clients and the backend send through the HTTP API, and each Jitsu connection runs its own functions before a warehouse, product analytics, Braze, Statsig, object storage or a webhook

Functions run in Jitsu, not in the app, so the same JavaScript applies to iOS, Android, React Native and engine events alike. A destination added later is one more connection on the same stream, so the app and its release schedule do not change. If the warehouse is down, events wait in Jitsu's queue and load when it comes back (event streaming). Destinations: ClickHouse, BigQuery, Snowflake, Redshift, Postgres, MySQL, Mixpanel, Amplitude, PostHog, Braze, Statsig, Amazon S3, Google Cloud Storage and Webhook.

What it costs

Jitsu bills on active events: an event successfully sent to at least one destination, counted once however many it reaches. Captured events are unlimited, and Enterprise pricing is custom (pricing).

Monthly volume is monthly active users × sessions per user × events per session. Three sets of example inputs:

Example inputsEvents a monthActive eventsBusiness plan
20,000 users × 10 sessions × 10 events2M2M$99
50,000 users × 20 sessions × 15 events15M15M$99 + 13 × $40 = $619
200,000 users × 10 sessions × 10 events, 8M of them heartbeats a function removes on every connection20M captured12M$99 + 10 × $40 = $499

Jitsu vs Segment works volumes like these against Segment's published prices.

Questions people ask

Which SDK do iOS and Android apps use with Jitsu? Segment's open-source Analytics-Swift and Analytics-Kotlin libraries, with the host set to your Jitsu domain. React Native apps use @segment/analytics-react-native the same way.

Can a studio self-host Jitsu? Yes. Jitsu is open source, and the self-hosted version runs on Kubernetes with the Jitsu operator, with no usage limits. A studio that wants a dedicated deployment managed by Jitsu uses Private Cloud, on the Enterprise plan.

How do Unity or Unreal games send events to Jitsu? Over Jitsu's HTTP API, in the same JSON format Segment's mobile libraries use, so game events and app events land in the same table. The tracking plan page has a batch call to copy.

Can Jitsu run alongside Segment during a migration? Yes. Point a Segment Webhooks destination at Jitsu and both receive the same events while you compare them, with no change to the app until you switch.

Get started with Jitsu

Get started on Jitsu Cloud and send your first app events from a test build to the included ClickHouse. The tracking plan CSV has the event names to start from. Enterprise pricing, Private Cloud and self-hosting are covered on a demo call.

Subscribe to the Jitsu newsletter
Occasional product updates when we ship something worth knowing about. No spam.