A two-dimensional arrangement of user activities and the stories beneath them, used to keep the whole product journey visible and to slice a coherent first release from the full scope.
What is the whole user journey, and which slice of it should we ship first?
A story map is a two-dimensional arrangement of user activities and the stories beneath them. It gives a team a shared picture of the whole product experience, so they can slice it into releasesReleaseProduct SpecificationA shipped version of the productView reference → that each deliver a complete, working outcomeOutcomeStrategyA desired business or user outcomeView reference → for real users.
Jeff Patton developed the technique in the mid-2000s after growing frustrated with the way product backlogs lost all sense of context. A flat list of user storiesUser StoryProduct SpecificationA structured story statement capturing a user's goal and the value they expect to receive, in the "As a… I want… So that…" format.View reference → told you what to build but not why the sequence mattered or what a coherent first release should look like. Patton's answer was to lay stories out horizontally across a wall, grouped under the activities they served, so the team could see the whole journey at once.
He described the technique in articles and conference talks over several years before publishing the definitive account in his 2014 O'Reilly book, User Story Mapping: Discover the Whole Story, Build the Right Product. The book synthesised the technique with related thinking from Gojko Adzic on impact mapping and from the broader Agile community on outcome-focused delivery. Story mapping spread rapidly after publication and is now standard practice on discovery-oriented product teams in companies of all sizes.
A story map has two axes. The horizontal axis represents time: activities and epicsEpicProduct SpecificationA large body of work that can be broken into storiesView reference → run left to right in the order a user would encounter them. The vertical axis represents depth: the most essential stories sit near the top, and progressively less common or critical stories drop lower.
Building a map typically runs in three steps.
First, write user activities across the top of the wall, one card per activity. These are the large chunks of work a user does: discover the product, set up an account, create a project, invite a team, publish a result. They represent the narrative backbone of the user experience.
Second, beneath each activity, write the epics that make it up, then below each epic, break down the individual user stories. A story at this level should be small enough to build and ship in a few days.
Third, draw horizontal lines across the map to mark release slices. Each slice should contain enough stories to give users a complete, useful experience, not just a partially working featureFeatureProduct SpecificationA product capability or featureView reference →. The first slice is often called the "walking skeleton": the minimum set of stories that lets a real user complete the core journey end to end.
A worked example. A team building a project-feedback tool maps the journey: a designer uploads a mockup, shares a link, a reviewer adds comments, the designer resolves them. Under "add comments" they list a dozen stories: click to place a pin, type a comment, tag a team member, reply to a thread, mark a comment as resolved. The first release slice keeps only four: place a pin, type a comment, mark resolved, view all open comments. Everything else drops to a later slice. The team now knows exactly what to build for v1 and why.
Story mapping is most valuable at two moments: before a new product or major feature begins development, when the team needsNeedUserA user need, pain, desire, or constraintView reference → to agree on scope, and during a planning session before a new release cycle, when the team needs to decide what makes it in and what waits.
The map works because it makes the cost of scope decisionsDecisionStrategyA recorded decision with context, rationale, and consequencesView reference → visible. Sliding a story from slice one to slice two is a conversation, not a surprise, and everyone can see what users gain or lose as a result.
The technique has real failure modes. A map built in a room without users or research tends to reflect the team's mental model of their product, not the user's actual journey. The activities should come from observationObservationUser ResearchA specific behaviour or statement observedView reference → or interviews, not from an org chart or feature list. A second failure mode is over-mapping: teams sometimes produce maps so large and detailed that the wall becomes harder to read than the backlog it replaced. The map is a conversation tool, and it should stay at the level of detail the conversation needs.
Story mapping is less useful for maintenance work, bugBugProduct SpecificationA defect or unexpected behaviourView reference →-fixing cycles, or any work where the user journeyUser JourneyExperience DesignAn end-to-end map of a user experienceView reference → is already well understood and the team simply needs to prioritise a queue of known tasksTaskProduct SpecificationA unit of work within a story or epicView reference →.
Story mapping is a matrix framework in the discovery category. Its columns and rows map cleanly onto entity types in the Unified Product Graph, turning the physical artefact of cards on a wall into structured, linked data.
jobJobUserJob To Be Done: what the user is trying to accomplishView reference → entities. They describe the functional progress a user is trying to make, and in the Unified Product Graph they can connect to the personaPersonaUserAn archetype representing a user segmentView reference → nodes that perform those jobsJobUserJob To Be Done: what the user is trying to accomplishView reference →.epicEpicProduct SpecificationA large body of work that can be broken into storiesView reference → entities. An epic groups the stories beneath an activity into a coherent block of deliverable scope.story_statementUser StoryProduct SpecificationA structured story statement capturing a user's goal and the value they expect to receive, in the "As a… I want… So that…" format.View reference → entities. Each story_statement describes a small, buildable unit of user value.releaseReleaseProduct SpecificationA shipped version of the productView reference → entities. A release entity in the Unified Product Graph represents a bounded, shippable scope and can link to the story_statement entities it contains.Representing a story map this way means a release decision made on the wall persists in the graph, and every story's relationship to a user job and a release stays visible long after the physical cards are gone.