What it does
A journey goal attaches a single business outcome to a journey and measures how many unique people reached it — a purchase, an event registration, a loyalty redemption, or anything you can raise a custom trigger for. Progress shows in the journey's step analytics pane and in the aggregate cross-journey dashboard, where journeys can be filtered by goal.
Key facts
- Six goal categories ship: drive a purchase, engage customers (event registrations), increase loyalty (point redemptions), onboard new people (connection to a sales agent), send a general notification, and custom goal.
- All of them except "send a general notification" measure via custom triggers. That one uses pre-calculated email open and clickthrough metrics instead.
- One goal per journey. There is no way to track a primary and a secondary outcome on the same journey.
- Goals can be expressed as a count or as a percentage of the journey's audience.
- Goals count unique profiles only. Someone who converts twice counts once.
- The attribution window is a three-day listening period after the customer completes the journey. Conversions inside the journey or within those three days count; anything later does not.
- Dataverse triggers cannot be used as journey goals. If the outcome you want to measure is "case resolved" or "opportunity won" as a record change, this feature will not measure it.
- People excluded before journey entry, or exited via a suppression segment, never count toward the goal.
- When someone is in two journeys that share the same goal, the second journey gets the credit.
- Goal achievement is recorded as a
GoalEventinteraction, so it is available in the interaction data alongside every other interaction type.
When to use / skip
Set a goal on any journey where someone has to justify the spend. It is the only place in the product where journey activity is tied to an outcome rather than a send metric, and the cross-journey dashboard's ability to filter and compare by goal is what makes a marketing review meeting productive rather than a parade of open rates.
Skip it on operational journeys — transactional confirmations, reminders, internal notifications. There is no outcome to attribute and the goal panel just adds a number nobody reads.
Be honest about where it doesn't fit. The three-day window and the unique-profile rule make this a short-cycle attribution model. For a B2B journey feeding a six-month sales cycle, the goal will report near zero and the client will conclude the journey failed. Those clients need attribution built downstream — in Fabric, over the interaction tables joined to opportunity data — and you should say so at design time rather than after the first quarterly review.
The custom trigger requirement is the other filter. If the client cannot get their commerce, loyalty or ERP platform to fire a trigger into Customer Insights, the only goals available to them are the email-metric one and nothing else useful.
Configuration decisions
- Which single outcome the journey is actually for. Forcing this conversation is half the value of the feature; teams that cannot answer it usually have a journey that does two jobs badly.
- Count or percentage, and what the target number is. Percentage targets look better in review decks but move as audience size moves.
- Which custom trigger represents the outcome, who owns firing it, and what payload it carries. This is normally an integration workstream, not a marketing one.
- Whether the three-day listening period is compatible with the client's real conversion lag. If it isn't, decide up front that goals are directional only and put the real attribution in Fabric.
- How to handle audiences that sit in several goal-sharing journeys at once, given only the second journey gets credit.
- Whether the goal should be shared across a journey family for cross-journey comparison, or unique per journey for precision. You cannot have both.
Gotchas
- One goal per journey is a hard limit. Clients who describe a "primary and secondary KPI" need to be told early that they are picking one.
- The three-day post-journey window is not configurable and is easy to miss in the docs. Long consideration cycles will report as failures.
- Dataverse record changes are not eligible as goals even though they are perfectly good journey triggers. People assume symmetry here and design a whole measurement plan around it before discovering otherwise.
- Suppression-driven exits are silently excluded from the goal denominator and numerator. A journey with an aggressive suppression segment can show a flattering conversion rate for the wrong reason.
- Unique-profile counting means repeating journeys never re-count a returning converter, which suppresses goal numbers on exactly the journeys that run most often.
- Where two live journeys share a goal, attribution goes to the second one. If a client runs an always-on nurture alongside campaign journeys with the same goal, the credit lands somewhere they don't expect.
- The custom trigger has to exist and be firing reliably before the journey publishes. A goal wired to a trigger nobody is sending reports zero forever and looks identical to genuinely poor performance.
Consultant notes
- Make the goal definition a design workshop output, signed off, before anyone builds a canvas. Retrofitting a goal onto a live journey means you lose the history.
- Test the custom trigger end to end in a non-production environment and confirm a
GoalEventlands, before the marketing team ever sees the goal panel. Zero-versus-broken is indistinguishable on screen. - Push back hard on multi-outcome measurement requests. Offer the Fabric route for anything beyond one outcome and three days rather than bending the feature.
- Tell the client plainly which conversions their goal cannot see — late converters, suppressed contacts, repeat purchasers — so the number is understood as a floor, not a total.
- If the client runs overlapping always-on journeys, walk through the second-journey attribution rule with an example. It is the one that produces angry emails six weeks after go-live.
Worth revisiting if the three-day attribution window becomes configurable or the one-goal-per-journey limit is lifted.