Guides → Daily comment moderation workflow — SGEN

Daily comment moderation workflow

How to build a ten-minute daily habit that keeps Discussions clean and your Blacklist lean

Running a live community on your site does not require a full-time moderator. With the right rhythm, most SGEN admins spend under ten minutes a day keeping Discussions healthy — approving real comments, clearing spam, replying to two or three customer questions, and occasionally blacklisting a persistent bad actor.

This workflow recipe ties together three areas of SGEN admin: the Discussions queue, the

moderator email digest, and the IP Blacklist. Each phase is short and repeatable. Done consistently, you will never face a backlog.

your business gets roughly 20 new comments and 5 reports per day across blog posts and product pages. The steps below were sized for that volume. If your site gets 200 comments a day, add a second afternoon sweep. If it gets 5, run the morning sweep every other day instead of daily — the phases are modular and you can skip any that do not apply on a given day.

What is this for?

This recipe is for SGEN admins who want a repeatable daily habit instead of ad-hoc moderation. It covers four phases that fit inside a single coffee break:

  • Morning sweep (10 min): scan the Pending tab, approve real comments, mark spam, blacklist the

worst offenders.

  • Digest review (2 min): scan the batched moderator email that SGEN sends when new comments

arrive overnight.

  • Reply triage (5 min, a few times per week): respond to thoughtful customer questions that

deserve a public answer visible to all readers.

  • Weekly Blacklist sweep (15 min): review your Blacklist for false-positives and prune stale IPs

that have gone quiet.

The routine assumes you already have Discussion Scope turned on for at least one content type and have a published post or product page that visitors have commented on. If neither is true yet, check the Before you start section below before reading further.

Good use cases

Example 1: Morning sweep — Pending queue at 9 AM. You open Discussions → All Discussions and the Pending tab shows 7. Five are real customer questions — one about the Canvas Tote Bag size guide, two about your detailed content piece recipes, two general comments on the Barista T-Shirt post. Two are obvious spam: mismatched author names, promotional links, generic copy-paste tone. Bulk-approve the five and bulk-spam the two. Pending drops to zero in three clicks. Total time: four minutes.

After bulk-approving five and bulk-spamming two, the queue confirms the move:

Example 2: Spam surge — bulk cleanup in under five minutes. On a Tuesday morning the Pending tab shows 23. A scroll reveals 19 are bot accounts — promotional copy, foreign-language link farms, repeated patterns across the Canvas Tote Bag and Coffee Sticker Pack posts. Click Pending. Tick the master checkbox in the table header to select every row on the page. Pick Mark as Spam from the bulk dropdown. Click Apply. Spam rises from 4 to 23 in one action. Then switch to Approved and search "free gift" to catch any that slipped through — bulk-move matches to Spam too. Queue back to quiet in four minutes.

Example 3: Reply triage — a public thread answer that helps everyone. a developer left a detailed question under the your detailed content piece post: "Is the ratio guide for Aeropress or just French press?" That is the kind of question a public answer helps — every visitor with the same question benefits. Click View on Alan's row. Scroll to the Reply in thread textarea. Type a concise answer. Click Reply. Your response threads under Alan's comment on the public post with an admin context label visible to all readers.

After clicking Reply, the thread on the public post looks like this to all visitors:

What NOT to use this for

A few specific behaviours on this version will catch you out if you do not know about them in advance. Read this section before you start — some of these matter enough to change how you sequence actions.

1. Do not delete a parent comment before its replies.

If you permanently delete a parent comment that has replies under it, those replies remain in the system. On the public post they are invisible — the renderer drops orphaned replies — but they stay in your admin row counts and occupy database storage with no clean way to find them from a summary view.

The safe sequence is: open the parent's detail view, find any replies listed under it, delete those replies individually first, then delete the parent. Permanent-delete is available only from the

Trash tab, so the full sequence is:

  1. Move the parent comment to Trash using the Trash inline action.
  2. Open each reply row individually and delete it from its own detail view.
  3. Return to the Trash tab.
  4. Permanently delete the parent.

