Every community post lives in one of four moderation states. The community's post policy (set during enable) decides which state a fresh post lands in. Moderators move posts between states from then on.
The four states
| State | Author sees | Everyone else sees |
|---|---|---|
| Pending | Their post with a "Waiting for review" banner | 404 — not in the feed, not in search |
| Published | Normal post | Normal post — listed in feed, indexed for search |
| Rejected | Post + a "Rejected — <moderator note>" banner with an Edit button | 404 |
| Hidden | Post + a "Hidden by moderator — <note>" banner with an Edit button | 404 |
The author always retains read + edit access to their own post. Rejected and Hidden are not "content destruction" — the author can fix whatever was wrong and resubmit, which flips the post back to Pending.
How a fresh post is routed
When a member submits a post, the policy + their role decide the initial state:
| Policy | Member's situation | Initial state |
|---|---|---|
| Open | Any role except Banned | Published |
| New members reviewed | Member with PostCount < N | Pending |
| New members reviewed | Member past N approvals | Published |
| Every post reviewed | Any non-Moderator | Pending |
| Members only | Member | Published |
| (any) | Moderator | Published immediately |
| (any) | Banned | Refused (403) |
One nuance worth knowing: a member's PostCount only ticks up when one of their posts reaches Published. So if a Pending post is rejected, the threshold isn't burned — it counts only successful approvals.
Running the queue
Open the community admin and click Moderation (or the highlighted Pending Review tile on the dashboard). You'll see Pending posts oldest-first.
Each row shows the title, author handle, submission time, and a short body preview. Three actions per post:
- Approve — flips the state to Published, member's PostCount bumps by one, post is indexed for search and appears on the community feed immediately. Author gets a banner on next visit.
- Reject — opens a small inline form for a required note. Submit, and the state flips to Rejected. The author gets an email with the note and sees the Rejected banner with an Edit button.
- Open — load the public post in a new tab. Useful when you want to read the full article before deciding.
Hiding a published post
Sometimes a post is approved and only later turns out to be off-topic, spam, or abusive. Don't delete — hide. The member's hide path is via the moderator MCP tool today; a one-click button on the post-detail moderator toolbar is a planned follow-up.
Hide flips the state to Hidden with a required note, removes the post from the feed and search, but keeps it visible to the author with an Edit button. The author can fix the issue and resubmit (flips to Pending).
The audit log
From the community admin → Audit log. Every moderator action writes a row: who, when, what, the before / after JSON snapshots, and any note. Use it for spot-checks ("did Jane approve that herself?") or compliance ("show me everything the team did last week").
Notifications
Today's transactional emails (via SendGrid):
- Post rejected — author gets the moderator note.
- Role changed — member is told their new role.
- Banned — member is told they're banned, plus the reason.
Pending and Approved are in-page banners only — we don't email on those because the volume can spike on busy days.
Moderating from MCP
The whole queue runs over MCP tools too — list_pending_community_posts, approve_community_post, reject_community_post, hide_community_post. Useful when triage is part of a longer Claude conversation. See MCP — Common workflows for the "Triage the moderation queue" recipe.