An app that knows how far each new user got.

Signals tells your app and your messaging tool which step a new user reached, which workouts they started and finished, and when, so the first week picks up where the last open left off.

Higher D1 and D7 retention

Keep more new users through the first week by opening on the step they have not done yet.

First-week retention moves when the app responds to what each new user did last time, instead of showing every new user the same first screen. Signals gives your app which setup step this user reached, which workouts they started and finished, how long since they first opened the app and when their first session was. Your app decides what to open on, what to ask for and when the nudge goes out.

Open on the first workout, not the goal screen again

A new user installed the app yesterday, picked a goal and closed it before starting a workout. Today they open it to the home screen everyone gets, with the goal flow waiting to be redone and a feed with nothing in it yet. The opening screen is set once per release, so what a user did last time reaches it in the next report, after this user has decided whether to come back. The step this user has not done is the first workout, and the app can know that the moment it opens.

What Signals knows
onboarding_step_reached
The last setup step they completed
workouts_completed_7d
Workouts finished in the last seven days
days_since_first_open
Days since they first opened the app
What your app does

Opens on the first workout for a user in their first week whose last completed step was the goal and who has no finished workout yet, and skips the goal flow they have been through.

app-launch.tsx · 15 lines
// In the code that picks the screen the app opens on
const user = await signals.getServiceAttributes({
  name: "fit_onboarding_goal",
  attribute_key: "user_id",
  identifier: userId,
});
// { onboarding_step_reached: "goal_set", workouts_completed_7d: 0, days_since_first_open: 1.1 }

if (
  user.onboarding_step_reached === "goal_set" &&
  user.workouts_completed_7d === 0 &&
  user.days_since_first_open <= 7
) {
  app.openOn({ screen: "first_workout" });
}

Try it on your own site.

Add the SDK, define one thing you want to know about a visitor, and watch it update while you click around. The free tier runs on the real engine: no card, no sales call.