Case study

In-App Guidance for a Platform Migration

A portal tour and its callouts, built in four weeks, and half of everyone it reached finished it end to end.

A light product portal dimmed behind a tour slide reading Step 2 of 4, See where you stand, with two guidance beacons marking regions of the page
Timeline
4 weeks
Role
Design lead and builder
Team
With a product manager and GTM support
Tools
Userpilot Custom CSS theme Brand system
Year
2022

The challenge

A whole user base was moving to a new portal. Everything people already knew how to do had changed address, and the things worth doing first were a few clicks deep. When a platform launches and the value moment isn’t on screen one, you lose a chunk of users between the door and the place they figure out why they’re there.

Engineering was busy building the platform, so guidance had to ship without competing for their time. I owned that layer end to end inside Userpilot, in a four-week window, having never built a system in the tool before.

Constraints

Four conditions shaped the work before any design started.

  • Technical The tool ships a fixed component library

    Tooltips, modals, slideouts, checklists. No inventing new UI. The experience had to fit those shapes or not exist.

  • Scope Strict brand fit on a tool with its own look

    Userpilot’s defaults look like Userpilot. The platform had to feel like ours, which meant deep custom styling on every surface plus voice work on the copy.

  • Technical Targeting and triggering were the real puzzle

    Firing the right surface on the right page for the right user in the right state. A tour that triggers on the wrong screen is worse than no tour.

  • Resource First real system build in the tool

    I’d used it casually but never built a system in it. The first few days went to ramp, the rest went to the build, inside a four-week window.

Approach

The frame I started with.

Get users to the value moment fast, then get out of the way. Guidance is a cost you charge the user for a benefit they haven’t received yet, so the bill needs to be small and the payoff immediate.

That framing is why nothing here runs long. The tour ends when it has done its job rather than when it has covered the product.

Options I considered.

Build the onboarding directly into the app. More control over the experience, but four weeks wasn’t enough runway for engineering to ship that and the platform itself.

A video walkthrough. I rejected it for two reasons: video is passive, and it’s hard to instrument against actual behavior. I wanted to know if guidance was working click by click, not “did they watch the thing.”

Build the system inside Userpilot. It let the design ship without competing for engineering time, and every step was measurable.

The pick and why.

Everything in Userpilot, styled to disappear into the platform. One custom theme underneath every surface so guidance never reads as a bolted-on layer, and targeting decided per surface rather than per user count, because a first-timer landing on the home screen and someone returning to a page they got stuck on need different things.

Design decisions

The portal tour

A short tour plus a handful of on-page callouts, aimed at everyone arriving on the new portal for the first time.

Short, and it ends at the first value moment. Four steps. The tour stops the moment users reach the thing worth doing, not when they’ve seen every feature. The longer the tour, the more the data shows people checking out, so I designed against my own urge to be thorough.

Opt-in entry, not an ambush. It opens with a short modal naming what’s about to happen and starts only when the user confirms. Auto-triggering into step one would have been faster to the value moment. I went with the modal because consent matters early: users who agree to a tour pay attention to it, and users who get one shoved at them dismiss it on principle.

Re-launchable from the help menu. The tour can be restarted any time. I rejected “dismiss it forever” because people learn a platform in waves. What’s confusing on day one is obvious on day three, and the reverse is also true. Treating the tour like documentation felt more respectful than treating it like a one-shot pitch.

Copy rewritten from feature-forward to outcome-forward. First-draft step copy described what the platform did. I rewrote every line to describe what the user got to do. “This is the projects panel” became “Start your first project here.” Small on each line, large across the whole flow, because outcome-forward copy answers the only question the user is actually asking.

The four-step tour, start to finish

Design decisions

Pointing at one thing at a time

Alongside the tour, single callouts could light one region of the page and explain it. Same theme, much smaller ask.

One target, fully out before the next. Each callout dims the page, lights exactly one region, and anchors a tooltip beside it. When it’s done it fades out completely before another can appear. Chaining them so they slide from region to region was tempting and reads as clutter. A callout that travels is a callout you stop trusting.

Targeting on two signals. How many sessions deep the user is, and what page they’re on. New session on the home screen, tour fires. Return visit to a specific page, that page’s callout can fire. I considered richer segmentation by role and behavior, but two signals turned out to be enough, and simpler logic was far easier to debug. Most targeting bugs in this tool come from the targeting layer, not the UI.

One region at a time, never two
A tour slide reading Step 3 of 4, Never miss a date, with a small calendar graphic above the copy and skip, back and next controls
A tour step and its graphic
The product releases panel lit inside a dimmed page, with a tooltip anchored beside it explaining what the panel does
A single anchored callout

Results

1 in 2
Completed the tourOf the users the portal tour reached in its first month, half finished it end to end.
45,000+
Users reachedReached in the first month after launch, across the whole rollout rather than a pilot segment.
Reusable
Custom themeOne theme served every surface and became infrastructure other internal teams reused.

Reach is shown as a floor value to respect company confidentiality. Completion is the measured first-month rate from Userpilot analytics.

What I'd carry forward

Restraint outperformed coverage, and the completion rate is the evidence. The tour stops at the first useful thing rather than touring the product, and I had to design against my own urge to be thorough to get there. Every step past the value moment is a step where the data shows people leaving, so the tour that covers less is the tour that gets finished.

What I'd do differently: define activation rigorously before designing flows. The value moment was clear enough to design against, but I shipped without a one-sentence definition like 'activated means user X did Y within Z minutes of first session.' A sharper definition would have made instrumentation cleaner and given the team a more honest read on whether the work was working.

The biggest lesson about the tool itself: targeting is the design surface, not the UI. I went in thinking the design lived in the tooltips and modals. It did not. Two signals, session count and page, decided who got the full tour and who got a single callout, and those two decisions shaped the experience far more than any styling choice did. The UI was only the delivery layer. Everything I have built in this tool since starts with a targeting map rather than a flow.