Back to compare picker

Publish workflow vs Approval workflow vs Review queue vs Draft state vs Review before submit vs Confirmation page vs Activity log vs Conflict state

Choose publish workflow when the user must move content, product data, site changes, configuration, release notes, or campaign material from draft, staged, scheduled, or approved state into a selected public or live target.

Decision dimensions

Dimension Publish workflowApproval workflowReview queueDraft stateReview before submitConfirmation pageActivity logConflict state
UI or UX UI + UX - Workflow for moving edited material to live, staged, scheduled, or retired stateUI + UX - Routed decision workflow for requests that require authorized approvalUI + UX - Actionable queue for triaging many items that need human reviewUI + UX - Unpublished object version lifecycleUI + UX - Final editable answer summary before committing a transactionUI + UX - Final endpoint page after a transaction is completeUI + UX - Searchable and exportable record of system, user, or administrative eventsUI + UX - Competing-version resolution state
UI guidance Render publish workflow as a readiness and release surface with content identity, current status, target destination, affected pages or entries, preview, validation, permission, schedule, publish, unpublish, rollback, and live verification.Render approval workflow as a routed request record with requester, object, requested action, approver eligibility, required rule, current gate, due date, decision controls, comment history, and outcome consequences.Render review queue as an actionable worklist with queue scope, counts, filters, sort order, row reason, owner, priority, age or SLA, status, preview context, selection, and row actions.Label the current version explicitly as Draft, Unpublished changes, Published, Active, Locked, or Unavailable, and place that label near the object title, list row, editor header, and publish actions.Render a single review page immediately before commit with a clear title, grouped answer sections, readable key/value rows, per-answer or per-section Change actions, skipped optional answers when meaningful, and a primary button whose label names the committed action.Render a full page after commit with a prominent completion panel, a page heading that names what finished, a reference or receipt when users need one, and a clear section for what happens next.Render activity logs as evidence-oriented records with event time, actor, action, object, source system, scope, result, and technical context such as IP address or location when available.Show both competing versions near the affected object, field, paragraph, file, row, or branch with source labels such as Your edit, Server version, Mina's edit, Target branch, and Current published value.
UX guidance Use publish workflow when a user is moving content, product data, site changes, configuration, release notes, or campaign material from draft, staged, scheduled, or approved state to a selected live or public target.Use approval workflow when a submitted request cannot proceed until an authorized person, group, threshold, sequence, or external policy gate explicitly approves or rejects it.Use review queue when a team repeatedly processes a changing set of tickets, comments, pull requests, content items, cases, requests, or records that require human inspection and action.Use draft state when users need to pause work on an object, return later, and decide whether to publish, activate, discard, or keep editing an unpublished version.Use review before submit to give users one final chance to verify and correct captured answers before a transaction is sent, paid, published, applied, or otherwise committed.Use a confirmation page when the transaction or service journey has ended and users need durable proof, reassurance, next-step timing, or a record they can bookmark, print, quote, or revisit.Use activity log when users need to investigate, audit, verify, or troubleshoot actions across accounts, objects, systems, settings, or security boundaries.Use conflict state when multiple valid changes overlap and the system needs a human, rule, or review workflow to decide what survives without losing work silently.
Good UI A CMS publish panel shows Draft article, production site, English and French locales, validation complete, preview URL, scheduled time, affected entries, and actions to Publish now, Schedule, or Keep draft.A production deployment request shows requester, service, environment, change summary, required reviewer group, self-review restriction, wait timer, Approve and Reject with reason controls, and a timeline of route changes.A support queue shows New triage, SLA at risk, owner, customer, status, priority, age, preview text, assignment, and next actions without opening every ticket.A knowledge article header says Draft saved today, shows the currently published title, and offers Resume draft, Compare with published, Discard draft, and Publish.A claim review page has Applicant, Contact details, Evidence, and Declaration sections; each row shows the captured answer and a Change link with hidden context such as Change email address.A grant application page says Application complete, shows reference APP-48291, lists what happens next within 5 working days, and offers Save record, Track application, and feedback links.An organization audit log table shows timestamp, actor, action, target object, app, IP address, result, and a Details drawer with before and after fields.A field report says Conflict on supervisor comment, shows Your offline edit from 11:06 beside Server edit by Mina at 11:07, and offers Keep mine, Keep server, and Merge comment.
Bad UI A Publish button sends changes live to every domain with no staging/production target, preview, validation, or affected-page list.A request page says Waiting without naming the approver, required count, due date, or escalation path.A review queue shows a flat list of titles with no reason, age, owner, status, priority, or action controls.An editor opens directly into draft text but the header only says Saved, so users cannot tell whether viewers see the changes.A final page says Check your answers but shows only a paragraph and a Continue button with no answers, section headings, or change links.A submitted application only redirects to a dashboard toast that says Done, with no reference, receipt, or next-step details.A page titled Activity shows vague entries such as Changed settings with no actor, target, timestamp, or source.A save banner says Something went wrong and only offers Retry after another user changed the same field.
Good UX A content editor previews a campaign page, fixes a missing hero image, schedules publication and retirement times, sees the job queued, and later verifies the live URL and scheduled unpublish state.A requester submits a deployment, sees it is waiting for Release managers, cannot self-approve, receives a change request with a required comment, edits the change summary, and resubmits to the same route.A reviewer claims the oldest SLA-at-risk ticket, opens a preview, assigns it to Billing, returns to the queue with the row removed, and lands on the next oldest item.A user opens a published article that has an unpublished version, chooses Resume draft, reviews a change summary, publishes, and sees the page become visible to viewers.A user changes their phone number from review, lands on the phone page with the old value pre-filled, saves, and returns directly to review with other answers preserved.A user copies the reference, saves the receipt, follows Track application, and later returns from a bookmark to the same confirmation details or a helpful tracking fallback.An admin filters to failed SSO events, expands one entry, copies the event ID, exports the filtered range, and sees that records older than 180 days require a different archive.A user tries to sync an offline field report, reviews only the two changed fields, merges one comment, keeps the server contact number, and commits a resolved version.
Bad UX A user clicks Save and assumes the page is live because the interface uses Save, Submit, Schedule, and Publish interchangeably.The first approver clicks Approve and the system marks the whole request approved even though policy required everyone to approve.Two reviewers open the same unclaimed item, both act, and the second decision overwrites the first with no stale-row warning.A user closes an editor after seeing Saved, later discovers the page was never published, and cannot find the draft in the content list.A user selects Change address, edits one field, then has to repeat every later page before finding the review page again.A user closes the page after seeing a transient message and later cannot prove the payment or application happened.A user marks a notification read and the corresponding activity evidence disappears from the only log.The app silently keeps the newest server value and deletes the user's local note.
Best fit Users need to make content, products, pages, releases, site changes, campaigns, or configuration visible to an audience.A submitted request needs authorized approval before a deployment, purchase, access grant, publication, content change, policy exception, financial action, or workflow step can proceed.A team or individual repeatedly reviews many independently queued items.Users create or edit objects that should not become visible, active, submitted, or externally effective until a later action.A user has provided multiple answers and should verify them before a consequential submit action.A transaction or service journey has ended and users need durable proof plus next-step information.Users need to inspect recorded user, admin, system, security, or integration events.Concurrent users, devices, branches, or background jobs changed the same object or location.
Avoid when The user is only saving unfinished work.The user only needs to check their own answers before submission.The task is a single request moving through a governed approval route.The change is a small one-field edit that should be saved or canceled immediately.The task is a single low-risk field with clear inline validation and an obvious submit action.The user remains inside an ongoing task and only needs local proof near the changed object.The goal is only to show a readable milestone history for one case or process.Only one operation failed and there is no competing valid version.
Required state Draft or edited but unpublished stateDraft or submit-ready request handoff stateQueue loading and count statePublished or active state with no draft.Initial review state with grouped captured answers, relevant sections, and explicit submit action.Submitted state immediately after authoritative commit routes to the confirmation page.Default log state with event records, result count, visible timezone, retention window, and permission scope.No conflict state after automatic safe merge.
Accessibility burden Use labelled controls for status, target, preview, schedule date and time, timezone, validation, publish, unpublish, rollback, and live URL.Use labelled request summary, approver, status, due date, decision, comment, and history regions.Use labelled queue name, count, filters, sort, group, row status, selection, preview, and action controls.Expose Draft, Published, Unpublished changes, Locked, and Unavailable as text in the page title area and list rows, not only by color or icon.Use headings that make the review task explicit, such as Check your answers before sending your application.Use one clear page H1 or panel title that communicates completion without relying on green color alone.Use table or structured list semantics so actor, action, object, timestamp, result, and scope are perceivable together.Use headings and text labels to name each side of the conflict; do not rely only on red/green diff colors.
Common misuse Using Save, Submit, Schedule, and Publish interchangeably.Showing a generic pending message without the approver, gate, rule, or due date.Using an ordinary table with no review reason, urgency, ownership, or decision actions.Using Saved to mean both saved draft and published content.Using a review page that contains no captured answers.Showing a toast or local success strip as the only proof of a completed transaction.Calling a social feed or notification drawer an activity log without event evidence.Treating a conflict as a simple retryable save error.

