A Practical Draft and Review Workflow for Strapi
Separate writing status, review decisions, preview visibility, and public publication in a Strapi workflow.
Strapi's Draft & Publish feature separates a draft version from the live version. I add an editorial status because "saved as a draft" does not say whether a writer is working, a reviewer has approved it, or publication is scheduled.
The Strapi Draft & Publish documentation documents Draft, Modified, and Published states. I use those platform states for public visibility and a small editorial workflow for responsibility.
Define editorial states
My basic states are idea, drafting, ready for review, changes requested, approved, and archived. Only an approved record can move to publication. The state names identify the next owner rather than describing how complete the writer feels.
I keep this field distinct from Strapi's reserved publication status. In Strapi 5, a content type with Draft & Publish cannot use status as a custom attribute, so I choose a name such as contentStatus.
Require a reviewable record
A reviewer needs the body, unique metadata, canonical target, internal links, source notes, and image plan. I block the handoff when required fields are blank. The writer includes questions or disputed claims in a review note instead of hiding them in the copy.
Relations also need review. Publishing an article linked to an unpublished category or author may omit expected API data.
Protect previews
A preview route fetches the draft with an authorized server request. It does not expose a public token in browser code. This site's local review route uses noindex,nofollow,noarchive, stays out of the sitemap, and is disabled in production. A deployed CMS preview should likewise require authenticated or signed access.
I test the preview as a reviewer and the public route as an anonymous visitor. Draft content should not leak through a broad public API permission.
Record the reviewer decision
The approval record names the reviewer, time, reviewed version, and any conditions. A later edit returns the content to review unless the team has defined fields that may change without another approval.
Strapi's Modified state shows that the draft differs from the published version. I use that signal to prevent an old approval from covering new copy.
Publish and verify
Publishing updates the public record, but the frontend may still cache the old response. I trigger the documented revalidation path, then fetch the article, category, sitemap, and structured data. The publication record stores the observed result.
If verification fails, I can unpublish or restore the prior content according to the rollback procedure. The editor sees the failure rather than a misleading success toast.
Keep the queue visible
A dashboard groups items by owner and state. I limit simultaneous drafts so review does not become a pile of stale work. Scheduled releases include timezone and cancellation checks.
- Editorial and publication states stay separate.
- Previews require server-side authorization.
- Approvals identify the reviewed version.
- Publishing triggers live verification.
- Failed releases remain visible.
Need help with Strapi?
Terry Hunt Dev builds editorial controls and previews through Strapi development services. Use the contact page to describe your current roles, review states, and publication failures.