Customer Journey Maps: The Complete Guide For B2B SaaS

Customer journey maps are a tool to understand how people and companies buy your software. They have two key benefits.

Customer journey maps are a strategic tool to communicate across your organization to show how people and companies interact with your brand and product. By boiling down a lot of complexity into a visual map, it becomes much simpler to communicate the complexity of the customer journey and reach a shared understanding.

Customer journey mapping also defines the data you need to track, attribute and sync across all your tools so every tool and team has a shared context on where any person or company is in the customer journey. This informs your tracking plan and attribution modelling — so you can solve the “which drink got you drunk” problem of multi-touch attribution.

Customer journey mapping also outlines how you can orchestrate 1:1 personalized experiences at scale — discussed in Part 6 of The Complete Guide to Customer Data.

Without a customer journey map, your teams, tracking & data has no framework to build a complete understanding of your customer journey.

In the second part of The Complete Guide to Customer Data, we’re going to share our customer journey mapping framework, examples, and how this ties to your data model.


  • Create your customer journey map
  • Define the content you need to create & the channels you need to support
  • Create a high-level tracking plan
  • Create an attribution model


  • Customer journey map template

The Complete Guide to Customer Data

Lesson #1: The Importance of Customer Journey Maps and “Storyboarding”

If you look at other examples of customer journey maps, you’ll see many elaborate graphical examples. You can get lost in the beauty and complexity of these.

At Airbnb, the peer-to-peer nature of hosting people in homes and experiences creates a lot of touchpoints beyond just the website. Since each of these experiences reflected on the Airbnb brand and product, they wanted to understand the intricacies of each experience and make it shareable and digestible for everyone in the company.

One of the methods their team used was hiring Nick Sung, a story artist & animator who worked with Pixar. Together they outlined a series of screens to storyboard all the events of the Airbnb experience.

Do you need to hire a Pixar story artist? Probably not.

Though the story of hiring a story artist is appealing, the objective was to communicate the customer journey throughout the company. A “map” of screens made this easily possible.

This is the takeaway lesson — how can you communicate your customer’s experience across your company, and use that shared understanding to optimize it. This is one key purpose of the customer journey map.

Lesson #2: Outline the elements of your customer journey

Like the ideal customer profiles vs personas, you need to be able to tie your customer journey map to data. Almost every key interaction with your brand and product can be tracked and traced to a person or company.

But there are dozens (even hundreds) of different types of actions that people and companies take that you can track and tie data to. This would be overwhelming to most people in the company.

A customer journey map should be simple to create, read, and understand. It highlights the macro-conversions that many teams in the company optimize for (like a new user signing up) vs. micro-conversions that concern few other people.

You can refine the nth degree later with a deep dive into your analytics, customer interviews, and so on. But the goal is not to sink under analysis paralysis — it is to simply understand the backbone of your customer journeys.

The common pattern to drawing customer journey maps focuses on the same three things; lifecycle stages, variations of customer journey paths, and conversion events.

  1. Customer lifecycle stages are the discrete, sequential steps leads and customers take towards (and after) becoming a customer. (e.g. visitor, lead, qualified lead, opportunity, customer)
  2. Customer journey paths are the different versions of an experience (e.g. free trial signup vs. request a demo and talk to sales)
  3. Conversion events are the triggers to move from one lifecycle stage to the next (e.g. Demo requested through a form to move from visitor to lead) through a particular customer journey path

Start by listing all the elements in each.

Listing your customer lifecycle stages

You need a common agreement over the key lifecycle stages before, during, and after some buys from you. This is often already defined and actively used in your CRM and marketing automation tools.

In B2B, it will look like some variation of this:

  • Visitor
  • Lead
  • Qualified lead
  • Opportunity
  • New customer
  • Customer

Post-purchase, your customer journey might not be a straight progression. Customers may oscillate between different states of active, inactive, churned, and more - you might want to list and map these states too, including the circular dependencies.

Listing your customer journey paths

There are likely to be more than one method a customer can interact with your brand and product. These create different paths of interaction that need to be mapped for each lifecycle stage.

For each stage of your customer lifecycle, you will have many different paths, like:

  • Marketing channels & campaigns (e.g. PPC ad to landing page vs. partnership referral)
  • Sales processes (e.g Free trial vs. demo request)
  • Paths into the product (e.g. self-service signup vs. landing page vs. agency onboarding)
  • Products & pricing tiers (e.g. Solo plan vs. Enterprise plan)
  • User-level segmentation (e.g. onboarding for marketers vs. onboarding for developers)

This may tie to your ideal customer profile, and how you segment “ideal” fit customers from less ideal fit (but still sellable).

For example, you can buy Mention by submitting a demo request, buying an annual contract, and working with a dedicated customer success manager. You can also buy Mention by signing up yourself, paying by credit card, and using their software without help from anyone else.

