UX Encyclopedia

Content Flow

A content flow maps the lifecycle of a content item — create → draft → review → approve → publish → update → version → archive/delete — plus who may move it between steps and what every audience sees at each one. It is the editorial cousin of the multi-user flow: the actors collaborate ON an artifact, and the artifact itself carries the state.

The key insight: each content item IS a state flow (State Flow). "Draft," "In review," "Published," "Archived" are states; "submit," "approve," "schedule," "roll back" are events; the rules about who may fire which event are the permission matrix (Permission Flow) attached to the machine. Model it that way and impossible situations (editing a published page with no draft copy, deleting content that's mid-review) become visibly impossible.

Where content flows matter

CMS and publishing platforms, documentation and knowledge bases, education (courses, lessons, assessments), marketing sites (campaign pages with legal review), e-commerce catalogs (product copy), app-store/localized release notes — anywhere content outlives the person who wrote it and more than one pair of hands touches it.

What it answers

  • What states can an item be in, and what event moves it forward, backward, or out?
  • Who owns each step (see roles below), and what does everyone else see — is a draft visible to other editors? Is "in review" locked?
  • What does the PUBLIC see during internal churn? (Old version stays live while the new draft cooks — or does editing take the page down? That decision is the whole flow.)
  • How do updates, versions, rollbacks, translations, and deletions interact with the live item?

Ownership and roles along the lifecycle

Typical mapping (convention — name your own roles in the matrix):

  • Create/draft — author owns it; visible to author (+ optionally team); freely editable, auto-saved, never lost (Error Flow: losing a draft is the CMS's worst failure).
  • Review — reviewer owns the decision; author's editing locked or branched; reviewer needs a queue and the author needs status ("waiting on Sam since Tue") — the waiting-state rules from Multi-User Flow apply verbatim.
  • Approve/publish — approver/admin owns it; publishing may be immediate or scheduled; the author often may NOT publish (the separation is the point in regulated/branded content).
  • Update — editor owns a NEW draft of a LIVE page: two versions of one item exist at once (live + working copy). Flows that miss this fork force teams to edit production directly.
  • Version/rollback — every publish snapshots; rollback is publish-a-previous-version, subject to the same approval rules.
  • Archive/delete — archive (hidden, restorable, links redirect) before delete (gone); deletion of referenced content must warn about the pages that link to it.

Example — article lifecycle

Create Article ──▶ Save Draft (auto-save; author-owned)
   └─ author leaves ──▶ draft persists; "resume draft" surfaced
Submit for Review ──▶ In Review (locked for author;
   │                   reviewer notified + queued)
   ├─ Approve ──▶ Ready to Publish
   │     ├─ Publish now ──▶ PUBLISHED (v1 snapshot)
   │     └─ Schedule ──▶ Scheduled (visible countdown; cancellable)
   │           ├─ time reached ──▶ PUBLISHED
   │           └─ publish job fails ──▶ alert owner + retry;
   │                 page does NOT half-publish
   ├─ Request Changes ──▶ back to Draft, WITH the reviewer's
   │     comments attached ──▶ revise ──▶ Submit (bounded loop;
   │     round 3 escalates to editor-in-chief)
   └─ Reviewer silent 5 days ──▶ reminder ──▶ reassign
PUBLISHED ──▶ Update ──▶ Working Copy (live v1 stays up)
   │            └─ same review loop ──▶ Publish ──▶ v2 (v1 kept)
   ├─ Error found in v2 ──▶ Roll back ──▶ v1 live again (v2 kept
   │     as a version, not destroyed)
   ├─ Localize ──▶ per-locale copies, each with its OWN state
   │     (en published / de in review); source updates flag
   │     translations stale, never auto-overwrite them
   │     (Internationalization & Localization)
   └─ Archive ──▶ unpublished, redirects in place, restorable
         └─ Delete ──▶ warn: "12 pages link here" ──▶ confirm
               (typed title for high-stakes) ──▶ gone

Failure branches to note: silent reviewers, failed scheduled publishes, bounded change-request loops, rollback that preserves the rolled-back version, and delete that warns about inbound links.

Scheduled publishing, rollback, localization — the three branches teams forget

  • Scheduling decouples approval from release: state = Scheduled, with visible time, cancel/edit rights defined, and a designed failure alert (a silently failed 9 a.m. launch is a business incident). Embargoes and timezone display deserve explicit copy.
  • Rollback is the content team's undo — cheap, fast, and safer than panic-editing production; it exists only if publishing snapshots versions by default.
  • Localization multiplies the machine: each locale copy runs its own lifecycle, tied to the source by a "stale when source changes" flag. Map who owns translations and what readers of a stale locale see (old translation + notice beats machine-overwritten text).

Common mistakes

  • Only two states, edit and live — every save is a publish, every typo fix a production incident.
  • Review with no "request changes" route (approve-or-limbo).
  • Updates that unpublish the live page while editing.
  • Delete without archive, or archive without redirects (link rot as a designed outcome).
  • No stale-translation mechanism — locales drift silently for years.
  • Publishing permissions enforced in the CMS UI only (the API publishes anything — see Permission Flow's last checklist item).

Checklist

  • The lifecycle is drawn as a state machine: named states, named events, no undefined transitions (State Flow).
  • Role × event matrix: who can submit, approve, publish, roll back, delete (Permission Flow verbs for the rest).
  • Live version stays live while updates draft; two-version fork designed.
  • Review loop is bounded, comment-carrying, and reminder/ escalation-backed (Multi-User Flow).
  • Every publish snapshots; rollback is one action and itself versioned.
  • Scheduled publish shows its time, is cancellable, and alerts on failure.
  • Archive precedes delete; deletes warn about inbound references.
  • Localized copies have independent states + stale flags.
  • Drafts auto-save and survive crashes, logouts, and role changes.

Sources

  • Halvorson, K. & Rach, M. (2012). Content Strategy for the Web, 2nd ed. New Riders — content lifecycle, ownership, and governance.
  • Harel, D. (1987). "Statecharts: a visual formalism for complex systems." Science of Computer Programming, 8(3), 231–274 — the formal model each content item instantiates (via State Flow).
  • Draft/review/publish workflow structure as implemented across major CMS platforms is industry convention; role names and step order vary by product — labeled as convention, not a cited standard.
↑↓ to navigate · Enter to open · Esc to close