Birim
Approvals: nothing goes live until the right people say yes

Birim Approvals

Nothing goes live until the right people approve that exact version, including clients and legal reviewers who have no WordPress account. Every decision is recorded.

Why

Today, clients approve drafts by email and someone publishes by hand. WordPress's "Pending Review" doesn't say who must approve, doesn't remember what they approved, and anyone who can publish can skip it.

All approvals in: ready to publish

On a phone, the client's review page looks like this:

Client review page on a phone

Who this is for: site owners setting it up, writers asking for approval, and the people who approve (team members and clients).

The people

PersonTypical roleWhat they do
Site ownerAdministratorTurns approvals on, chooses defaults, can override with a reason, reads the log
WriterAuthor or EditorWrites the draft, names approvers, publishes once approved
Team approverEditor, or any role (even Subscriber)Approves or requests changes in WordPress
Outside approverNo account (client, legal, compliance)Approves through a personal link or a shared link with an email code

Flow 1: set up (site owner, once)

  1. Activate Birim Approvals. Nothing changes yet.
  2. Settings > Approvals: tick the content that needs approval (for example Posts and Pages; Media files for deliverables).
  3. Optional: default approvers per type (usernames or emails) and the rule (all must approve / any one is enough).
  4. Optional (WordPress 6.9+): "All Notes must be resolved".
  5. Optional: link expiry (default 7 days) and how long IP addresses are kept in the log (default 12 months).

Flow 2: get a post approved (writer)

  1. Write the draft and save it. Approvers review the saved version.
  2. In the Approvals box (editor sidebar): type approvers, for example priya, lee, client@acme.com. Usernames become team approvers; emails without an account become outside approvers who get a personal link.
  3. Choose the rule and click Request approval. Everyone is emailed.
  4. Watch the box: each approver shows waiting, opened, approved, requested changes (with their comment) or decided on an older version.
  5. If someone requests changes: edit, save. Earlier decisions stop counting and approvers are asked again automatically.
  6. When the box says Approved — ready to publish, click Publish. Trying earlier shows "Publishing failed. This post needs approval…" and the post stays a draft.

Flow 3: approve as a team member

  1. You get an email, and Dashboard > Approvals shows a count.
  2. Open Preview to read the draft (works even if your role cannot edit posts).
  3. Click Approve this version, or write a comment and click Request changes.
  4. If the writer changes the post, you are emailed again; your old decision no longer counts.

Flow 4: approve as a client with a personal link

  1. You get an email "Please review and approve: …" with a link. No account, no password.
  2. The link opens a review page with the exact version you are approving.
  3. Type your name, then Approve this version or Request changes (with a comment).
  4. You can change your decision until the request is closed. The link expires after the period the site chose.

Flow 5: approve through a shared link (a team at the client)

  1. The writer opens "Approval through a shared link" in the Approvals box, types who may approve (for example @acme.com), and creates the link. It is shown once; they copy it and send it.
  2. Anyone with the link sees the draft. To decide, they enter their work email and receive a 6-digit code.
  3. Only emails that match the allowed list get a code. A forwarded link alone can never approve.
  4. Each verified person is recorded by name and email, like any other approver.

Flow 6: already using Public Post Preview

  1. Keep using Public Post Preview to share the draft.
  2. Turn on the shared link (Flow 5) for that post. Its Public Post Preview page now shows an approval bar at the bottom with the same email-code step.

Flow 7: approve a file (deliverables)

  1. Settings > Approvals: tick Media files.
  2. Open the file in Media > Library > Edit (or "Manage" in the media modal). Use the same Approvals box.
  3. Outside approvers see the file on the review page and download it through their link.
  4. Replacing the file's content or renaming it makes earlier approvals stop counting.

Flow 8: publish without approval (administrator)

  1. In the Approvals box, open "Publish without approval", type the reason, click Allow publishing, then Publish.
  2. The override and its reason are recorded in the log. The reason is used once.

Flow 9: records and privacy

  1. Settings > Approvals shows the latest log entries; Download log (CSV) exports everything.
  2. IP addresses and browser details are blanked after the retention period; the decisions stay.
  3. Tools > Export / Erase Personal Data include approval records. Erasing removes the name, email, IP and browser from a person's records and keeps the decision as a business record.

Problems and solutions

ProblemWhy it happensSolution
"Publishing failed. This post needs approval…"The content type requires approval and this version is not approved yetRequest approval in the Approvals box, or wait for the remaining approvers
"Resolve all notes before publishing"The Notes rule is on and a Notes thread is still openResolve the open Notes in the editor, then publish
Approvals reset after an editA saved change to title, text, excerpt or featured image (or the file) makes it a new versionExpected. Approvers are emailed; they approve the new version
A change was made but approvals did not resetOnly title, text, excerpt and featured image count; categories, tags and SEO fields do notUse the comment or Notes for those, or request approval again
The approver never got the emailThe site's own email is often blocked or sent to spamInstall an SMTP plugin; ask them to check spam; use "Send a new link"
"This link is not valid any more"The link expired, was replaced by a newer one, was revoked, or the request was cancelledClick "Send a new link" next to their name
"Too many attempts" on the review pageSeveral invalid links from the same network in 10 minutesWait 10 minutes; make sure the full link was copied
"This email address cannot approve through this link"The email does not match the shared link's allowed listAdd the address or its domain when creating the shared link
"Too many codes requested"More than 3 codes for the same email within an hourWait an hour, or send that person a personal link instead
The code does not workCodes expire after 15 minutes and allow 5 triesAsk for a new code on the same page
Images do not load on the review pageThe images are protected (for example by Birim Private Files) and the reviewer has no accountApprove the files separately, or make the images public
A team approver cannot open the previewThey are not on this post's requestAdd them as an approver and update the request
The Approvals box is missingThe content type is not ticked in Settings > ApprovalsTick it
An administrator needs to publish urgentlyApproval has not finishedUse "Publish without approval" with a reason; it is logged
Need proof of who approvedDisputes, auditsDownload the log as CSV: it shows who, when, which version, comment, IP
Is this a legal signature?It is a sign-off recordFor contracts that need a legal e-signature, use an e-signature service

Optional paid service (planned)

The plugin is complete and free. We plan an opt-in service for reliable approval email, PDF approval certificates, an off-site audit archive and SMS verification. Join the waitlist and tell us what you'd use.

Download

Birim Approvals is coming to WordPress.org. This page will link to it once it is approved.