For every lifecycle stage, you will have one or more customer journey paths. For instance, the number of sales processes (inside sales, self-service) indicates the number of customer journey paths.

Listing your conversion events

On every customer journey path, and between each lifecycle stage there will be a conversion event. This is the moment an action takes place that takes a person from one experience to the next.

Conversion event

Event tracking can often be messy with many different tools tracking similar things in different ways. To keep data clean, usable, and understandable (without heavy documentation), it’s important to keep this consistent where possible - just like your master customer data model in Part 1: Ideal Customer Profiles & Data Models

Adopt a common naming convention for your events, like the Object-Action framework. This gives the name of the object and the action in the past tense. The Object-Action framework has many benefits:

  • Event names do not overlap. They are specific to unique “things” (data objects)
  • Events are easy to find (e.g. everything relating to newsletter starts with Newsletter), add (additional actions to) and maintain.
  • Events with Object-Action are quick and easy to understand

Here’s an example of conversion events within an experience.

Lifecycle Stage movement Experience Conversion event
Visitor to lead Blog post Newsletter subscribed
Lead to opportunity Landing page Demo requested
Opportunity to customer Pricing page or in-product paywall Subscription created

Lesson #3: Create your customer journey map

With the elements and variations of your customer journey defined, next you need to transform this into a map.

Step away from the computer and make it a literal map. As with the ideal customer profile, this exercise is best conducted with all those who own customer data in your company in a room together. Since it is a visual product (a “map”), this often becomes a visual task, using a whiteboard or large sheet of paper.

On one axis, you can illustrate lifecycles stages. On the other axis, the different customer journey paths for that stage. (We will come back to the conversion events).

Some teams choose to make a horizontal, timeline-based map. This shows the progression of a customer from left-to-right through a series of lifecycle stages. Other teams a choose a vertical, funnel-based map (familiar to marketers).

Customer journey map

The form of your customer journey map doesn’t matter, so long as it is clear and simple to understand.

Example: Customer journey map at Mention

Mention is a web & social monitoring tool. In this example, we’ll show the acquisition part of the customer journey. This illustrates a typical B2B SaaS free trial + inside sales team model.

  • New customers find through their blog content and referral.
  • They capture interest through either free trial signup, a demo request, or subscribing for gated content like webinars and eBooks
  • Trial signups and marketing leads through webinars & eBooks get personalized email nurturing
  • Marketing leads either start a trial or request a demo.
  • Trial leads either purchase a paid plan or request a demo.
  • Trial signups from larger companies are routed to sales (like demo requests)
  • Demo requests are qualified by sales and become a sales opportunity
  • Customers are anyone who is paying; self-service or through an account created after sales
  • Enterprise customers have dedicated support reps (a different experience)

With lifecycle stages, there are visitors, leads, opportunities & customers. This gives us our outline for our customer journey map. Notice the number of customer journey paths may change and “weave” between lifecycle stages - it’s not always a simple grid.

Here’s an example of part of a customer journey map for acquisition at Mention (excluding the lead nurturing stage for simplicity).

Lesson #4: Creating & managing each customer experience

The results of this format of customer journey map is a two-dimensional grid. Each “gap” in the grid for a lifecycle stage on a given customer journey path represents a customer experience - a “screen” in your storyboard.

You need to start by “filling in the blanks” and naming each experience. Some of these will come easily, such as your product’s free trial. Others might take more definition.

With each of your experiences named, you need to understand your backstage operation that makes each experience possible - the tools, teams & data.

Content & channels

Each of your experiences needs a content and channel. You need to outline what the content of this experience will be, and where your customer (or potential customer) will find this experience.

For example, here’s the content & channels for the two sales examples. Both of these experiences will nurture a lead to becoming a customer, but they have different content and different channels.

Experience Content Channel
Free trial Product walkthrough, onboarding drip emails Product, Email
Product demo Product demo in demo environment, sales script Sales video call

This may also surface customer experiences in your customer journey that lack a content or channel.

Tools & technology

Each of your channels & content needs a tool. You need to choose the right tools to provide the experiences you’ve outlined in your customer journey map.

(This is explored in-depth in Part 4 on Choosing Your Marketing Technology Stack). This may highlight gaps or duplicate capabilities in your toolset.

For example, the tools needed to provide the onboarding experience in the product and via email.

Content Tool
Product walkthrough Appcues
Onboarding drip emails

Team & ownership

Each of your tools & experiences needs a team to own it. For instance, your product walkthrough needs to be created & updated by a team and person. They should choose the tools, design the elements within each experience, and keep it up-to-date.

There will be overlap here. Teams will own multiple experiences. Tools may manage multiple experiences. Map all the dependencies here:

  1. Owner team needing support of other teams
  2. Overlap with tools between teams & experiences
  3. Handoff between teams between experiences