{{emit:admin-confirm-modal {"title":"Permanently delete 1 comment?","body":"You are about to permanently delete the comment by an analyst on \"Coffee Sticker Pack.\"\n\nThis cannot be undone. If this comment has replies, remove the replies first — otherwise they remain in the system without a parent.","confirmLabel":"Delete Permanently","cancelLabel":"Cancel","dangerous":true,"height":280}}

2. Do not approve a parent and assume its replies are also approved.

On this version, admin replies always save with status Approved regardless of the parent comment's status at the time you clicked Reply. That sounds convenient, but it creates a specific trap: if you reply to a comment while it is still Pending, your reply goes live on the public post immediately while the parent is hidden from visitors.

Visitors then see your admin reply hanging in the thread with nothing above it — context-free and confusing to anyone reading the post. There is no easy way to suppress the reply after the fact without deleting it entirely.

Check the parent's status badge in the detail view header before typing anything. If the badge reads

Pending, click Approve in the top action bar, wait for the page to refresh showing Approved, and then reply.

3. Do not rely on the Blacklist as a long-term spam firewall.

Adding an IP to the Blacklist stops that specific address on the next page load. Motivated spammers rotate IPs through VPNs and residential proxies faster than any manual block list can keep up. The Blacklist is for stopping persistent, identifiable sources you have confirmed in your queue — not a substitute for rate-limiting or a CAPTCHA on your contact and comment forms.

If your Blacklist grows past a few dozen active entries and abuse is still arriving at the same rate, the problem needs different tooling. A short, targeted list is a healthy Blacklist. A list of 200 entries where you cannot tell which ones still match real traffic is a maintenance burden that will confuse the next admin who inherits the site.

4. Do not reply to a spam or trashed comment.

The reply form is available on any comment row, regardless of the comment's current status. But replying to a Spam or Trash row creates a response with status Approved attached to a hidden parent. If the parent is ever restored, your reply surfaces publicly under spam content. If the parent stays hidden, your reply sits unattached in the system and shows up unexpectedly in count totals.

If a comment is spam: mark it and move on. If you want to engage with the underlying topic, first approve the parent, then reply.

5. Do not disable Discussion Scope for all content types when only one is noisy.

Discussions → Settings includes a Discussion Scope section that controls which page types accept comments — blog posts, products, events, custom objects. If your blog is getting overwhelming comment volume, it is tempting to turn off all Discussion Scope to quiet things down quickly.

Do not do this. You will also silence products, events, and any other content types that were handling comments cleanly. Turn off only the noisy content type and leave the rest enabled. The setting is per-type precisely so you can tune individual surfaces without affecting the others.

6. Do not use SG-Builder for blog posts where you want comments to appear.

On this version, blog posts built with the SG-Builder template do not render the comment form or approved comments on the public page at all. Admin moderation still works — pending comments appear in the Discussions queue and can be approved — but visitors cannot see or leave comments on those posts regardless of how many you approve or what your Discussion Scope settings are.

If you need comments on a post, use the Text Editor template when you create or edit it. Check any existing posts that currently receive comments and confirm they are on the Text Editor template before troubleshooting missing comment sections.

Before you start

On a fresh install this may be off by default. If visitor comments are not appearing in the queue at all, check Settings before anything else.

have already commented on, or that you expect comments on.

get a public reply versus a private email. Write this down once and paste it into your team handbook — it takes five minutes and saves days of inconsistency later.

top navigation bar is not rendering on this version, so a direct link is the only reliable path.

Author section of the comment detail view — click View on any comment row to see it.

  • You are signed in to SGEN as an admin.
  • Discussion Scope is enabled for at least one content type under Discussions → Settings.

Where to go

  1. Left navigation → Discussions. The submenu expands to All Discussions and Settings.
  2. All Discussions opens the moderation queue. Five tabs run across the top: All, Pending,

Approved, Spam, Trash. Each tab shows a count badge so you can see at a glance what is waiting for action.

  1. For IP blocking: left navigation → Blacklist. The add/edit form is on the left card; the

active entry list with the Test IP tool is on the right card.

Steps

1
Open Discussions → Pending and read the count

Click Pending in the tab bar. The count badge is your pulse-check for the morning.

Under 10 is a typical morning for a site receiving about 20 comments per day. If the count is above 25, set a 15-minute timer and work rows methodically rather than rushing a single bulk pass — you are more likely to spot an ambiguous row you want to review individually when you are not trying to clear 30 rows in 60 seconds.

Scan the Author column before touching anything. Familiar names with realistic email addresses against posts that match the commenter's apparent interest are usually genuine. Random strings, mismatched author and email domains, promotional-sounding text in the comment excerpt — those are the spam signals you can catch before clicking View on every row.

If the count is 0, skip to step 5 (the digest review). A zero Pending count at the start of the day means yesterday's work held and you have a quiet morning ahead.

2
Bulk-approve the clean rows

Tick the checkboxes for rows that look genuine. If you want to group them: tick the master checkbox to select all rows on the page, then uncheck the suspicious ones, leaving only the clean rows selected. Pick Approve from the Bulk actions dropdown and click Apply.

Approved comments become visible on the public post immediately. There is no delay, cache warm-up, or second approval step. Visitors who reload the public page right now will see the approved comment.

If a row is ambiguous — realistic author but unexpected content, or a topic you are unsure about — click View and read the full comment body, the submitter IP, and the post it belongs to before deciding. Ambiguity is not a reason to approve; when in doubt, leave the row in Pending and return after the rest of the sweep.

3
Bulk-spam the obvious junk

Tick the remaining Pending rows you are confident are spam. Pick Mark as Spam from the dropdown and click Apply. Those rows move to the Spam tab and disappear from the public post immediately.

After this step your Pending tab should read 0. If it does not, either the page needs a refresh (hard-reload with Ctrl+F5) or you intentionally left ambiguous rows for a second look. Both are fine — just be deliberate about which rows are still there and why.

One pattern worth watching: if the same email domain appears across multiple spam rows in the same morning (for example, three rows all from @fast-promo.biz), note the submitter IPs from those rows. You may want a Blacklist entry (step 7) if the same IP keeps appearing.

4
Check whether any spam slipped to Approved

Switch to the Approved tab. Use the search bar to look for keywords that spam waves on your site tend to use. Common patterns for a coffee brand: "free shipping code," "earn rewards," "limited offer," "crypto." If any rows match, bulk-select them and pick Mark as Spam or Move to Trash to pull them off the public post immediately.

This step takes under 30 seconds on most mornings. If your search turns up nothing, move on.

Over time you will build a short mental list of two or three keywords that your site tends to attract. Searching those same terms each morning becomes reflexive — faster than reading every row individually and just as effective at catching slippage.

5
Handle the moderator email digest

SGEN sends a batched moderator email when new comments arrive. The timing depends on your notification settings, but most sites receive one digest overnight and one during business hours. Open the digest and scan each entry:

  • For comments still showing Pending: follow up in the Discussions queue — these are rows you

have not touched yet and they need a decision.

  • For comments you already handled in steps 2–4: skip them. They are already processed and the digest

is showing stale status.

  • For any comment the digest flags as high-priority (unusual volume, repeated reporter): go directly

to that row with View and read the full context before deciding.

The digest is a cross-check, not your primary queue. If you ran steps 1–4 first, most of the digest is already handled and this step takes about two minutes. Where the digest adds real value: catching a comment that arrived in the brief window between your morning sweep and when the digest was generated. Those late arrivals might otherwise sit in Pending until the next day.

6
Reply to comments that deserve a public answer

Switch to the Approved tab. Scan for comments that ask a real question other visitors would also benefit from seeing answered publicly:

  • Product questions: availability, sizing, materials, variants coming soon.
  • Recipe questions: ratios, substitutions, equipment compatibility.
  • Shipping or policy questions that your site FAQ does not already cover visibly.
  • Positive feedback where a short "thank you" builds visible rapport with your community.

For each reply-worthy comment: click View, scroll to the Reply in thread textarea at the bottom of the detail view, type a one-paragraph response, and click Reply. Your reply appears on the public post under the original comment with an admin label visible to all readers.

Keep replies to Approved parents only. Replying to a Pending, Spam, or Trash parent creates an approved reply with no visible parent on the public post — the thread makes no sense to readers and there is no way to fix the reply's status without deleting the reply entirely and starting over.

Target two or three replies per session, not a response to every comment. Choose the questions with the highest reuse value for visitors browsing the product or post later. A well-answered question about Canvas Tote Bag sizing reduces future support emails more than responding to five one-word "Love it!" comments.

7
Blacklist any persistent IP from today's sweep

If the same submitter IP appears across three or more spam rows from this morning's sweep, it is worth a Blacklist entry. From the comment detail view, note the IP shown in the Author section. Navigate to Blacklist in the left navigation. Enter the IP in the Entry field. Write a Reason that includes today's date and what you observed. Click Blacklist item.

Entry: 203.0.113.78
Reason: Comment spam — 4 posts in 1 hour, May 5 2026. Review in 30 days.

Do not blacklist based on a single spam comment. One row is not enough signal — the IP might be a shared proxy also used by real visitors. Three or more rows in a single session from the same IP justifies a Blacklist entry.

After you save the entry, its Hits counter starts at 0. The next time a request arrives from that IP it increments and the visitor is bounced before your site loads. Within a day you should see the counter move if the source is actively hitting your site.

8
Run the weekly Blacklist sweep (once per week only)

Once per week, spend 15 minutes reviewing what is in your Blacklist. The goal is a short, active list — every entry doing real work, none sitting idle.

Open Blacklist. Look at the Hits and Last Matched columns:

  • Hits at 0 for more than 30 days: the abuser has moved on. Delete the entry. You can always

re-add it if the same IP returns.

  • Last Matched more than 60 days ago: even if Hits is not zero, this rule has gone quiet. Delete

it unless you have a specific reason to keep it (documented in the Reason field).

  • Any entry covering a /16 or wider without a rationale: residential ISPs recycle IPs across

customers every few days. A /16 can include tens of thousands of legitimate visitors. If abuse has stopped, delete the broad range. If it is ongoing, narrow to /24 or smaller and update the Reason.

Use the Test IP tool above the list to audit any rule you are uncertain about. Paste a visitor IP and click Test. If the result shows "is blacklisted by rule X" and that visitor is legitimate, you have a false-positive — delete or narrow that rule immediately.

The two zero-hit entries above are candidates for immediate deletion. The first entry (14 hits, last matched today) stays active — it is doing real work.

What success looks like

Success looks like

After your morning sweep, the tab counts should look like this: The numbers tell the story: good morning sweep puts this to zero before 10 AM. Threads on product posts should include at least a few admin answers to common questions. bot wave — handle it with bulk actions and check for a persistent IP worth blacklisting. should not grow indefinitely. For the Blacklist, success looks like:

  • Pending at 0. Comments left sitting in Pending feel ignored to the visitor who wrote them. A

What to do if it does not work

template. On this version, SG-Builder blog posts do not render the comment form or approved comments publicly. Switch the post to Text Editor, or document the limitation for your team.

If the count still does not update, confirm you clicked Apply after selecting the action from the dropdown — selecting an action alone without clicking Apply does not submit anything.

template, approved comments will not render there on this version regardless of status. For Text Editor posts, hard-refresh the public page with Ctrl+F5 to bypass any caching.

Those are orphaned replies the parent deletion left behind. Delete each one individually from its own row. Next time: delete replies before their parent, following the four-step sequence in "What NOT to use this for" above.

parent comment's status. If the parent is Pending, Spam, or Trash, the public renderer hides the entire branch including your reply. Approve the parent first, then reload the public post.

keep the list actionable and easy to read.

Blacklist rule. Paste their IP into the Test IP tool on the Blacklist page. If it returns "is blacklisted by rule X," delete or narrow that rule and ask the visitor to try again.

/sg-admin/notifications/ for direct access, or rely on the Pending tab count as your real-time signal each morning.

morning. One occurrence is noise; two in a row is a signal worth acting on.

Visitors cannot leave comments on a blog post

Check whether the post uses the SG-Builder

How this connects to other features

spam, trash, bulk, reply, detail view — is explained with full step sequences at ./discussions/01-moderate-comments-and-reviews.md.

queue, you add it here to block future hits before they reach your comment form. Entry formats (single IP, CIDR, IPv4 wildcard, IPv6), the Test IP tool, and the self-lockout warning are all documented at ./blacklist/01-block-abusive-ips.md.

/sg-admin/notifications/. Clearing your Pending queue resolves those notifications. Marking a notification "read" without moderating the comment just hides the reminder — the comment stays in Pending and the count does not change.

the public page. A visitor comment lands in the Discussions queue as a Pending row. Posts built with the SG-Builder template do not render comments publicly on this version.

Discussion Scope. The Post column on the Discussions index links directly to the product page so you can read the public context without leaving the admin.

Permanently is not logged on this version — take a screenshot of the Trash tab before running a bulk purge if you need a record for compliance or team audit purposes.

Discussions

The primary queue for this entire workflow. Every action covered here — approve,

A bookmark set for the full workflow

Drop these four links into a shared browser bookmark folder called "Moderation" so any teammate can reach the right tab in one click without navigating from the dashboard.

<!-- Moderation bookmark set — your business admin -->
<a href="/sg-admin/discussions/?status=pending">Discussions — Pending</a>
<a href="/sg-admin/discussions/?status=spam">Discussions — Spam</a>
<a href="/sg-admin/discussions/?status=trash">Discussions — Trash</a>
<a href="/sg-admin/blacklist/">Blacklist</a>

Keep all four open in pinned tabs each morning. The Pending count appears in the browser tab title after the page loads — on a quiet morning you can tell the queue is clear without even switching to that tab.

The same URL pattern works for any tab. Swap ?status=pending for approved, spam, or trash to link directly to any section. If you keep a team internal start page or shared Notion, embed the four links there so a covering teammate can run the sweep without being walked through navigation.

Common questions

  • Can two admins moderate at the same time? Yes. Each admin's actions are recorded under their

own user account. If two admins click Approve on the same row at the same instant, the last write wins and both actions are logged separately.

  • Will marking a comment as Spam notify the visitor? No. Status changes do not email the

commenter. The only email a commenter may receive is an optional reply notification when you post an admin reply under their approved comment.

  • Can I edit a visitor's comment text? No. The detail view is read-only on the comment body.

You can change the status or reply in-thread, but the original text is preserved exactly as the visitor wrote it. If a visitor wants a typo fixed, ask them to delete and re-post, or post an admin reply quoting the corrected version.

  • Is there a way to auto-approve comments from trusted visitors? Not on this version. Every

comment from every visitor lands in Pending until you act on it. Plan a daily routine rather than relying on automation that does not exist yet on this platform.

  • What happens to comments on a post I delete? They stay in the database with the post link

broken. The Post column on the Discussions index shows "(deleted)." You can still moderate or permanently delete those orphaned comments from the queue — they do not disappear automatically when the post is removed.

  • Can I pause a Blacklist entry without deleting it? No. The only two states are: the entry

exists and blocks the IP, or the entry does not exist and the IP is allowed through. To temporarily stop blocking, delete the entry and re-add it later if you need to reinstate it.

  • What does a blocked visitor see? On this version, blocked visitors are redirected to

google.com. They do not see an error page or an explanation that they have been blocked. If a visitor contacts you to say your site is sending them to Google, check the Blacklist first before assuming a technical problem on your hosting.

Next step

each week, with a named owner responsible for running it.

away. Write both names in your team handbook with their contact information.

weekday mornings. If the count is 0, the whole morning sweep takes under two minutes.

any other content types you want comments on are ticked. Save if anything is missing or off.

this version — either switch those posts to the Text Editor template or document the limitation clearly for your team so no one wastes time troubleshooting the same version behaviour twice.

which questions get a public reply versus a private email. Paste it into your team handbook once. The next person who joins moderation will not have to guess at the voice or escalation path.

Set a recurring calendar eventfor the weekly Blacklist sweep — 15 minutes, same day and time
On this page