Skip to content
Metric VaultHelp Center
Open app

Blog administration

The Blog Moderation screen, how to find a customer post, what each status change does to the live site, and the one direction the console cannot move a post in.

Last updated 2026-08-06

Summary#

Blog Moderation lists every post across every customer blog and lets an owner change a post's status. It exists for abuse response: taking something off the public web quickly, without touching the customer's account or their other work. It is status-only. You cannot read a post's body, edit it, or publish it from here.

Purpose#

Customers publish to a hosted blog from Blog Studio, and those posts are served on the public web. That creates a small but real moderation obligation: if something is defamatory, illegal, or a compromised account is pushing spam, we need to be able to unpublish it in seconds and from one place, without asking the customer or waiting for a deploy.

The scope was kept narrow on purpose. The console can change what the public can see. It cannot rewrite what a customer wrote. That boundary keeps a moderation action from ever being confused with editorial interference.

Requirements#

  • An active admin session. See Getting admin access.
  • MONITOR_DB bound, with the blog tables present. If a customer blog has never been provisioned on this environment, the tables may not exist yet.
  • The owner role to change anything. An admin can view the list only.

Permissions#

Capabilityadminowner
Search and list postsYesYes
See status, site, owner email and last-updatedYesYes
Unpublish, Trash, RestoreNoYes

The action buttons are not rendered at all for an admin, and the endpoint refuses the call independently with 403 {"error":"Only an owner can moderate posts."} A hidden button is a convenience. The server check is the control.

Admin console → Operations → Blog Moderation

What a status means#

A post's status decides where it appears. Understand these before you press anything.

StatusOn the public blogIn the customer's Blog StudioBadge
publishedVisible, if its visibility is public and its publish date has passedIn their listGreen
draftNot visibleIn their list, as a draftAmber
scheduledNot visible until it goes liveIn their listPurple
trashNot visibleHidden from the main list, counted separately as trashRed

trash is a soft delete. The row stays in the database and the customer can still see and restore it from their own trash view, or delete it permanently themselves. Moving a post to trash from the console destroys nothing.

Step-by-Step Guide#

Find a post#

  1. Select Blog Moderation in the Operations group. The table starts empty with Search or Refresh to load customer posts.
  2. Fill in any combination of filters:
    • search title / slug / site matches the post title, the post slug or the site name.
    • owner email matches the site owner's address as a substring.
    • The status select offers Any status, Published, Draft, Scheduled and Trash.
  3. Press Search, or press Enter in either text field. Changing the status select searches immediately.
  4. The header count reads (<loaded> of <total>). Load more fetches the next 50 rows and hides itself when everything is loaded.

Each row shows the title with the slug beneath it, the site name with the owner email beneath it, the status badge, and a relative last-updated time.

Screenshot
The Blog Moderation screen with the owner email filter populated and a mix of published and draft rows.

Take a post off the public blog#

  1. Find the post and confirm the owner email is the account you intend to act on.
  2. Press Unpublish. The post moves to draft.
  3. The message line under the filters reads Updated. and the list reloads.
  4. The action is recorded as blog.status with the post id as the target and the new status as the detail. See Audit log.

The post leaves the public blog as soon as the change is written. There is no cache to wait for on the moderation side.

Warning

Warning: There is no confirmation dialog on any of these buttons. A single click takes effect immediately. Read the owner email before you press.

Trash a post#

Press Trash. The post moves to trash, leaves the public blog, and drops out of the customer's normal post list. Available from any status.

Restore a trashed post#

Press Restore on a trash row. The post returns to draft. It does not return to published, and the console has no control that will publish it.

What you cannot do from here#

  • You cannot re-publish. The buttons offered are Unpublish, Trash and Restore. There is no Publish action for a draft, so after unpublishing, only the customer can put the post back on the public blog from Blog Studio. Plan for this before unpublishing something the customer expects back.
  • You cannot read or edit content. The list returns id, title, slug, status, locale, updated time, site and owner. The body is never fetched. Review the post on the public blog, or ask the customer.
  • You cannot set scheduled. It is filterable but not settable. The endpoint accepts only draft, trash and published, and rejects anything else with 400 {"error":"invalid status"}.
  • You cannot delete permanently. Trash is as far as moderation goes.
  • You cannot moderate a site. Actions are per post. To stop a whole account, suspend the customer instead. See Customer lookup and billing.

Does it notify anyone?#

No. Changing a post's status sends no email and shows no in-app message to the customer. They will find out when they next open Blog Studio, or when a reader tells them the page is gone. If a moderation action needs explaining, contact them separately.

Troubleshooting#

SymptomLikely causeFix
No posts match. for a customer you know has a blogThe filters are too narrow, or the tables do not exist on this environmentClear the filters and press Refresh. A missing table returns an empty list rather than an error, so an always-empty screen is a signal in itself
No action buttons on any rowThe role is admin, not ownerAn owner promotes the account on the Admins screen
Only an owner can moderate posts.The endpoint was called by an adminSame fix
invalid statusA status other than draft, trash or published was submittedUse the on-screen buttons rather than a hand-built request
id requiredThe post id was missing from the requestReload the screen and press again
The list is empty on first openThe screen does not auto-load with contentPress Refresh or Search
A post is trashed but still on the public blogA stale page in the reader's browser or an edge cacheReload without cache. The query that serves the public blog only returns published, public, already-live posts

FAQs#

Is trashing a post reversible? Yes. Restore returns it to draft. Nothing is deleted, and the customer's own copy is intact.

Can I see how many posts a customer has? Not as a count on this screen. Filter by their owner email with Any status and read the header total.

Does moderating a post affect the customer's credits or plan? No. It changes one field on one row and writes an audit entry. Nothing billable happens.

Who can see that I moderated a post? Any admin, in the audit log. The row records your email, the action blog.status, the post id and the new status.

What if a post needs removing for legal reasons? Trash it, so it leaves the public blog immediately, then escalate. Permanent deletion is not available from the console and has to be handled directly against the database by someone with that access. Record the request and the action taken.

Why does the screen show posts from customers who have never published? The list covers every post row, at every status, across every provisioned site. A customer with only drafts still appears.

See also

Was this article helpful?