Publish workflow

UI or UX
UI + UX - Workflow for moving edited material to live, staged, scheduled, or retired state
UI guidance
Render publish workflow as a readiness and release surface with content identity, current status, target destination, affected pages or entries, preview, validation, permission, schedule, publish, unpublish, rollback, and live verification.
UX guidance
Use publish workflow when a user is moving content, product data, site changes, configuration, release notes, or campaign material from draft, staged, scheduled, or approved state to a selected live or public target.
Good UI
A CMS publish panel shows Draft article, production site, English and French locales, validation complete, preview URL, scheduled time, affected entries, and actions to Publish now, Schedule, or Keep draft.
Bad UI
A Publish button sends changes live to every domain with no staging/production target, preview, validation, or affected-page list.
Good UX
A content editor previews a campaign page, fixes a missing hero image, schedules publication and retirement times, sees the job queued, and later verifies the live URL and scheduled unpublish state.
Bad UX
A user clicks Save and assumes the page is live because the interface uses Save, Submit, Schedule, and Publish interchangeably.
Best fit
Users need to make content, products, pages, releases, site changes, campaigns, or configuration visible to an audience.
Avoid when
The user is only saving unfinished work.
Required state
Draft or edited but unpublished state
Accessibility burden
Use labelled controls for status, target, preview, schedule date and time, timezone, validation, publish, unpublish, rollback, and live URL.
Common misuse
Using Save, Submit, Schedule, and Publish interchangeably.

