A single step in a user journey
A journey step is the smallest meaningful unit of a user journeyUser JourneyExperience DesignAn end-to-end map of a user experienceView reference →: one thing the user is doing, at one moment, with one intent. A journey is a sequence of these steps, and a step is where the abstract map touches the ground. NeedsNeedUserA user need, pain, desire, or constraintView reference →, emotions, and friction all attach to steps, because that is the only place specific enough to hold them. A journey described only at the level of phases is too coarse to act on; a journey decomposed into steps becomes a list of things to fix.
Journey mapping as a structured practice traces to service design in the late 1990s. OxfordSM, then Oxford Corporate Consultants, is widely credited with introducing customer journey mapping around 1998 in work for Eurostar, mapping the rail experience end to end. The step as the journey's atom is implicit in that lineage: to map a journey you have to break it into the discrete actions a person takes, in order.
The grammar of journey maps was later codified by the Nielsen Norman Group, which fixed the now-standard layering. A journey has a few high-level phases. Each phase contains the granular actions, thoughts, and emotions of the user. Those granular actions are the steps. The convention matters because it gives the map two zoom levels: phases for the executive view, steps for the team that has to change something.
The 2009 McKinsey consumer decision journey, by David Court, Dave Elzinga, Susan Mulder, and Ole Jørgen Vetvik, reshaped the phase layer by replacing the linear funnelFunnelGrowthA conversion funnel tracking user progressionView reference → with a loop of consider, evaluate, buy, and post-purchase experience. That shift left the step intact as the working unit; it changed the shape of the phases the steps live inside, and it made the post-purchase steps matter as much as the pre-purchase ones.
A team maps the activation journey for a project-management tool. The "set up first project" phase looks healthy in the metricsMetricStrategyA unified metric that measures progress, health, or behaviour across the productView reference → until they decompose it into steps: create workspace, invite a teammate, create the first taskTaskProduct SpecificationA unit of work within a story or epicView reference →, assign it, set a due date. Pinning emotion and drop-off to each step exposes the real problem. Ninety-two percent of users clear "create workspace" and "create first task", and only thirty-one percent clear "invite a teammate".
That single step is where the journey breaks. The need it reveals, I do not want to commit my team before I trust this tool, was invisible at the phase level, where "set up first project" reads as one smooth block. The fix is scoped to the step: make inviting optional, defer it past the moment of first value. The step gave the team a place precise enough to attach a need, a metric, and a change.
In the Unified Product Graph, a journey step sits in the UX-design domain as the atomic element of a user journey. The composition edge is User JourneycontainsJourney Stephierarchy, and ordering is carried by user_journey_contains_journey_stepJourney StepprecedesJourney Stepsemantic, so the sequence is an explicit chain the graph can walk. The step is where needs and solutionsSolutionDiscoveryA proposed approach to address an opportunityView reference → meet: journey_step_precedes_journey_stepJourney SteprevealsNeedcross-domain and its inverse journey_step_reveals_needNeedoccurs inJourney Stepcross-domain pin a need to the exact moment it surfaces, and need_occurs_in_journey_stepJourney Steprealised byFeaturecross-domain connects that moment to the thing built to serve it. Where a journey is organised into phases, journey_step_realised_by_featureJourney Phasehas stepJourney Stephierarchy nests the step under its phase. The structure keeps two zoom levels live at once: phases for the overview, steps for the work, with needs and featuresFeatureProduct SpecificationA product capability or featureView reference → anchored to the level granular enough to act on.journey_phase_has_step
Type-specific fields on BaseNode
touchpointstringInteraction touchpoint
channelstringChannel (e.g. "web", "email", "in-store")
emotion_scoreobjectUser emotion (1 = very negative, 5 = very positive)
friction_scoreobjectFriction (1 = effortless, 5 = very painful)
thoughtstringWhat the user is thinking
ownerstringResponsible owner
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
13 edge types connected to this entity.
user_journey_contains_journey_stepjourney_phase_has_stepjourney_step_has_actionjourney_step_precedes_journey_stepjourney_step_precedes_journey_stepjourney_step_reveals_needneed_occurs_in_journey_stepjourney_step_realised_by_featurefunnel_step_maps_to_journey_stepcustomer_journey_stage_spans_journey_steptouchpoint_occurs_in_journey_stepjourney_step_shown_on_screenjourney_step_yields_observation