Did your gameloop actually work?
Stop interpreting twelve dashboards. Define your loop — "tutorial → first run → first boss → day-7 return" with target conversion % per stage — and Owlsignal tells you per build whether it landed. Built for the questions indie devs actually ask.
Free Unity SDK · 100k events / month free · EU-hosted · GDPR-clean
Questions Owlsignal is built around
Generic SaaS analytics tools (Mixpanel, GameAnalytics, even unity_analytics) make you assemble these answers from raw events. Owlsignal is opinionated about the answers, because these are what you actually act on:
- "Of every player who started the tutorial, how many finished?" Tutorial completion is the single biggest predictor of D1 retention in a roguelike. Templates ship with this funnel pre-built; the verdict shows up day one.
- "Run 1 → run 2 conversion — is the meta-progression motivating?" In Hades / Dead Cells / Slay the Spire patterns, the second-run rate is the make-or- break number. Below 50% means your meta-loop isn't pulling them back.
- "Did 1.4.0 introduce a new common crash?" Errors are grouped by signature (name + stack top), so a NullRef in CombatManager doesn't collapse with one in FogOfWar. Compare crash rate per build version, click into a session to see what the player did just before.
- "What's our typical run duration, and is the new biome slowing it down?" Run analytics is opt-in per app. Duration histogram, completion / fail / outcome breakdowns, fail-reason ranking — all from event prefixes you already fire.
- "Is players returning on day 7 actually correlated with finishing the tutorial?" Retention cohorts split by the loop stage they reached. Useful for figuring out which moments to invest in.
Three things, done well
What an event looks like in Owlsignal
The Unity SDK ships sensible auto-events — Session:Start, Session:End, Client:Foregrounded, Error:Unity:Unhandled — and helper methods that match the conventions:
// Roguelike example — exactly what Hades-style would emit:
OwlsignalClient.TrackProgression("Start:Run");
OwlsignalClient.TrackDesign("FirstTime:WeaponEquipped");
OwlsignalClient.TrackProgression("Complete:Boss:Tartarus");
OwlsignalClient.TrackProgression("Fail:Run", value: 1247); // run length s
OwlsignalClient.TrackResource("Source:Darkness", 50);
OwlsignalClient.TrackError("Error:CombatNullRef"); You name your events. We suggest a shape, you adapt. Examples by pattern:
- Progression:
Start:Run,Complete:Run:Underworld,Fail:Run:NoFuel,Complete:Chapter:1 - Design / first-time:
FirstTime:UpgradePurchased,FirstTime:CoOpJoined,Friction:NoCommandIn60s - Retention:
Day:1:Returned,Day:7:Returned,Day:30:Returned(auto-derived server-side; you don't fire these — Owlsignal computes them from your session timestamps) - Resource / monetization:
Source:Gold,Sink:Currency:Premium,Purchase:Made,Purchase:Premium - Multiplayer / social:
Social:InviteFriend,Social:JoinedSession
Owlsignal vs other tools indie devs use
| Owlsignal | GameAnalytics | Unity Analytics | Mixpanel | |
|---|---|---|---|---|
| Pricing | €19/mo flat — 1M events, no per-event surprise. | "Free" tier with severe limits; paid is per-MAU. | Bundled with paid Unity license; data is theirs. | Per-event past 1M free. Cheap then steep. |
| Loop / funnel verdict | Built around it. One-line per-app verdict. | Funnel viewer; you set thresholds in your head. | Funnels in dashboard; no targets/verdict. | Funnels yes; aimed at SaaS, not games. |
| Run analytics | Opt-in per app. Duration histogram, outcomes, fail reasons. | "Progression events" with simple duration. Limited. | Sessions yes, no run-shaped view. | Not game-shaped; you'd build it from event properties. |
| Data residency | EU-only stack. Anonymous by design. | Global; identified users. | US-headquartered. | US default; EU-hosting on enterprise. |
| Engine support | Unity (free) and Web (JS/TS) SDKs ship today. | Unity / Unreal / Godot / mobile. | Unity-only. | Generic web/mobile, not engine-specific. |
Unity SDK
Free, open-source. Drop into your scene, paste your API key, and the auto-events start flowing within seconds. Editor mode has a built-in dry-run flag — events log to the console without polluting your dashboard. Built players always send.
// Manual init (or use the OwlsignalConfig ScriptableObject for auto-boot):
OwlsignalClient.Initialize(
apiKey: "pk_live_...",
endpointUrl: OwlsignalClient.DEFAULT_ENDPOINT,
buildVersion: Application.version
);
// At an interesting moment in your game:
OwlsignalClient.TrackProgression("Complete:Tutorial");
OwlsignalClient.TrackResource("Purchase:Made", value: 4.99f); Companion sites + non-game products
The web (JS/TS) SDK ships today — use it for companion marketing sites, LiveOps dashboards, or any non-Unity surface where you want events flowing into the same Owlsignal organization. Same backend, same event schema, same dashboards. See the generic Owlsignal pitch → for non-game use cases.