What Are Milestones?
Milestones are horizontal slices across your story map. Each slice groups cards from every journey and step into one increment of your product. It works end to end, even if it is rough around the edges.
A story map without milestones is just a flat backlog arranged by journey. Milestones add a second dimension: order of delivery. The first milestone answers the question, what is the one thin slice we would ship first? Each milestone after that answers what comes next.
The Walking Skeleton
The first milestone matters most. It is the walking skeleton: the thinnest slice that touches every part of the journey. It will not be polished, and it will not handle every edge case. But it will stand on its own: a complete flow from start to finish that you can put in front of real users.
The skeleton is minimal on purpose. For each step in the journey, pick the single most essential card: the one thing without which the flow falls apart. Everything else moves to a later milestone. The goal is not to build the best version of each step. It is to build a version that connects every step into one flow.
This forces your team to think about the whole journey before it dives deep into any single part of it. Instead of perfecting onboarding while ignoring checkout, you get a rough but complete path through the whole experience.
Iterating in Slices
Once the skeleton is in place, each milestone after it builds on top. The second milestone makes the experience better by adding the next most important card under each step. The third milestone refines it further, and so on.
Each slice should still tell a whole story. It is not about picking off individual cards in priority order. It is about finding the next most valuable version of the whole experience. A good milestone includes cards from across the map, not a deep stack in one column.
Think of it like sketching:
- First milestone. Rough pencil outline. The proportions are there, but the detail is not. You can see what it will be.
- Second milestone. Ink the key lines. Strengthen the important parts and add the interactions that matter most.
- Third milestone. Add shading and detail. Handle edge cases, polish the rough spots, and expand to secondary flows.
- Later milestones. Color and finish. Nice-to-have features and advanced capabilities.
After every milestone, you have something that works. You never have a half-built feature that does not connect to anything. Every slice can ship.
Beyond Delivery
Milestones do not have to represent things you ship. Not every story map is a delivery plan. Even when it is, milestones are just as useful for organizing information as they are for sequencing work.
For a test plan, milestones might separate critical path scenarios from edge cases and regression suites. For training material, they could distinguish beginner-level content from intermediate and advanced topics. For a sales enablement map, one milestone might cover discovery questions while another covers objection handling.
In these cases, milestones are not about “build this first, then this.” They are about visual grouping. Drawing horizontal lines across the journey makes a dense board easier to read. It gives structure to cards that would otherwise blur together into one long column per step.
How Milestones Work
Creating Milestones
Milestones live at the project level. Add a new milestone from the board and it appears as a new row spanning all journeys and steps. Each milestone has a name and an optional description for context about what this slice represents.
Milestones are ordered vertically. The topmost milestone is the first slice you will build, and the ones below it represent future iterations. Reorder them at any time by dragging.
Describing Milestones
Each milestone has a rich text description, not just a title and a plain text field. Use it to explain what this slice is about: the goals it serves, the objectives it addresses, the hypothesis you are testing, or the user outcomes you expect.
A well-written milestone description turns a row of cards into a story. Instead of the team guessing intent from a list of tasks, the milestone explains why this particular cut across the map matters: what success looks like when the slice is done, what users will be able to do that they could not before, and what questions it will answer.
The editor supports formatting: headings, lists, bold text, and links. You can structure the description however makes sense. Some teams use a simple template:
- Goal. The outcome this slice delivers.
- Key objectives. Specific, measurable things that need to be true when this milestone is complete.
- What is in and out. Scope boundaries so the team knows where to stop.
- Open questions. Anything still unresolved that might affect the work.
Organizing Cards
Drag cards between milestones to decide which slice they belong to. For each card, ask whether it is essential for the flow to work at this level of fidelity, or whether it can wait for a later pass.
Cards within a milestone span the board’s journeys and steps, so each milestone reads as a horizontal band across the whole user experience.
Tracking Progress
Each milestone displays a progress bar that reflects how many of its cards have been completed. This gives you a quick read on how close a slice is to being done, without counting cards manually.
Progress is calculated across all journeys and steps within the milestone, so you see the overall state of the whole slice.
Best Practices
- Make the skeleton as thin as possible. If you can remove a card from the first milestone and the flow still makes sense end-to-end, remove it. Push it down. The skeleton should be the absolute minimum that holds the whole journey together.
- Every slice should span the map. A good milestone has cards from most journeys, not a deep pile in one area. If your second milestone only improves onboarding, it is not really a slice. It is a silo.
- Name milestones by intent, not by date. “Walking skeleton,” “Core flow polish,” and “Edge cases and polish” are more useful names than “Sprint 3” or “Q2.” The name should tell you what level of fidelity the slice represents.
- Start with two or three. A skeleton, a refinement pass, and an “everything else” bucket. You can split the later milestones as your understanding deepens.
- Revisit after each slice ships. Once you have built the skeleton and learned from it, the next slice will look different than you originally planned. That is the point. Each slice is informed by what you learned from the last one.
MCP Tools
Manage milestones programmatically through the MCP server:
milestones_list. List all milestones for a project, including progress data.milestones_create. Create a new milestone with a name and optional description.milestones_update. Update a milestone’s name, description, or position.
