Skip to main content
Back to blog

Customer Journey Path Analytics: Why a Sankey Beats a Conversation List

What aggregate cross-channel journey paths tell you that per-conversation timelines can't — and how Devotel Orbit's Sankey at /insights/journey-paths surfaces drop-offs, common sequences, and channel handoffs.

Orbit Editorial Team

Quick answer: A conversation list shows you one customer at a time. An aggregate journey-path view shows you the sequences thousands of customers actually walk across your channels — where the largest drop-offs sit, which channel sequences repeat, and which handoffs (WhatsApp into a voice call, email into chat) precede escalations or abandonment. Orbit ships that view as a Sankey-style path visualization at Customer Journey Paths, powered by GET /analytics/journey-paths. This post explains what the aggregate view adds over per-conversation timelines, how to read it, and three worked examples on real Orbit channels.

If you've ever chased a churn spike by sampling individual conversations and still had no structural answer, the unit of analysis was the problem.

What a path view tells you that a conversation list can't

A single conversation timeline is forensic: excellent for one customer, useless for structure. The aggregate path view reconstructs the ordered touchpoint sequence across all journeys in a window and answers three questions a timeline can't:

  • Where the largest drop-offs sit. Stage-by-stage reach shows the share of journeys that end at each step instead of continuing — the funnel shape of your cross-channel traffic, not one thread.
  • Which sequences repeat. The most-walked full paths (SMS → SMS → voice, email → chat → done) tell you what customers actually do, as opposed to what your routing rules assume they do.
  • Which handoffs precede escalation. When a recurring pattern shows customers jumping from a messaging channel into a voice call, the path view makes that sequence visible as a pattern, not as an anecdote from one rep's last shift.

The per-conversation view still matters — it powers the timeline you open when a specific customer churns. The path view is what tells you whether that event was noise or a trend.

What Orbit ships: the /insights/journey-paths Sankey

The dashboard page is wired to GET /analytics/journey-paths, which reconstructs ordered touchpoint sequences from your conversation traffic (voice, chat, email, WhatsApp, SMS, RCS) and folds them into the node/link/stage shape a Sankey renders. Everything below is live on the shipped surface — no roadmap claims.

  • Window choice — 24h, 7d, 30d, or 90d. The page supports one look-back window by design; a current-vs-prior comparison isn't meaningful for path structure in the way it is for trend metrics.
  • KPI tiles — journeys in the window, total touchpoints, the stage with the biggest drop-off rate, and how many channels participated.
  • Cross-channel path flow — one column per stage, split by channel, with per-stage drop-off percentage between columns. Bar widths normalize to the widest stage so you can see decay at a glance.
  • Most-walked paths — the full channel sequences customers take most often, each with its share of all journeys. Shares are rounded via a largest-remainder method so the displayed breakdown sums to a clean total.
  • Entry-channel filter — keep only journeys whose first touchpoint was on a given channel (e.g. only journeys that start in WhatsApp). The API echoes the filter back so the page state and the request stay honest.
  • Query knobswindow, entry_channel, max_stages (how deep the path view goes, 2–10), and min_journeys (prune links carried by fewer than N journeys).

Access follows the analytics-read role hierarchy — owners, admins, developers, and viewers can read the aggregate. It shows sequences and counts, not message contents.

How to read the Sankey

  1. Pick a window first. A 24-hour window answers "what blew up today"; 30 days answers "what's the structural pattern." Compare like-for-like: the shape of paths shifts meaning, not just size.
  2. Threshold the noise. The min_journeys knob prunes links carried by a handful of journeys. Until you do, a handful of odd one-off paths will dominate the visual and hide the recurring structure. Raise it and the Sankey gets honest.
  3. Isolate an entry channel. Filtering by entry point answers "where do WhatsApp-originated journeys actually go after the first touch?" That's the question most routing debates are really about.
  4. Read the drop-off percentages between stages. A stage with a large drop rate is where customers stop instead of continue — decide whether that's resolution (good) or abandonment (bad) by checking the other Insights surfaces paired below.
  5. Scan the most-walked full paths. When the top sequences are repeats of the same pattern, you have a routine. When one path is an outlier (email → chat → voice → back to chat), it's worth a closer look.

Three worked examples on real channels

WhatsApp → voice escalation

A support team sees, on the 30d window, that their second-most-walked full path is WhatsApp → voice. The entry-channel filter confirms it: journeys that start in WhatsApp frequently escalate to a call at stage 2. The fix isn't to disable escalation — it's to check whether the WhatsApp agent pool has the tools to resolve order-status questions without a call. The path view made the pattern undeniable in one tile.

RCS → SMS fallback in the middle of a path

A marketing team running rich media sees, in the top paths, that RCS → SMS appears repeatedly at stages 2–3 rather than as a one-stage event. That's not a bug — it's expected RCS-to-SMS fallback on handsets without RCS support — but seeing it as a recurring middle stage tells you to design follow-up messages that still land well on plain SMS. Without the path view, the fallback was invisible traffic.

Email → chat abandonment

A SaaS team notices the biggest drop-off rate sits at stage 2, and the most-walked sequence is email → chat → (end). Customers open with an email, get routed to a chat widget, then stop. Is that resolution or abandonment? Pair it with Contact Reasons filtered to chat: if "billing question" dominates, the chat surface may be routing billing traffic to a bot that can't handle it. The drop-off rate told you where; contact reasons tells you what.

Pair it with containment and contact reasons

Journey paths shows the structure of sequences; it doesn't tell you what customers wanted or whether the AI contained them. Pair it with:

  • Containment — how often the AI agent resolved the conversation without a human handoff. A drop-off at stage 2 means something very different when containment is high (resolved) versus low (abandoned).
  • Contact Reasons — what customers actually contacted you about, ranked by volume. Filters the "what was this path about" question down to a real answer.
  • Sentiment — how it went. Our earlier post on conversation sentiment analytics argues the same point from the other side: aggregate beats per-event polarity. The two surfaces reinforce each other; sentiment annotates the path with outcome, paths annotate sentiment with structure.

Between those four surfaces, you can usually name a root cause before opening a single conversation.

Frequently asked questions

Where does the data come from?

The route aggregates ordered touchpoints from your conversation traffic — the conversations already flowing through voice, chat, email, WhatsApp, SMS, and any other connected channel. It's read-only, tenant-scoped, and scoped to your analytics-read permission; no schema change and no new event pipeline required.

Why does my most-walked path list look wrong on one weird path?

Raise min_journeys. The default prunes links carried by fewer than one journey (i.e. it keeps everything), which lets a handful of one-off sequences dominate the visual. Threshold at the volume you're willing to act on.

Does the page compare windows?

No — one look-back window, by design. A current-vs-prior comparison is meaningful for trend metrics (sentiment, containment) but not for structure; the shape of a path has no "lift" to compute. Pick the window that matches your question.

What role do I need?

Owner, admin, developer, or viewer — the same analytics-read hierarchy the backend route enforces. The page shows aggregates (counts and sequences), not message contents.

How does this differ from the message-delivery funnel or campaign journeys?

The delivery funnel tracks one per-message send→deliver arc. Campaign journeys are orchestration a marketer designs ahead of time. Journey paths is neither: it's the sequence customers actually walked, reconstructed after the fact across inbound and outbound channels.

Open Customer Journey Paths on the 30d window and see what your customers are actually doing — then read the drop-off with Contact Reasons and Sentiment beside it. The structure was always there; now it's visible.

Customer Journey Path Analytics: Why a Sankey Beats a Conversation List — Orbit by Devotel