← All posts

Anonymous Posting in a WordPress Forum, With an Audit Trail

How Jetonomy Pro lets members post anonymously in chosen spaces, what stays hidden, and how an admin reveal is restricted and logged every time.

Some questions don’t get asked under a real name. A student doubts a course, an employee wants to raise a concern, a patient asks about something personal. If your forum only allows named posts, those conversations stay in private messages or never happen at all.

Anonymous posting fixes that, but a naive version creates a different problem. If nobody can ever find out who wrote something, abuse has no consequence. Jetonomy Pro takes a middle path: members can post without their name or avatar, and a site administrator can reveal the author when it matters, with every reveal written to a log.

This guide walks through how it works, what stays hidden, where the limits are, and how to set up a space that uses it. Anonymous posting is a Pro feature. The Free plugin carries the masking underneath, but only Pro lets members choose it.

Two switches, both must be on

Anonymous posting is off until you do two things.

  • Enable the extension. Anonymous Posting is an extension in Jetonomy Pro, in the Privacy category. Switching it on at the Extensions page is the global switch. There’s no separate setting to hunt for.
  • Opt in each space. Open the space in the admin and use the Anonymous tab, then tick “Allow anonymous posts in this space”. Saving that tab needs the capability to manage Jetonomy settings.

Both have to be true, and the poster has to be a logged-in member. There’s no anonymous posting for visitors who aren’t signed in, so every anonymous post still belongs to a real account behind the scenes.

The per-space opt-in is the useful part. You don’t have to choose between an open forum and a masked one. A support space, a feedback space and a general chat space can each behave differently on the same site.

What members see when they post

In a space that has opted in, a new topic form shows a “Post anonymously” checkbox. In the reply composer, the same control appears as a small mask icon in the toolbar, next to the formatting buttons. It’s a real toggle button with a pressed state and a label, so keyboard and screen reader users can switch it on. The reply label follows your community’s own vocabulary if you’ve renamed things in the terminology settings.

If the space hasn’t opted in, or the extension is off, neither control appears at all. Members don’t see a greyed-out option.

The server makes the final call. Whatever the browser sends, the plugin checks both switches again when the post or reply is saved. If either one is off at that moment, the post is saved as a normal named post.

That’s worth knowing: if you switch a space’s setting off while someone is mid-way through writing an anonymous reply, their reply will publish under their own name. Warn your members before you turn the setting off, not after.

What everyone else sees

An anonymous author is shown as “Anonymous”, with no avatar and no link to a profile. That applies to every other member, to space moderators and to administrators who are just browsing. Being an admin doesn’t unmask anyone by accident.

The masking happens in one place in the Free plugin, the function that works out how an author is displayed. When a post or reply is marked anonymous, it returns the name “Anonymous”, an empty avatar and no profile address, unless something explicitly allows a reveal. The Free plugin ships that permission as always off. Only the Pro extension grants it, and only to site administrators doing an explicit reveal.

The reveal: accountable, not absolute

This is what separates the feature from a simple “hide my name” box. Administrators get a “Reveal author” button on anonymous topics and replies. Pressing it shows the real author for that one item.

Three details matter:

  • Only site administrators can do it. The check is the manage-options capability, which space moderators and ordinary staff roles don’t have by default.
  • It’s an explicit action. The unmasking only works during the reveal request itself, and it’s cleared straight afterwards, even if something throws an error in between. Ordinary browsing never reveals anyone.
  • Every reveal is logged. Each one writes an entry to the Jetonomy activity log called “anonymous author revealed”, recording who did it, whether it was a topic or a reply, which item, and the real author.

The same action exists as a REST endpoint for administrators, at /jetonomy/v1/anonymous/reveal. It takes an object type of post or reply and an object ID, and it logs in exactly the same way. Developers who build a moderation dashboard get the audit trail for free.

So members can speak freely, and the people they speak to can trust that a moderator can’t quietly look up an author. A reveal leaves a record that someone has to answer for.

