Show the right tour to the right user at the right moment.
Targeting decides who is eligible to see a tour or checklist. Triggers decide when it fires. Both use the same primitives so you don’t have to learn two systems.
- URL targeting: contains, exact match, or regex
- Trait targeting: set via steppr.identify(userId, { plan: "pro", … })
- Triggers: page load, URL change, or steppr.track() event by name (Growth+)
- AND-ed targeting rules - every rule must pass for the user to be eligible
- OR-ed triggers - any trigger fires the tour for an eligible user
Targeting, in detail.
Targeting answers "who".
Rules are AND-ed: every rule must pass for a user to be eligible. Combine a URL rule with a trait rule to get "users on the Pro plan, on any /dashboard page". Traits come from a single steppr.identify() call on your site, so plan, role, company or signup date are all fair game.
- URL: contains a substring, matches exactly, or matches a regular expression
- Trait: equals a value you set with steppr.identify()
Triggers answer "when".
Triggers are OR-ed: any one of them fires the flow for an eligible user. Page load fires on first render. URL change fires on SPA navigation. Event fires when your code calls steppr.track() with a matching name, which is how you show a tour the moment someone completes signup or sends their first invite.
One rule builder for everything.
Tours, checklists and announcements all use the same targeting and trigger builder. Learn it once. The rules are evaluated inside the SDK against the published snapshot, so there is no round trip to decide whether to show something.
Plans. URL and trait targeting, plus page-load and URL-change triggers, are on every plan. Event-based triggers from steppr.track() require Growth or above. See pricing
Targeting FAQ.
Straight answers. If yours isn't here, email hello@steppr.io and a founder replies.
Yes. Pass any traits you like in steppr.identify(userId, { plan: "pro", role: "admin" }) and build trait rules against them.
Targeting decides whether a user is eligible at all; every rule must pass. Triggers decide the moment an eligible flow fires; any one trigger is enough.
No. Event-based triggers from steppr.track() are gated to Growth and above. URL and trait targeting, page-load and URL-change triggers are on every plan.
Try targeting free for 7 days.
No card to start. The trial unlocks Growth-tier features so you can evaluate the whole product, not a stripped-down preview.