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”.
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:
The actor on both is the calling API key’s name. Nothing in your code needs to do anything extra to get audit coverage.
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.
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.
before_getting_started → launch reads as “this onboarding launched in 4 days” in dashboards.completed for anything else. It’s the terminal phase. Use state: "paused" to retract a launch, or DELETE to soft-delete a wrong record.phase on a soft-deleted onboarding. You’ll get 404 onboarding_not_found.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”.
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.