On an edit form or modal
A render hook that closes over one model keeps showing that model’s comments. Put the thread on the form instead. It stays hidden while you are creating, and remounts when the modal opens a different record.commentify-filament-views only when you need to change the admin markup. With approval on, the Comments resource has Approve and Disapprove actions, the same bulk actions, and an approval-status filter (approved, pending, all). The Commentify Settings page toggles most core flags. allow_guests stays in config.
Register Pro beside it when you want the queue, spam log, and audit trail:
CommentifyProPlugin in app/Providers/Filament/*.php and prints this snippet rather than rewriting the provider (a mangled panel file would take the whole admin down).
Filament is optional. composer.json suggests filament/filament ^4.0|^5.0.
Free plugin (core)
- Comments: edit, delete, approve / disapprove, bulk actions, filters (user, parent/child, approval)
- Comment reports: pending / reviewed / dismissed, reporter, reason, IP
- Commentify Settings: most
coreflags from the panel (allow_guestsstays in config)
Pro plugin
Navigation group Commentify.Moderation queue (commentify-moderation-queue)
Same Comment model, dedicated table. Badge shows pending count.
Columns: id, author (Guest if none), body excerpt, type, rating, accepted, approved, reports badge, commentable type, created at.
Filters: pending only, has reports, contains links (http in body), commentable type, unanswered questions, reviews missing a rating.
Record actions:
Bulk: approve, unapprove, delete, ban. All go through
Moderator so the audit log cannot drift.
Spam log (commentify-spam-logs)
Pipeline verdicts (review / deny), excerpt, checker, reasons, user id.
Not spam: re-approves the matched held comment and submits ham to Akismet. See Spam pipeline.
Moderation audit (commentify-mod-actions)
Who did what: approve, unapprove, delete, ban_author, not_spam, not_spam_unmatched, plus pin / unpin from the queue. Moderator name, comment id, timestamp. The table filter lists the first five; pin rows still appear in the log.
Guest bans (commentify-guest-bans)
Ban a guest by email, IP, or both. A hard ban cancels the post. A shadow ban saves it with is_approved = false. Signed-in users are not matched here. User bans stay on the moderation queue Ban author action. An empty until keeps the ban until you delete the row. A past until makes it inactive. See Guests.
Unread comments
UnreadCommentsColumn is not on the moderation queue. Add it to your own table when a record should show how many parent comments are newer than the last time that user opened the thread.
default. Opening the Livewire thread, or listing comments in the API, marks that thread read for the signed-in user.
Widgets
- Pending moderation stat (cached count of
is_approved = false) - Comments per day chart
Policies
Filament actions should remain consistent with Livewire and the API: sameCommentPolicy, same bans. Do not bypass Moderator if you add custom actions. That class is the audit funnel.