Approval workflow

UI or UX
UI + UX - Routed decision workflow for requests that require authorized approval
UI guidance
Render approval workflow as a routed request record with requester, object, requested action, approver eligibility, required rule, current gate, due date, decision controls, comment history, and outcome consequences.
UX guidance
Use approval workflow when a submitted request cannot proceed until an authorized person, group, threshold, sequence, or external policy gate explicitly approves or rejects it.
Good UI
A production deployment request shows requester, service, environment, change summary, required reviewer group, self-review restriction, wait timer, Approve and Reject with reason controls, and a timeline of route changes.
Bad UI
A request page says Waiting without naming the approver, required count, due date, or escalation path.
Good UX
A requester submits a deployment, sees it is waiting for Release managers, cannot self-approve, receives a change request with a required comment, edits the change summary, and resubmits to the same route.
Bad UX
The first approver clicks Approve and the system marks the whole request approved even though policy required everyone to approve.
Best fit
A submitted request needs authorized approval before a deployment, purchase, access grant, publication, content change, policy exception, financial action, or workflow step can proceed.
Avoid when
The user only needs to check their own answers before submission.
Required state
Draft or submit-ready request handoff state
Accessibility burden
Use labelled request summary, approver, status, due date, decision, comment, and history regions.
Common misuse
Showing a generic pending message without the approver, gate, rule, or due date.

Review queue

UI or UX
UI + UX - Actionable queue for triaging many items that need human review
UI guidance
Render review queue as an actionable worklist with queue scope, counts, filters, sort order, row reason, owner, priority, age or SLA, status, preview context, selection, and row actions.
UX guidance
Use review queue when a team repeatedly processes a changing set of tickets, comments, pull requests, content items, cases, requests, or records that require human inspection and action.
Good UI
A support queue shows New triage, SLA at risk, owner, customer, status, priority, age, preview text, assignment, and next actions without opening every ticket.
Bad UI
A review queue shows a flat list of titles with no reason, age, owner, status, priority, or action controls.
Good UX
A reviewer claims the oldest SLA-at-risk ticket, opens a preview, assigns it to Billing, returns to the queue with the row removed, and lands on the next oldest item.
Bad UX
Two reviewers open the same unclaimed item, both act, and the second decision overwrites the first with no stale-row warning.
Best fit
A team or individual repeatedly reviews many independently queued items.
Avoid when
The task is a single request moving through a governed approval route.
Required state
Queue loading and count state
Accessibility burden
Use labelled queue name, count, filters, sort, group, row status, selection, preview, and action controls.
Common misuse
Using an ordinary table with no review reason, urgency, ownership, or decision actions.