You may find one team needs to own it, but needs the support of another (for instance, product to maintain a demo environment for sales). Make sure to map these inter-team dependencies.

You may find some overlap with content, channels, experiences & teams. The same live chat tools might be used for setting sales meetings on your website as well as in-app customer support. You need to define hand-off within tools (like forwarding support requests in sales chat).

You’ll also notice you’ll have handoffs between experiences as your leads and customers progress through each conversion event of the buyer’s journey. For example, the teams managing experiences could be mapped like this.

Experience Team Handoff from/to and when (conversion event)
Free trial Product Leads from marketing on Trial started.
Product demo Sales (supported by product) Leads from marketing on Demo requested. To customer success on Closed won. To marketing on Closed lost.

To help speed you along, you can grab our customer journey map template here.

Take a break? We'll email you the rest

Lesson #5: Extract your data & attribution model

With your entire customer journey mapped (lifecycles stages, journey paths & conversion events), and your “backstage” operation mapped too (content, channels, tools, teams & ownership) you need to extract the data that defines your customer journey and define your attribution model.

This can be technical to implement, but the groundwork on defining your customer journey map and backstage operation will clarify the objectives and “end state” of your data and implementation.

Extracting your tracking plan

Earlier, you outlined the key conversion events in your customer journey along customer journey paths and between lifecycle stages.

To understand the context around the event, we need to use event properties and it’s location. Event properties are additional attributes that contain the detail and context of an action.

  • A form submission event might have name, email and all the form fields.
  • A website page view might have UTM parameters and referral data.
  • A live chat conversation will have the messages being exchanged.

The context of an event is also important. You need to be able to understand where the event is happening in your customer journey map, what tools, and what data is being captured. This can be captured in:

  • Event properties
  • Context of the event (like the website page being viewed when a lead subscribed)
  • The tool the experience is happening and the event is tracked in. For example, someone might subscribe to a newsletter via a form on the page, live chat, or an overlay.

To track each conversion event, we need at least one tool or database. This might be an analytics tracking tool, email tool, billing subscription tool, or the database of your product.

Conversion event Properties Location
Newsletter subscribed Email Blog > HubSpot Forms
Chat > Drift
Overlay > Unbounce
Demo requested Email, Domain Landing page > HubSpot Forms
Subscription created Email, Plan Checkout overlay > Stripe

Setting states & segments

Tools often capture the event properties, location & context within an event timeline. You need to transform all this event data into person-level and company-level attributes to indicate their “state” (position) within your customer journey map - the customer lifecycle stage, and customer journey path.

For instance, when a company buys your software, someone in their company may have a Subscription created event tracked from a payments service like Stripe. This event should update the state (customer lifecycle stage) to indicate they are now a customer, and update the state (customer journey path) based on their pricing plan.


To do this, you need a method of updating (company-level) attributes based on (person-level) events. Some tools can do this automatically for parts of the customer journey they control and “understand”, but you need to configure this for outside tools. For instance, your CRM & marketing automation can track new leads but need events to indicate a customer churning too.

This example shows the simple logic when Subscription created event tracked on a Hull User updating an Account Attribute Lifecycle Stage to Customer.

