Onboarding phases
An onboarding’s phase represents where the engagement sits in the Pivotal workflow. The full enum, in order:
The state field is separate and tracks engagement health: active, paused, at_risk, waiting. A phase is “where we are”; a state is “is anything blocking”.
The phase transition flow
PATCH /onboardings/{id} changes one or many fields at once. Phase transitions are the most common pattern:
Every phase change writes two records on the Pivotal side:
- A timeline event on the underlying customer — surfaces on the customer page.
- A phase transition row — feeds the SLA reports inside Pivotal.
The actor on both is the calling API key’s name. Nothing in your code needs to do anything extra to get audit coverage.
Driving an onboarding end to end
Here’s a script that walks an onboarding through every phase, pausing briefly between steps:
Run it on a test onboarding. Refresh the customer page in Pivotal — the timeline shows each transition.
Combining phase + state
When an onboarding stalls, set state to paused, at_risk, or waiting without changing the phase:
When it un-sticks, set state back to active:
Separating “where we are” from “is anything wrong” keeps the phase progression clean and the SLA reporting honest.
The waiting state is special: combined with waiting_on_customer: true, it tells Pivotal a customer task is blocking, which suspends the SLA clock until the state flips back.
What you shouldn’t do
- Don’t skip phases for cosmetics. Pivotal computes phase-duration metrics — jumping
before_getting_started→launchreads as “this onboarding launched in 4 days” in dashboards. - Don’t reuse
completedfor anything else. It’s the terminal phase. Usestate: "paused"to retract a launch, orDELETEto soft-delete a wrong record. - Don’t PATCH
phaseon a soft-deleted onboarding. You’ll get404 onboarding_not_found.
Querying by phase
GET /onboardings?phase=launch filters by phase. Combine with state:
Combined with cursor pagination (Pagination), this is enough to build a dashboard that polls “what’s in launch this week”.
Hooking into Pivotal automations
When phase flips to launch, Pivotal fires its built-in launch-day automations: a Slack DM to the assigned CSM, a launch entry in the customer calendar, and (if the workspace has it enabled) an auto-drafted launch-recap email. These run inside Pivotal regardless of whether the phase change came from the UI or the API.
If you want to suppress those — say, you’re backfilling historical onboardings — make the calls with a test key (pivotal_test_…). See Test mode.