Canvas Analytics
Understand entries, drop-offs, and conversions within Canvas journeys - from a whole-journey summary down to per-node and per-user detail.
Where analytics live
Journey analytics are built into the journey builder itself. When a journey is live, opening it shows the canvas in a read-only analytics view - a teal "Viewing analytics - Read-only" banner appears at the top, with a date-range picker (default All Time) that filters every metric on the page. Click Edit journey to switch back to editing; Discard returns you to the live analytics view.
Analytics refresh automatically (about every 30 seconds) while the view is open.
Journey summary row
The toolbar shows a summary row of journey-level tiles, read left to right as a flow:
- Entries - how many users entered the journey (taken from the trigger node).
- Conversions - total conversions across the journey, based on the conversion goal you configured.
- Conversion rate - a colored pill (
conversions / entries); green, amber, or red by rate. ShowsN/Awhen no conversion tracking is configured. - Revenue - attributed revenue, shown when the journey has driven revenue. It is computed under the journey's own attribution model (labeled on the tile, e.g. "revenue · last-touch") so it reconciles with the conversions above. Mixed-currency totals are marked as approximate.
- Uplift vs control - shown only when the journey has a control group (see below).
Per-node analytics
Every node on the canvas carries its own stats in the analytics view:
On-card overlay
Each node card shows a compact strip with three counts:
| Metric | Meaning |
|---|---|
| Entered | Users who reached this node |
| Proceeded | Users who advanced to the next step |
| Exited | Users who left the journey at this node |
Message nodes add a channel block: Sends, Deliveries, Failed, Opens, Unique opens, Clicks, and Unique clicks, each with a percentage. Open metrics are hidden for SMS (SMS has no open tracking).
Node Metrics drawer
Click a node body to open its preview drawer on the Metrics tab:
- Entered / Proceeded / Exited with percentages of entered.
- Paths - for Branch and Behavior Split nodes, a per-path breakdown showing how many users took each named path (and what share of entered that is). This is the fastest way to sanity-check branching logic - see Canvas Branching.
- For message nodes, the full channel breakdown: Sends, Deliveries, Failed, Opens, Unique opens, Clicks, Unique clicks, Bounces, and Unsubscribes, each with a rate.
A node that hasn't processed anyone yet shows "No analytics for this node yet."
Reading the funnel
The three per-node counts form a funnel you can read across the whole canvas:
- A large gap between one node's Proceeded and the next node's Entered usually means users are parked in between - most often a Delay node still waiting, or a Behavior Split holding users inside its wait window.
- A high Exited count on a Branch or Behavior Split node points at a group flagged Exit canvas, or users falling out via the journey's exit criteria.
- On message nodes, remember that users advance as soon as the message is queued - a user can be "Proceeded" while the message is still being delivered. Delivery, open, and click rates live in the node's channel block, independent of funnel progression. See Message advancement behavior.
- A skipped send (subscription gate, suppression list, quiet-time skip) does not exit the user - the message is dropped but the contact advances, so Sends on a message node can be lower than Entered without any drop-off in the funnel.
Journey Runs (per-user inspection)
The Analytics button in the toolbar opens the Journey Runs drawer - the execution-level view:
- Status tabs: All / Completed / In progress / Failed, each with a count.
- Filters: search by user ID, filter by journey version, and a date-range dropdown (All time / Last 24h / 7 days / 30 days). You can also Export CSV.
- Columns: user ID, status (completed / in progress / waiting / exited / failed), version, current node, entered at, completed at.
Expanding a row shows the Run timeline - the step-by-step path that user took, with a status dot per step, the node name, an optional result chip (for example "Delivered"), and timestamps - plus a Context Variables panel listing the run's journey variables with their inferred types and values. The eye icon opens a per-user journey view that highlights that user's path on the canvas graph.
Conversion goals
The journey's conversion goal is configured in the creation wizard's Conversion step: a primary conversion event (with optional property conditions), optional secondary conversions, a conversion window, and an attribution model (first touch / last touch / linear).
Results surface in two places:
- The Conversions tile and conversion rate pill in the journey summary row.
- Per-node conversion counts, so you can see which step drives conversions.
Journey variants and control group uplift
Journeys support whole-journey A/B/n variants with an optional control group - a variant marked "Held out" that receives nothing, so you can measure the journey's true incremental effect. Setting them up is covered in Variants and control group; this section covers how their results read.
Uplift vs control
When a control group exists and both arms have recipients, the summary row shows the uplift vs control tile:
- It compares revenue per recipient in the treatment arms against the held-out control arm and reports the uplift percentage (or the raw incremental revenue when a percentage isn't computable - for example, when the control bought nothing).
- Positive uplift renders green; negative renders red - if the journey under-performed doing nothing, the tile says so.
- The comparison covers control recipients and revenue vs treatment recipients and revenue over the same attribution window as the headline revenue tile.
The tile populates once there is real traffic: treated sends, control entrants, and purchases inside the conversion window.
The Journey variants modal is configuration-only - it shows no stats. Variant results are reported through the analytics surfaces on this page: the uplift tile for the control comparison, and per-path node analytics on each variant's flow (each variant is an output of the shared Trigger, so the Paths breakdown on the trigger and the node stats down each branch show how each variant performs).
Experiment nodes
For path-level testing inside a journey (A/B/n on a single fork, winner-locking, bandit optimization), use the Experiment node. Its distribution, winner metric, confidence level, and sample-size settings are configured on the node itself; path performance is visible through the node's per-path analytics like any other multi-output node.
Versions
Each published journey version keeps its own statistics - entries, active, completed, exited, failed, conversions, conversion rate, and average completion time. The Journey Runs drawer's version filter scopes the run list to a single version, so you can compare behavior before and after a change.
The journeys list page can also show per-journey columns for Entries, In flight, and Completed (enable them from the column picker).
Accessing journey analytics via API
Everything on this page is also available programmatically:
| Endpoint | Returns |
|---|---|
GET /journeys/:id/stats | Journey-level stats, revenue, and uplift |
GET /journeys/:id/node-analytics | Per-node analytics keyed by node id |
GET /journeys/:id/executions | The runs list, filterable by status |
GET /journeys/:id/variant-stats | Whole-journey variant performance |
All accept the same startDate / endDate range as the in-app date picker. See the Canvas API for details.
Quick reference
| Question | Where to look |
|---|---|
| How many people entered this journey? | Entries tile in the summary row |
| Is the journey converting? | Conversions tile + conversion-rate pill; per-node conversion counts for the driving step |
| How much revenue did it drive? | Revenue tile (attributed revenue) |
| Is it better than doing nothing? | Uplift vs control tile (requires a control group) |
| Where are users dropping off? | Per-node Entered / Proceeded / Exited overlay across the canvas |
| Which branch path do users take? | Node Metrics drawer → Paths section |
| How is a specific message performing? | Message node's channel block (sends, deliveries, opens, clicks, bounces, unsubscribes) |
| What happened to one specific user? | Analytics → Journey Runs → search their user ID → expand the run timeline |
| Did my last edit change behavior? | Journey Runs version filter + per-version stats |