Journey builder

Build MSP marketing campaigns as a graph you can see. Lanes hold the steps, goals move people between them, and the canvas flags lanes nobody can reach.

Journey builder

The journey, drawn the way it will run.

The builder is a canvas of two shapes. Cards are lanes – ordered sequences of steps. Rounded pills are goals – the triggers that complete one lane and start another. Click any node and the panel lists every exit it has and where each one leads, so the branch you think you built is the branch you can read back.

How it works

From an empty canvas to a journey that launches

The order below is the order the product enforces, and the third step is the one that stops a journey shipping broken.

Add lanes and steps

A lane is a sequence: send this, wait, then do that. Steps carry their own timing, so a wait is part of the lane rather than a separate object somebody has to keep in step with it.

Wire the goals

A goal names what it is watching for and which lanes it completes and starts. Goals are clamped to lanes the campaign actually owns, so one cannot be pointed at somebody else’s sequence by accident.

Prove somebody can get in, and that nobody falls through

A goal with nothing pointing into it is an entry. A multi-lane journey with no entry is unreachable, and the canvas marks those lanes rather than letting you launch a campaign nobody can enter. The subtler warning is the more useful one: a lane that branches only on conditions, with no active unconditional fallback, is flagged too. An unreachable lane is a loud mistake; a fallback somebody disabled is a lane that quietly catches nobody, and that is the one you find out about from a report six weeks later.

In the product

A graph, not a spreadsheet of rules.

The MADDOX journey builder, showing a draft campaign's lanes and goals wired together as a branching graph.
lanes: 7 goals: 9 unreachable_lanes: 0 Sample data — illustrative product UI, not a performance claim.

Who it is for

For whoever has to explain the campaign afterwards

A journey drawn as a graph is a journey somebody else can pick up. That matters more than authoring speed, because the person debugging it in six months is rarely the person who built it.

  • Marketers who want to see the branch, not infer it from a rules table
  • Owners handing a campaign to somebody who did not write it
  • Anyone who has inherited an automation nobody dares change

Questions

The things people actually ask.

What kinds of steps can a lane hold?

Sending steps, waits, and steps that raise a task for a person. The timing lives on the step itself, so a lane reads top to bottom as the thing that will actually happen rather than as a list cross-referenced against a schedule somewhere else.

What happens when a goal fires?

It completes the lanes it was watching and starts the lanes it points at, for the contact who triggered it. Everybody else carries on where they were. A goal is per-contact unless it is the campaign launching, which is the one trigger that applies to a whole campaign at once.

Why does the canvas say a lane is unreachable?

Because no goal points into it and it is not an entry, so nobody would ever arrive there. A single-lane journey is exempt – with one lane there is no ambiguity about where people start. For anything larger, an unreachable lane is a mistake worth catching before launch rather than after.

Can I edit a journey that came from a pack?

Yes, and your edits are treated as yours. The pack markers survive editing, which is what later lets an update reconcile the campaign in place instead of destroying rows whose ids carry the performance history you have accumulated.

Can I see what launching it would do first?

Yes, and it is read-only. The preview reports which lanes people would enter through, how many contacts resolved, how many enrolment rows would be written and who would be skipped – and it throws the same refusals a real launch throws, so a journey with no valid entry fails the preview rather than passing it and failing at the worst moment. Retired steps are kept in their own drawer rather than deleted, so a lane’s history is still readable after it has been reworked.

Draw the journey you are already running by hand.

Most teams have one. Putting it on the canvas is usually the first time everybody sees the same version of it.