Publishr for Craft CMS

Stages and assignments

A stage is not a status

Craft already has a status — live, pending, expired, disabled — and it is derived in SQL from enabled and the dates. There is no seam to extend it, and anything that tried would be fighting every element query on the site.

So Publishr runs a second, parallel axis. Craft answers "is this public". Publishr answers "where is this in the process". The pair is the truth, and the useful consequence is that Publishr cannot break your front end: turn the plugin off and every entry is exactly as public as it was.

The two axes touch in exactly one place — the published stage — and that is set by Alarm Clock noticing a piece actually went live, not by somebody remembering to drag a card.

The five you start with

StageWhat it means
IdeaCommissioned or suggested. Nobody is writing it yet. (where new work starts)
In progressBeing written right now.
Needs editWritten, waiting on an editor.
ReadySigned off. Waiting on its post date. (gated)
PublishedLive. Moved here automatically. (the published stage)

Rename them, recolour them, reorder them, replace them. "Ready" is gated by default because it is the stage that means an editor has signed this off, which is exactly the moment a checklist is worth having.

The three flags

Where new work starts. One stage, and it is where a piece lands the first time Publishr takes an interest in it.

This is the published stage. One stage. Pieces are moved here automatically when they go live — by Alarm Clock within a minute, or by the sweep. Setting it on a second stage clears the first; two stages both claiming to be "published" is not a state anybody means.

Check publish requirements before anything moves here. Turns the stage into a sign-off gate. See Publish requirements.

Deleting a stage

Pieces sitting on a deleted stage keep their history and lose their position. They read as untracked, which is honest — sweeping them onto another stage would rewrite a decision somebody made, and the history would then disagree with the column.

The last stage cannot be deleted. Work needs somewhere to sit.

The stage cap

Publishr Lite holds five stages — exactly the ones the installer creates. So Lite has a working workflow it can rename, recolour and reorder; what it cannot do is model an eleven-step approval chain, which is the shape of organisation buying governance software anyway.

The cap is a downgrade, not a deletion. A site whose licence lapses keeps every stage it has and every piece on them. What Lite stops is creating the sixth.

Assignments

Who owns this piece now. Deliberately separate from the entry's author: the person who wrote it in March is rarely the person fixing it in October, and a calendar that conflates the two cannot show anybody their actual workload.

An assignee is in the audience for everything that happens to their piece without ever subscribing to anything. That is not a subscription, it is the job.

Assigning needs the Assign work to other people permission. Setting a deadline needs Move work between stages and set deadlines.

Deadlines

When the work is due — deliberately not the post date, which is when the work goes out. On most desks those are days apart, and a calendar that only knows the second one is a calendar the writers ignore.

Days are counted at whole-day granularity in the site's time zone, so "due tomorrow" means tomorrow's date. A deadline at nine tomorrow morning does not read as "0 days" all afternoon today.

A piece that reaches the published stage has met its deadline, and Publishr clears it — leaving it set would make a finished piece read as overdue forever. That can be switched off in Settings → General.

History

Every stage move, assignment, deadline change, review and override is written as its own row at the moment it happens, and it is never edited.

A stageId column records where a piece is. It cannot record who moved it there, when, or what it was before — and "who signed this off, and when" is precisely the question a governance tool exists to answer. It cannot be reconstructed from dateUpdated afterwards, so it is written down at the time.

See it per piece in the entry sidebar, or site-wide at Publishr → Overview → Activity.