Skip to main content
A journey is the row of phases a customer moves through: Marketing, Sales, Implementation, Success and Product, or whatever your workspace uses. Each phase reads the stage property of one object (Deals · Deal stage), or a range of options on a property the phases share (Companies · Lifecycle stage), or a Journey stage property Custral adds when there is neither. Both endpoints are read-only. The journey is set up in the app under Journeys → Setup.

Retrieve the journey

GET /v1/journey returns the phases, their stages, the meetings expected in each stage with their playbooks, and the focus tasks created when a record enters a stage. Requires the objects:read scope. A workspace that has never saved a journey gets a draft built from its objects, with id: null and status: "draft".
string
Where a phase’s stages come from: own_object, shared_property or journey_tracked.
The relation joining the phase’s object to the anchor. null when the phase reads the anchor itself.
boolean
Won, Lost, Churned: a record leaves the phase at this stage rather than sitting in it.

Retrieve a customer’s journey

GET /v1/records/{id}/journey returns one customer’s path: every stage they passed through across their deals, onboarding and the company record itself, with dates, and where they are now. {id} is a record on the journey’s anchor object, usually a company. Requires the records:read scope.
A customer with two deals has two Sales lanes. A linked record your key’s creator cannot read comes back with hidden: true, recordId: null and the label "Hidden": its dates are kept so time in stage stays right, and its name is not. A stage property hidden from the key’s creator returns no history for that phase. A record that doesn’t exist, or that the key can’t read, is insufficient_permissions. A record that isn’t on the journey’s anchor object is journey_record_not_anchor.

SDK