All templates
State template

Content publishing workflow

Draft to review to scheduled to published, with editorial and legal gates.

Every content team — marketing, product, support, legal — lives with publishing delays. A blog post sits in review, someone forgets to approve, or legal requests changes late. This template shows a state machine for content lifecycle: writers draft and save changes, editors review and approve (or reject with feedback), legal/compliance adds a second gate, content waits in "Scheduled" until publish time, and then goes live. Archived tracks deprecated content. Each state is a decision point where a team member takes an action. Visible bottlenecks — like a piece rejected by legal and cycling back to draft — are now traceable.

The workflow prevents content from going live without approval, coordinates between teams, and enforces timing (scheduled publication at specific dates, not "launch whenever"). It's the difference between a blog that updates once a month (slow reviews, no planning) and one that publishes reliably every Tuesday.

When to use this template

  • Building publishing systems — model the approval gates and state transitions before you wire up Zapier or write backend code so the product, editorial, and legal teams agree on the flow.
  • Compliance documentation — show auditors that published content has gone through editorial and legal review, and that nothing bypasses those gates.
  • Training new team members — walk writers through the states their content will go through, when it needs to be submitted for review, and how to track approval progress.

How to adapt it

Start by mapping your team's actual approval process and adding state-specific rules:

  • Add stakeholders to each state (Draft: writers only, InReview: editors, LegalReview: legal team) to clarify who can edit or approve.
  • Insert an escalation state if content is stuck in review for 2+ days (escalate to manager, flag for urgent review).
  • Add versioning if you publish updates to existing content without re-review (Published → Published: update).

Visual edits regenerate clean Mermaid code, so you can sketch your publishing workflow and export it for your internal wiki or team playbook.

Mermaid code

Copy it anywhere Mermaid is supported — GitHub, Notion, or your docs.

stateDiagram-v2
    [*] --> Draft
    
    Draft --> Draft: Save changes
    Draft --> InReview: Submit for review
    
    InReview --> Draft: Rejected (request changes)
    InReview --> LegalReview: Approved by editor
    
    LegalReview --> InReview: Rejected (compliance issue)
    LegalReview --> Scheduled: Approved by legal
    
    Scheduled --> Scheduled: Reschedule publish date
    Scheduled --> Published: Publish date reached
    Scheduled --> Draft: Pulled from schedule
    
    Published --> Published: Update published content
    Published --> Archived: Deprecated (new version exists)
    
    Archived --> [*]

Frequently asked questions

What is a content publishing workflow diagram?
It shows all the states a piece of content moves through from creation to publication: draft (writers edit), review (editors approve), legal review (compliance check), scheduled (waiting for publish time), published (live), and archived (superseded). Each transition shows who can approve or reject and what happens next. It prevents content from going live without approval and makes bottlenecks visible.
Why separate editor review from legal review?
Editors check for tone, clarity, and brand consistency. Legal/compliance teams check for terms, disclaimers, data-handling statements, and regulatory language. One team approving both slows publishing; splitting them lets both teams work in parallel once the draft is ready. A piece rejected by legal goes back to the editor to add required language.
What does the 'Scheduled' state do?
It's a holding pattern between approval and publication. Content approved and ready can sit in 'Scheduled' waiting for a specific publish date (a product launch, quarterly earnings, a news embargo). A scheduler or cron job publishes the content automatically at the right time. This prevents premature publication and enforces campaign timing.
How do I model urgent/fast-track publishing?
Add an 'Urgent' state or a bypass transition (Draft → Published with restricted approval, email-only). Mark urgent content with a flag and require single-click emergency approval from a senior editor. This keeps the normal flow slow and safe while preserving an escape hatch for breaking news or critical fixes.

Related templates