Draft state

UI or UX
UI + UX - Unpublished object version lifecycle
UI guidance
Label the current version explicitly as Draft, Unpublished changes, Published, Active, Locked, or Unavailable, and place that label near the object title, list row, editor header, and publish actions.
UX guidance
Use draft state when users need to pause work on an object, return later, and decide whether to publish, activate, discard, or keep editing an unpublished version.
Good UI
A knowledge article header says Draft saved today, shows the currently published title, and offers Resume draft, Compare with published, Discard draft, and Publish.
Bad UI
An editor opens directly into draft text but the header only says Saved, so users cannot tell whether viewers see the changes.
Good UX
A user opens a published article that has an unpublished version, chooses Resume draft, reviews a change summary, publishes, and sees the page become visible to viewers.
Bad UX
A user closes an editor after seeing Saved, later discovers the page was never published, and cannot find the draft in the content list.
Best fit
Users create or edit objects that should not become visible, active, submitted, or externally effective until a later action.
Avoid when
The change is a small one-field edit that should be saved or canceled immediately.
Required state
Published or active state with no draft.
Accessibility burden
Expose Draft, Published, Unpublished changes, Locked, and Unavailable as text in the page title area and list rows, not only by color or icon.
Common misuse
Using Saved to mean both saved draft and published content.

Review before submit

UI or UX
UI + UX - Final editable answer summary before committing a transaction
UI guidance
Render a single review page immediately before commit with a clear title, grouped answer sections, readable key/value rows, per-answer or per-section Change actions, skipped optional answers when meaningful, and a primary button whose label names the committed action.
UX guidance
Use review before submit to give users one final chance to verify and correct captured answers before a transaction is sent, paid, published, applied, or otherwise committed.
Good UI
A claim review page has Applicant, Contact details, Evidence, and Declaration sections; each row shows the captured answer and a Change link with hidden context such as Change email address.
Bad UI
A final page says Check your answers but shows only a paragraph and a Continue button with no answers, section headings, or change links.
Good UX
A user changes their phone number from review, lands on the phone page with the old value pre-filled, saves, and returns directly to review with other answers preserved.
Bad UX
A user selects Change address, edits one field, then has to repeat every later page before finding the review page again.
Best fit
A user has provided multiple answers and should verify them before a consequential submit action.
Avoid when
The task is a single low-risk field with clear inline validation and an obvious submit action.
Required state
Initial review state with grouped captured answers, relevant sections, and explicit submit action.
Accessibility burden
Use headings that make the review task explicit, such as Check your answers before sending your application.
Common misuse
Using a review page that contains no captured answers.

Confirmation page

UI or UX
UI + UX - Final endpoint page after a transaction is complete
UI guidance
Render a full page after commit with a prominent completion panel, a page heading that names what finished, a reference or receipt when users need one, and a clear section for what happens next.
UX guidance
Use a confirmation page when the transaction or service journey has ended and users need durable proof, reassurance, next-step timing, or a record they can bookmark, print, quote, or revisit.
Good UI
A grant application page says Application complete, shows reference APP-48291, lists what happens next within 5 working days, and offers Save record, Track application, and feedback links.
Bad UI
A submitted application only redirects to a dashboard toast that says Done, with no reference, receipt, or next-step details.
Good UX
A user copies the reference, saves the receipt, follows Track application, and later returns from a bookmark to the same confirmation details or a helpful tracking fallback.
Bad UX
A user closes the page after seeing a transient message and later cannot prove the payment or application happened.
Best fit
A transaction or service journey has ended and users need durable proof plus next-step information.
Avoid when
The user remains inside an ongoing task and only needs local proof near the changed object.
Required state
Submitted state immediately after authoritative commit routes to the confirmation page.
Accessibility burden
Use one clear page H1 or panel title that communicates completion without relying on green color alone.
Common misuse
Showing a toast or local success strip as the only proof of a completed transaction.

