Why your app gets downloads but no conversions (and how to fix it)
You finally cracked App Store Optimization. Your keywords rank, your screenshots are on point (you even made the effort to cut a video!), and the total downloads are going up. Then you check your subscription or purchase numbersβ¦ they barely moved π

High download volume doesn't guarantee revenue, because downloads only measure the top of your funnel. If users never reach your app's core value, they'll never convert. No matter how good your store listing is.
Define what "activation" actually means for your app. The specific moment a user experiences your main feature, track it from day one, and reshape your onboarding flow to get users to that moment as fast as possible.
If that sounds familiar, you're not alone. Getting someone to download an app is the easy part. Getting them to actually experience the thing that makes your app worth paying for is a whole other story, and unfortunately it's one that ASO can't solve for you. Luckily, we are here to help!
Problem description
Many developers put real effort into ASO: optimizing titles, keywords, screenshots, and preview videos - and it pays off in the form of strong download numbers. Good job! That's a real achievement! But it's also where a lot of indie devs and teams stop measuring.
A download is just an expression of interest. What happens in the minutes and days after that install determines whether that interest turns into a subscription, or a churned user who never opens the app again.
The gap between "downloads" and "conversions" is almost always an activation gap: users install the app but never reach the point where they understand or experience its value.
Activation metrics: What to look for in analytics
Activation is the metric that sits between "downloaded" and "converted." It answers a simple question: did this user actually experience what makes my app valuable? TelemetryDeck has a good guide on the concept.
A good start is to define what your activation looks like. For example: βa user is activated if they accumulate at least 5 minutes of total usage across their first 5 sessions." It's an easy number to compute. But it's worth to look at its limits:
- Depending on your app and usage time, one simple time based number can be arbitrary - is it actually derived from your app's behavior, or is it a generic starting point?
- It has a hard cutoff. A user who hits 5 minutes of usage in their 6th session gets counted the same as someone who never engaged at all, even though they were clearly on their way to activating.
- It ignores context. Session length norms vary enormously between apps. 5 minutes in a meditation app means something completely different than 5 minutes in a banking app.
The takeaway: a generic, time-based threshold is a fine starting point, but it shouldn't be the definition you optimize toward. Activation should be defined around the specific action that signals that a user "got itβ, and that action is different for every app. TelemetryDeck provides the flexibility to create your own customized activation queries fitting your use case.
An example for good activation tracking
In a session-based dashboard built to explore this, a few custom queries proved how powerful detailed funneling can be:
- A session funnel (first β second β third β fourth session) to see how many users who install in a given month are coming back that same month. In one such analysis, roughly two-thirds of first-time users returned for a second session, with conversion holding in the 66β79% range at each subsequent step. this proves as a much more actionable signal than a single "activated: yes/no" flag. This will give you a direct overview where users encounter friction in the activation process, and gives you hands-on tasks to act on.

- Session-length distributions, bucketed into custom ranges (e.g., 0β5s, 5β30s, 30β60s, 60β120s, 120β300s, 300s+), to see whether early sessions are long enough to reflect real engagement rather than a user opening the app and immediately bouncing. A chart like this will clarify at which time users drop off. In our example only users are considered that started a respective next session, so users who stay longer than 5 minutes tend to stay in the app regardless. But the very first seconds, and first few minutes, are key to also keep everyone else on board. Enhancing the onboarding experience, or giving users their most relevant data at a glance - actionable tasks like these can improve the bounce rate.

- Cross-cuts of the two, for example looking only at the length of a user's second session, filtered to users whose first session fell into a specific bucket (say, 30β60 seconds). This is where activation analysis starts to get genuinely useful: you can see whether short first sessions tend to be followed by short second sessions (a sign of a broken first-run experience) or whether users "warm up" over time.

One practical caveat worth keeping in mind: session and duration data can be noisier than it looks at first glance. Session counters may only increment past a certain minimum length, and user identifiers can shift under certain conditions (e.g., reinstalls, logins, device changes). None of this invalidates the analysis, but it's a good reason to check anomalies before reading too much into a single data point.
Case Study: build activation tracking around your core feature
Konstantin has build Flowvi.be - an app that makes playlists an experience rather than just background noise. He defined his activation metric, and has clear goals he follows:
I created a funnel which gives an indication about the people who were able to successfully connect their Apple Music with my app during onboarding - which are the ones that matter more to me if they give up or not subscribe later on.
The fix isn't always a growth hack, instead track the main feature of your app from day one (or as early as possible), and optimize the user flow toward that screen.
Concretely, that means:
- Identify the one action that represents "aha" for your app. Not a generic milestone like "opened the app 3 times," but the specific interaction that proves the user experienced the value of your app.
- Build a funnel around that action, not around session counts alone. Every step in the funnel should represent real progress toward that moment, so a drop-off tells you exactly where onboarding is failing.
- Track it from the first session, so you can catch users falling out of the funnel before they ever come back.
Here's what that looks like in practice. With Flowvi.be, that lets users connect their Apple Music library during onboarding, Konstantin built a funnel around exactly that behavior. Because connecting the library is the make-or-break moment for the whole product. Users who don't get through this step are far less likely to ever subscribe. The funnel tracked four onboarding screens:
| Step | Screen |
|---|---|
| 1 | Welcome |
| 2 | Library Access |
| 3 | Start initial sync |
| 4 | First "mood" playback (the core feature) |
Each step in the funnel is just a filter on a navigation or task event.
{
"title": "Flowvi.be Onboarding",
"displayMode": "funnelChart",
"aggregations": [
{
"fieldName": "clientUser",
"name": "count",
"type": "thetaSketch"
}
],
"appID": "redactedAppID",
"baseFilters": "thisApp",
"granularity": "all",
"queryType": "funnel",
"steps": [
{
"filter": {
"dimension": "TelemetryDeck.Navigation.destinationPath",
"type": "selector",
"value": "valueProposition"
},
"name": "Welcome"
},
{
"filter": {
"dimension": "TelemetryDeck.Navigation.destinationPath",
"type": "selector",
"value": "connectMusic"
},
"name": "Library Access"
},
{
"filter": {
"dimension": "TelemetryDeck.Navigation.destinationPath",
"type": "selector",
"value": "initialSync"
},
"name": "Start Sync"
},
{
"filter": {
"dimension": "type",
"type": "selector",
"value": "Flowvibe.MoodDetailScreen.task"
},
"name": "Play Mood"
}
]
}That simplicity is all that matters: this is what a generic, time-based rule can never express, because the query is built entirely around what actually happens in this app's onboarding, not an arbitrary average.
Running this funnel over a recent period showed 320 users reaching the welcome screen, 308 granting library access, 246 starting the sync, and only 87 reaching the core "play a mood" action - meaning roughly three out of four users who started onboarding never actually experienced the app's core feature. That's a gap pointing to a specific fix: the drop between "sync" and "first play" is where Konstantin should focus, not the App Store listing.
That's the effect of activation tracking: instead of asking "How do I get more downloads?" you start asking "Where exactly am I losing the users I already have?".
And the answer is almost always sitting in a funnel you haven't built yet.
