What it does
The rule builder turns a moderation policy into explicit rules. Each rule has a type (keyword, phrase, hashtag, mention, link domain, author or regex), a value and an action (approve, hold for review or reject). Rules are applied in a fixed order: allow-listed authors, blocked authors, reject rules, hold rules, approve rules, then your default. You can export the result as JSON, CSV, an X muted words list or WordPress comment lists.
How do the rule types work?
Each rule type looks at a different part of the post, and all text matching ignores case and accents.
| Type | Matches | Example value |
|---|---|---|
| Keyword | A whole word anywhere in the text | giveaway |
| Phrase | Several words in order, any spacing | free followers |
| Hashtag | That exact hashtag, not longer ones | eventname2026 matches #EventName2026 but not #eventname2026live |
| Mention | A tagged account | @support |
| Link domain | Links to that domain or its subdomains | bit.ly |
| Author | Who posted it (start sample lines with @handle:) |
ourbrand |
| Regex | A JavaScript regular expression | \b0x[a-f0-9]{40}\b |
In what order are rules applied?
Allow-listed authors first, then blocked authors, then reject, hold and approve rules, and finally the default action.
- Author on the allow list: approve. Your own account, your speakers, your moderators.
- Author on the block list: reject. Known spammers and people you've already removed.
- Any reject rule matches: reject.
- Any hold rule matches: hold for a person to review.
- Any approve rule matches: approve. For example your official event hashtag.
- Nothing matched: the default you picked.
The default is the biggest decision you'll make. Approve means posts go live unless a rule catches them (post-moderation). Hold means nothing goes live until a rule or a person approves it (pre-moderation). Our guide on pre- vs post-moderation helps you choose.
How do I test the rules?
Paste sample posts, one per line, and each one shows the action it would get and the rule that decided it.
Start a line with @handle: to test author rules, for example @guest_ana: Loved the keynote #eventname2026. Use real posts from your last event or your mentions from last week. When a result surprises you, the reason line tells you which rule to change.
What can I export?
JSON and CSV for your records and other tools, plus three plain lists for X and WordPress.
- JSON keeps everything, including the default action. Import it back here any time.
- CSV opens in any spreadsheet. Columns:
kind, value, action, note. - X muted words lists your reject keywords, phrases and hashtags, one per line. X adds muted words one at a time under Settings and privacy → Privacy and safety → Mute and block → Muted words.
- WordPress disallowed keys lists reject rules for Settings → Discussion → Disallowed Comment Keys, where matching comments go to the trash.
- WordPress moderation keys lists hold rules for the Comment Moderation box, where matching comments wait in the queue.
Author and regex rules are left out of the plain lists because those tools can't use them the same way.
Common questions
What happens when two rules disagree?
The order decides. An allow-listed author always wins, then a blocked author, then any reject rule, then any hold rule, then any approve rule. So a post from a blocked account that uses your official hashtag is still rejected, and a post from your own account is approved even if it says "giveaway".
What's the difference between hold and reject?
Reject means the post never appears. Hold means a person has to look at it first. Use hold for words that are fine in some contexts and not in others, and for anything with a hidden link destination.
Can I load the rules into a social wall tool?
If the tool imports CSV or JSON, map our columns (kind, value, action, note) to its fields. If it only takes a plain keyword list, use the export buttons for a one-per-line list. Most tools at least accept that.
Where are my rules stored?
In your browser's local storage, so a refresh doesn't lose them. Nothing is uploaded. Download the JSON file to keep a copy or share it with your team.