Activity log

UI or UX
UI + UX - Searchable and exportable record of system, user, or administrative events
UI guidance
Render activity logs as evidence-oriented records with event time, actor, action, object, source system, scope, result, and technical context such as IP address or location when available.
UX guidance
Use activity log when users need to investigate, audit, verify, or troubleshoot actions across accounts, objects, systems, settings, or security boundaries.
Good UI
An organization audit log table shows timestamp, actor, action, target object, app, IP address, result, and a Details drawer with before and after fields.
Bad UI
A page titled Activity shows vague entries such as Changed settings with no actor, target, timestamp, or source.
Good UX
An admin filters to failed SSO events, expands one entry, copies the event ID, exports the filtered range, and sees that records older than 180 days require a different archive.
Bad UX
A user marks a notification read and the corresponding activity evidence disappears from the only log.
Best fit
Users need to inspect recorded user, admin, system, security, or integration events.
Avoid when
The goal is only to show a readable milestone history for one case or process.
Required state
Default log state with event records, result count, visible timezone, retention window, and permission scope.
Accessibility burden
Use table or structured list semantics so actor, action, object, timestamp, result, and scope are perceivable together.
Common misuse
Calling a social feed or notification drawer an activity log without event evidence.

Conflict state

UI or UX
UI + UX - Competing-version resolution state
UI guidance
Show both competing versions near the affected object, field, paragraph, file, row, or branch with source labels such as Your edit, Server version, Mina's edit, Target branch, and Current published value.
UX guidance
Use conflict state when multiple valid changes overlap and the system needs a human, rule, or review workflow to decide what survives without losing work silently.
Good UI
A field report says Conflict on supervisor comment, shows Your offline edit from 11:06 beside Server edit by Mina at 11:07, and offers Keep mine, Keep server, and Merge comment.
Bad UI
A save banner says Something went wrong and only offers Retry after another user changed the same field.
Good UX
A user tries to sync an offline field report, reviews only the two changed fields, merges one comment, keeps the server contact number, and commits a resolved version.
Bad UX
The app silently keeps the newest server value and deletes the user's local note.
Best fit
Concurrent users, devices, branches, or background jobs changed the same object or location.
Avoid when
Only one operation failed and there is no competing valid version.
Required state
No conflict state after automatic safe merge.
Accessibility burden
Use headings and text labels to name each side of the conflict; do not rely only on red/green diff colors.
Common misuse
Treating a conflict as a simple retryable save error.
Decision rules
  • Choose publish workflow when the user must move content, product data, site changes, configuration, release notes, or campaign material from draft, staged, scheduled, or approved state into a selected public or live target.
  • Choose approval workflow when the main job is routing one request through authorized approvers before publication can happen.
  • Choose review queue when reviewers process many independent items that may later be published, rejected, escalated, or assigned.
  • Choose draft state when the item is saved but unfinished; draft state becomes publish workflow only when the interface manages readiness, target, preview, schedule, publish, unpublish, or live verification.
  • Choose review before submit when the publisher needs a final editable check of captured fields before creating a publish or schedule action.
  • Choose confirmation page after a publish or schedule action succeeds, especially when the live URL, scheduled time, affected channel, or next step must be retained.
  • Use activity log to show past publish, unpublish, schedule, rollback, and failed validation events; it is not the primary control surface for the next publish.
  • Use conflict state when the publish action is blocked by newer edits, unsaved changes, invalid content, missing channel data, or a live-version mismatch.
  • Publish workflow must show readiness checks, preview target, live or staging destination, affected entries or pages, schedule, permission, side effects, irreversible visibility, and post-publish verification.
  • Scheduled publishing must distinguish scheduled, rescheduled, canceled, missed, failed validation, published, and retired or unpublished states.
Inspect live examples
Failure modes
  • A publish button sends changes live without showing whether the target is staging, production, one page, whole site, one channel, or all channels.
  • A scheduled publish accepts invalid content and only fails silently at launch time.
  • Users cannot tell whether a successful action made the item live, scheduled it, submitted it for approval, or only saved a draft.
  • A product publishes to all sales channels because channel selection was hidden.
  • A live page is overwritten by stale edits because the workflow did not detect a newer version.
  • Unpublish or rollback controls are absent after a bad release.
  • A publish confirmation lacks the live URL, target, time, affected entries, or audit reference.