Where anonymous content stays out

Hiding the name on the post would be pointless if the author’s identity leaked somewhere else. The plugin handles the obvious places:

  • Profile pages. Anonymous topics and replies are left out of an author’s list of posts and replies.
  • Search by author. A search for posts by a given member excludes anonymous ones.
  • BuddyPress. An anonymous post is never sent to the BuddyPress activity stream at all, because an activity row carries its author in a way that can’t be masked afterwards. Anonymous posts are also left out of the BuddyPress profile lists.
  • Notifications. A notification about an anonymous post doesn’t carry the real author as the actor, so the name and avatar don’t appear in a subscriber’s alert.
  • Mentions. A mention notification uses the masked display name.

These are separate code paths, and each has its own guard. That’s the reason to test the places that matter to your community, which I cover below.

Limits to plan around

Being honest about what the feature doesn’t do protects you from promising too much.

  • It’s Pro. Free has the masking underneath but no way for a member to turn it on.
  • Only administrators can reveal. If your moderation team is made of space moderators, they can’t unmask anyone. Decide who in your organization is allowed to ask for a reveal, and write that down.
  • Anonymous isn’t untraceable. The author’s account is stored with the content, and the reveal exists on purpose. That’s good for abuse handling and wrong for a promise of absolute secrecy. Don’t tell members that nobody can ever find out who they are.
  • It needs a logged-in member. There is no guest posting here.
  • The effect on points and reputation isn’t something I can vouch for. I haven’t traced it through the code, so test it if your community leans on those systems.

Which spaces suit it

Anonymous posting suits conversations where the topic carries risk for the speaker. Good fits include a feedback space for a course or product, a health or support space, a workplace concerns channel and an ask-me-anything space for beginners who are shy about looking foolish.

It’s a poor fit for a space where reputation matters, like an expert Q&A where answers earn trust from the name behind them. It also doesn’t suit any space where you’d struggle to deal with abuse without knowing who’s responsible. Start with one space, watch it for a month, and add more only if it works.

Write the policy before you switch it on

The feature only works socially if members understand the deal. A short notice in the space header is enough. Say that:

  1. Posts can be made anonymously in this space.
  2. Site administrators can reveal an author in cases of abuse, and every reveal is logged.
  3. Anonymous posts follow the same rules as any other post.

Pair that with your moderation habits. A weekly moderation workflow covers how to review reports without drowning, and trust levels and self-moderation shows how to let experienced members share the load.

Setting it up and testing it

A short rehearsal catches the surprises.

  1. Enable Anonymous Posting on the Extensions page.
  2. Open a test space, go to its Anonymous tab and tick the box.
  3. As a normal member, start a topic with “Post anonymously” ticked. Confirm it appears as Anonymous with no avatar.
  4. Reply anonymously from a second account. Check the reply composer’s mask toggle.
  5. View the member’s profile and confirm the anonymous topic is not listed.
  6. As an administrator, use “Reveal author” and then open the activity log. Confirm the entry is there.
  7. Turn the space setting off and confirm the toggle disappears from the composer.

For developers

The extension is built from hooks you can use. The write path runs through the before-create filters for posts and replies, which is where the plugin forces the anonymous flag on or off. The display path runs through the jetonomy_author_can_reveal filter, which is always false in Free. The space REST payload gains an allow_anonymous field, so a custom client knows whether a given space has opted in, and the reveal route is there for your own tooling.

Where to go next

If you’re deciding who sees what, setting up a private forum covers visibility. The features page lists everything the plugin does, and the pricing page shows which plan includes Pro.

What customers say on Trustpilot

WBCOM Designs is Amazing!

WBCOM Designs has constantly updated and supported their plugins and themes. Recently the new BuddyNext project is Amazing! - and the new line of addons like Mediaverse, Jetonomy, Mediashield, and Listora.. are likewise Amazing! - and very well built. Today their online Chat solved a download…

Edward S.US