B2B software/Next-step guidance

An in-app guide that knows what the user just did.

Signals tells your product which steps this user and this account have completed, in this session and since signup, so the guide can point to the next one.

Higher activation rate

Activate more new users by pointing the guide at the step they have not done.

Activation moves when the guide shows a new user the step they have not done, at the moment they are ready for it. Signals gives your product the steps this user has completed, the steps anyone on their account has completed, which page they keep returning to and how long they have been away. The checklist, the tour and the activation email decide what to show from there.

Skip the steps this user has finished

A new user signed up twenty minutes ago, connected a data source and invited a teammate from the settings page. The checklist in the corner still says invite a teammate, because it reads a flag that updates after the next sync. The user now knows the guide is behind them, and the guide has one less chance to be read. The next thing they need is the step after the two they finished.

What Signals knows
steps_completed
The setup steps this user has completed since signup
last_step_completed
The step they completed most recently
steps_completed_1h
Steps completed in the last hour
What your product does

Drops every step on this user's completed list from the checklist and opens the panel on the one after their last completed step. The order of the steps is your product's. Which ones are done comes from Signals.

checklist.tsx · 12 lines
// In the code that renders the onboarding checklist
const user = await signals.getServiceAttributes({
  name: "saas_onboarding_steps",
  attribute_key: "user_id",
  identifier: userId,
});
// { steps_completed: ["connect_source", "invite_teammate"], last_step_completed: "invite_teammate", steps_completed_1h: 2 }

const done = new Set(user.steps_completed);
const remaining = checklist.steps.filter((step) => !done.has(step.id));

guide.render({ steps: remaining, open: remaining[0] });

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.