Workflows
Statuses, transitions and roles that every document change is checked against.
On this page
A workflow is the set of statuses a document type moves through and the rules for moving between them. An organisation defines it once per document type, and the platform checks every status change against it: who may make the move, whether it publishes, and whether an AI step runs on the way.
A workflow is a list of statuses plus a list of transitions. One transition looks like this:
{
"from": "ready",
"to": "usable",
"title": "Publish",
"requiredRoles": ["publisher"],
"bumpsVersion": false
}
A member holding the publisher role sees Publish in the status
menu of a document at ready. Taking it moves the document to
usable, which publishes it.
Reserved statuses
Four status names mean the same thing in every workflow. Custom statuses cannot take these names.
| Status | Read-only | Signed snapshot | Meaning |
|---|---|---|---|
draft |
no | no | Entry status. Required in every workflow. |
usable |
yes | yes | Published. |
withheld |
yes | yes | Embargoed or scheduled; signed but held back. |
cancelled |
yes | no | Withdrawn. Kept, and can be reopened. |
Arriving at usable or withheld produces a signed, immutable
snapshot of the document, which is what webhooks deliver and what
receivers verify. See Signatures.
Custom statuses, such as ready or in-review, can sit anywhere in
the workflow. They are always editable and never produce a snapshot.
Each status can also carry a title, description, icon and colour for
display.
Anatomy of a transition
fromandto: the two statuses. Both must be declared in the same workflow.title: the label in the document's status menu. Use a verb, such as Publish or Send back to draft.requiredRoles: who may take it, as described under Roles below.bumpsVersion: increments the document's version. Required on any transition from a read-only status to an editable one, so that reopening a published document starts a new version.ai: optional. Runs an AI operation as part of the transition.confirm: optional. Asks the member to confirm before the transition happens, with an optional custom title, text, button label and a destructive style. Useful for cancellation.
The exact shape of a workflow document is in the document reference.
Roles
A transition lists the roles allowed to take it. The roles are the
organisation's membership roles, owner, admin, publisher and
editor, held in the organisation the document belongs to.
A member may take a transition when they hold any listed role.
Matching is literal: a member holding only admin does not satisfy
a transition that lists only publisher, so list every role that
should qualify. A transition with no roles is open to every member.
Roles decide who may take a transition, not who can see a document. Organisation isolation is a separate, earlier check. See Security.
Which workflow a document follows
A workflow is itself a document. Members with the owner or admin
role create and edit workflows in the Workflows view: from
blank, from a template, or by importing JSON. Templates include a
simple newsroom, an advanced newsroom and a newswire intake flow.
A workflow at usable that is marked Default for this type is
the one new documents of that type follow. There is at most one
default per document type. A workflow at draft or cancelled is
not used for new documents.
A document is bound to its workflow when it is created, and keeps that binding, even if another workflow later becomes the default. The binding points at the live workflow, not a copy, so every transition is checked against the workflow's current definition.
With no default workflow for a type, the platform supplies one:
- Planning items: Draft, Ready and Cancelled, where Ready is
usable. - Every other type:
draft,usable(titled Published) andcancelled.
A document whose workflow no longer exists falls back to the
draft, usable, cancelled workflow.
Editing a workflow in use
A workflow can be edited at any status, usable included. An edit
applies at once to every document bound to it.
- Labels, descriptions, icons and colours can change at any time.
- Adding a status or transition makes it available on every bound document.
- Removing a transition removes that move everywhere. A request for it from a menu opened before the edit is refused.
- Renaming or removing a status is refused while any document sits at it. The editor shows how many documents sit at each status, so move them first.
- Default for this type can be switched at any time. It only affects new documents.
Cancelling a workflow, or moving it back to draft, stops new
documents from binding to it. Documents already bound keep following
its current definition.
AI-bound transitions
A transition with an ai block runs an AI operation when a member
takes it. The document stays at its current status, locked and
marked as working, until the operation returns. On success the
operation writes its results and the document moves to the
transition's to status. On a permanent failure caused by the
content, the document moves to the transition's On failure
status if one is set; otherwise it stays where it was, with the
error visible. See AI integrations and
Adding AI to a workflow.
An AI-bound transition whose to is usable or withheld publishes
the AI's answer with no person reviewing it. Such a transition is
allowed only when the organisation turns on AI publishing without
review in its settings, which is off by default:
- Off: a workflow holding such a transition is not saved, and the transition is refused if it runs.
- On: a document published this way carries
meta.publishedWithoutReviewin its signed snapshot, keeps its AI label on, and the public site discloses it. The mark is cleared when a member next moves the document intousableorwithheld; moves by the platform leave it.
Transitions into usable or withheld that run no AI, such as
publishing newswires on arrival, are not affected. See Publishing
without review.
Recipes
A minimal editorial flow
draft --(Submit, editor)--> ready
ready --(Publish, publisher)--> usable
usable --(Unpublish, publisher)--> cancelled
cancelled --(Reopen, publisher, bumpsVersion)--> draft
An embargo step
draft --(Submit, editor)--> ready
ready --(Schedule, publisher)--> withheld
withheld --(Release, publisher)--> usable
withheld --(Pull, publisher)--> cancelled
Release from withheld to usable needs no bumpsVersion: both
statuses are read-only, so the document has not changed in between.
AI translation
Add a custom translated status, an AI operation that translates,
and a transition from draft to translated bound to that
operation. Adding AI to a workflow
walks through it.
Limits
- Every workflow must include
draft, anddraftcan be neither renamed nor removed. - The document type a workflow applies to is fixed when the workflow is created.
- A status still used by a transition cannot be removed until the transition is removed.
- If a status disappears while documents sit at it, for example because the editor could not load the counts, those documents keep the status name with no way out. They stay there until a status of that name with an outgoing transition is added back.
- A document's workflow binding cannot be changed.
- An AI-bound transition into
usableorwithheldis refused unless the organisation allows AI publishing without review.