// Updating the lifecycle stage when a subscription is created => {
  if (event.event==="Subscription created") {

    //Set Lifecycle Stage to "Customer" on the Account that this user belongs to.
      lifecycle_stage: "Customer"

You need the same logic for all your person and company level progression through your lifecycle stages and between customer journey paths, and stamp all event properties, location & context as attributes too.

There are other states within your customer journey to be tracked and recorded - including exit states.

For instance, when an account churns or a lead unsubscribes, this needs to be reflected in all your tools too. This is particularly important if you are using multiple tools to message someone.


This example shows the simple logic to update a person’s email subscription status user_subscribed based on data from Mailchimp, Intercom or HubSpot.

const { intercom, mailchimp, hubspot } = user;

const merged_value = mailchimp.subscribed || !intercom.unsubscribed_from_emails || !hubspot.hs_email_optout;
const changed_value = undefined;

// If Mailchimp subscription state changes 
if (changes.mailchimp && changes.mailchimp.subscribed) {
  // Then use Mailchimp subscription state
  changed_value = changes.mailchimp.subscribed[1];

// If Intercom subscription state changes
else if (changes.intercom && changes.intercom.unsubscribed_from_emails) {
  // Then use Intercom subscription state
  changed_value = !changes.intercom.unsubscribed_from_emails[1];

// If HubSpot subscription state changes
else if (changes.hubspot && changes.hubspot.hs_email_optout) {
  // Then use Hubspot subscription state
  changed_value = !changes.hubspot.hs_email_optout[1];

// Update user_subscribed attribute whenever the person subscribes
// Or unsubscribes
accepts_marketing = changed_value !== undefined ? changed_value : merged_value;
hull.traits({ user_subscribed });

// Then sync this attribute across all your tools to add/exclude subscribers

Finally, your customer journey map may have circular states like levels of activity. A user might oscillate between active and inactive. You can track this based on the last date of a Logged In event, and then creating a time-based segment.

const mappings = {
  'Logged In': 'last_logged_in',

// Store the last time event occurred as a timestamp attribute
event.reduce((attributes, e) => {
  const { event, created_at } = e;
  const attribute = mappings[event];
  if (attribute && created_at) {
    attributes[attribute] = created_at;
  return attributes;
}, {});

// Write the results to the profile
if (_.keys(attributes).length > 0) {
  hull.traits(attributes, { source: 'recency_activitylevel' });

All this data needs to be written back to your master customer data model, and appear in person and company profiles across all your tools, so every tool (and team) has the full context of where a person and company is in your customer journey.

Creating a Multi-Touch Attribution Model

Marketing attribution (and attribution over the full customer journey) should tell you which customer experiences produced value for your business. By mapping and tracking your conversion events, you can define your attribution model for your entire customer lifecycle.

Much of the discussion and debate around attribution modelling (particularly multi-touch attribution) is around the weighting of value given to each part of the customer journey. First-touch only and last-touch only models are largely discredited - though simple (and so easy to implement), they do not explain why a customer bought. This is particularly true of B2B purchases with multiple people involved in a deal.

The weighting of value is only a small and relatively trivial challenge of attribution modelling. Four other challenges include:

  1. Tracking your entire customer journey, including all key conversion events across every channel
  2. Writing all conversion events as attributes on person and account profiles.
  3. Unifying data tracked from multiple tools into a single profile for each person and company
  4. Integrate data with your tracking events and attributes across all your tools — including attributes used to build attribution models

The first two are addressed in this guide. You need to outline which tools should track each channel in your tracking plan. You also need a mechanism to transform all of your event data into attributes - an example shared above.

The last two will be addressed in later chapters in The Complete Guide to Customer Data including identity resolution (part of building your “single source of truth”) and data integration best practices.

Unify all your customer journey tracking in Hull

Hull is a customer data platform. Combine data from all your tools, tracking & databases into a unified customer profile. Then cleanse, enrich, segment & sync that data across all your tools in real-time.

Explore Hull's customer data platform

With all your data tracked, unified into matching person & company profiles, written into attributes and synced across all your tools — then you can begin to implement your multi-touch weighting model. To do this, you need to describe how you’re going to attribute value to different conversion events - your attribution model statement.

Different attribution models emphasize different conversion events, but most have some focus on the first touch ever across a company and the last touch that lead to the company becoming a customer.

You need to define your attribution model statement, and then implement it from your unified, transformed data (with all your attributes written to a person and company profile) in a tool of your choice.

Example: Multi-touch attribution model at Drift

The Drift team sources leads for sales across multiple channels and multiple touchpoints. Their customer journey involves a company buying, but many people involved with different levels of seniority and job function as budget holders, users, and champions.

They created a multi-touch attribution model focused on the first and last touch data model. Here’s their attribution model statement. You can read how they implemented this in our Spotted post on multi-touch attribution.

For the original source fields, we'd like the highest ranking source & details on the oldest date that any of these events occurred. If two events of the same rank occur, we want the earliest in the day.

For the latest source fields, we'd like the highest ranking source & details on the most recent date that any of these events occurred. If two events of the same rank occur, we want the last in the day.

Everything has the same logic on the account level, but we of course want the oldest source across all users on that account for the original source and the latest across all for the latest.

Attribution model statementDrift

Put it into practice

Now you've studied the theory and process, you need to put it into practice. Using this guide with our customer journey map template & worksheet, you can create your customer journey map and how your tools, teams & data will track & attribute it.

Coming Up in Part 3: Creating a “Single Source of Truth” for Your Customer Data

With your customer data model, attribution model, and tracking plan defined, you have a clear outline of the customer data you need.

To make these different, disparate data sources work together, you need a way to unify that data into a single customer view, cleanse that data, determine the “truest” data source for each attribute, and compute your “golden customer record” — the latest, most accurate version of your customer data to sync across all your tools.

Get a Demo

Unify & sync data across your tools, tracking & databases in real-time with Hull's customer data platform.

Get a custom demo
Ed Fry

Prev 'Ed of Growth at Hull, working on all things content, acquisition & conversion. Conference speaker, flight hacker, prev. employee #1 at (acq. HubSpot). Now at Behind The Growth

If you've questions or ideas, I'd love to geek out together on Twitter or LinkedIn. 👇