Sourcegraph Learn

How to create user journey maps for software products

Shaili Shah
Published on December 8, 2021

User journey maps, like user personas, are useful for overall product development. They are a visual representation of user behavior from when your target users first decide to use your software product, through to the tasks they complete during its use, and finally what kind of solution the interaction provides to them. User journeys also illustrate the way a user views and uses the product over time and in different contexts. In mapping a user or customer’s experience, we factor in all the channels through which the software may be encountered for the first time and for regular use. We also consider which platforms, locations, or situations may best fit your product.

Unlike a user flow diagram, this is a more holistic picture of the user’s experience with your app or website: a user journey map considers a user’s inner experience as they use your product, including their challenges and motivations or needs. They take into account the user’s overall satisfaction with the product experience and not simply their physical actions while using it.

In short, a user journey offers a high-level look at the various scenarios where the user interacts with your product. This overview is useful to calibrate not only designers and developers but all other stakeholders and key business decision makers in driving forward your software project.


  • User persona(s) and any other research/date on your user groups
  • Market research and competitor analysis

Step 1 — Use your persona to understand what brings the user to your product#

The first step is to identify whose journey you’re mapping and in what scenario or situation they are in. Revisit each user persona and define their goal or the problem the user hopes will be solved by using your software. Write the main points as bullets in the first section at the top.

It’s important to factor in the user’s context: what’s around them in their environment and what’s motivating them. Consider if there are any constraints or assumptions they hold about it, such as the time it will take or other external pressures, devices they use, and access to information or resources they may need to take the first step to use your product.

Some questions to address in this first section:

  • What are the situations and channels that bring them to your product? How do they discover it?
  • What expectations do they hold about the process? What are they hoping to get out of it?
  • Is there any easy or obvious first step to draw them in, if they are on the fence or unsure in any way? What information do they need to know up front?

With these questions in hand, we can move onto identifying phases.

Step 2 — For each user group, identify the main parts of the process of using your software#

The next step is to identify what the phases of the user’s journey are when using your product. By splitting these into columns, it allows you to see what the user thinks, feels, and does at each stage of interacting with your software.

These phases will vary depending on what your software project is, so here are initial questions to consider:

  • In terms of functionality, what does the software allow the user to do and what are the main steps of the process?
  • What are the main decisions a user must make when using your product (in chronological order)?

Again, because this is more about the user’s overall experience in a specific context, the phases should account for more than just what happens when someone is using the product or the actions they perform.

Let’s consider two examples. For a social media app, the phases may be 1) discovery of the app (through whom or what?), 2) evaluation of the app, 3) adoption, 4) engagement (or posting or sharing content), and 5) retention (what keeps them coming back?). For a job applicant using a job search website, the phases may be 1) discovery, 2) search, 3) application, and 5) response.

Step 3 — For each phase, write down what the user thinks, feels, and does in each column#

This step is where you identify a user’s actions and motivations as they use your product or software. The purpose of this work is to anticipate a user’s frustrations, challenges, or pain points and make your product experience a more intuitive process.

For each phase of the user’s journey, identify:

  • What actions does the user perform?
  • What might your user be thinking and feeling when they use your software?
  • What questions are they asking as they move from one step to the next?
  • What might they be saying to themselves and what decisions might they make in each stage? Include little snippets of this internal dialogue as quotes.

Once you have each column populated, you can bring this knowledge to your product.

Step 4 — Use this map to identify next steps in designing your product with this user’s journey in mind#

Now that you have a better picture of the user’s journey, you can start to refine your software project with this information. For example, you may get an idea for a new feature based on what you discover about your user as you put yourself in their shoes.

In the section below the phases, add some ideas for clarification or refinement of your project under an Opportunities header. This will document what you can bring back to the product design team.

Step 5 — Collect data and user feedback to revise your user journey map#

Like the persona, a user journey map is most useful if you keep it updated with what you learn as you design and iterate on your product. It’s important to keep validating your findings.

If you conduct usability testing, more user interviews, or observation of people using your product or similar ones, that may inform how you understand this journey and can help guide future development.

Where to go from here#

A user journey map is meant to guide your product development process and to be a tool to communicate your software project to stakeholders and others involved in product development. Although there are other UX tools like empathy maps, this method is helpful for understanding the big picture in a chart format.

You can read more about user journey maps from the following resources:

From here, you can also take this same information and organize it into a narrative or a more visual representation. In this CXL blog post, you can find more varied examples of how experts have mapped out their user journeys.