Commentify Pro
Self-hosted comments for Laravel, with a native Filament admin. Comments for a blog, reviews for a product, notes on a recipe — same package. The MIT Commentify package is the Livewire thread. Commentify Pro layers on it (it never forks it): a versioned JSON API, React and Vue SDKs that match the Livewire UI, a spam pipeline, and Filament Pro tools (moderation queue, spam log, audit trail, charts).- Live demo: commentify.pro
- Full docs: docs.commentify.pro
- Checkout: Anystack
- Free core: GitHub
Requirements
- PHP 8.2+
- Laravel 12 or 13
- Filament v4 or v5 (optional, required for the admin plugins)
- Livewire 4 if you use the Blade UI
- Tailwind CSS v4 or Bootstrap 5 for the published views
Filament at a glance
Register both plugins. Pro is additive — it does not replace the free resources.
Navigation group: Commentify.
Installation
1. Core (always)
2. Pro (after purchase)
config/commentify-pro.php, asks which frontends you use (Livewire / React / Vue), which API guard, which spam checkers, and which models may receive comments. It is safe to re-run. Scripted:
config/commentify.php from the free package, merge those values into commentify-pro.core and delete the extra file. Until you do, Pro will not overlay core settings.
3. Register the Filament plugins
In your panel provider (for exampleapp/Providers/Filament/AdminPanelProvider.php):
CommentifyProPlugin.
Make a model commentable
Livewire (core UI)
Comment model, so they apply to Livewire automatically.
React / Vue (Pro)
Map a URL-safe alias — the API never accepts class names:resources/js/vendor/commentify/ and adds file: dependencies. Point Tailwind at that path so classes are not purged:
Filament — free plugin
Comments
View, edit, and delete comments. Likes count, replies count, reports count, commentable type, parent/child, soft deletes. Whenrequire_approval is on:
- Approve / Disapprove on each row
- Bulk approve / disapprove
- Filter by approval status (Approved / Pending / All)
Comment reports
Community reports from the thread kebab menu (spam, inappropriate, offensive, other). Review, dismiss, filter by status. Each visitor can report a comment once.
Commentify Settings
Toggle most core flags from the panel: CSS framework (Tailwind / Bootstrap), theme (light / dark / auto), sorting, reporting, notifications, markdown toolbar/preview, emoji picker, read-only, require approval. Guest commenting (allow_guests) stays in config.
Filament — Pro plugin
Moderation queue
Dedicated queue over the sameComment model. Navigation badge shows the pending count.
Filters: pending only, has reports, contains links, commentable type.
Spam log
Every non-allow spam verdict (review or deny): excerpt, checker, reasons, user id.
Not spam re-approves the matched held comment and submits ham to Akismet when a key is configured.
Moderation audit
Who did what:approve, unapprove, delete, ban_author, not_spam, pin, unpin.
Widgets
- Pending moderation stat
- Comments per day chart
Spam pipeline (Pro)
Every comment — Livewire or API — is inspected on create and on body edit.
Built-in checkers (run in order; worst verdict wins):
- heuristic — link caps, blocked terms/domains, duplicate window, trust after N approved comments. Stricter rules for guests.
- akismet —
AKISMET_KEY. Honours Akismet’s discard header. - toxicity — Google Perspective,
COMMENTIFY_PERSPECTIVE_KEY, hold/deny thresholds.
Usamamuneerchaudhary\CommentifyPro\Contracts\SpamChecker and listing the class in spam.checkers.
Configuration
Pro publishes one file:config/commentify-pro.php. Core Commentify keys live under core and are copied onto config('commentify') at boot.
HasUserAvatar on your user model and set core.user_model.
Comment bans: add HasCommentBan and a comment_banned_until column. Filament Pro’s Ban author uses it.
JSON API (Pro)
Prefixcommentify/api/v1 (configurable). Pair api.guard with api.middleware or writes return 401 while reads still work:
Stable error
code values: spam_rejected, read_only, comment_banned, already_reported, nesting_disabled, parent_mismatch, cannot_pin_reply.
Other Pro features
- Guests — name + email posting is a core MIT flag (
allow_guests). Pro adds stricter spam and API/SDK fields. Guests cannot edit or delete. - Mail — reply, @mention, thread subscriptions (
subscribe_to_replies), signed unsubscribe,php artisan commentify:digest-moderators. - Media — GIF / JPEG / PNG / WebP, per-role size and rate limits, optional S3 bucket.
- Reverb —
COMMENTIFY_REALTIME=truebroadcasts approved creates and likes oncommentify.{alias}.{id}. - Webhooks — queued JSON POSTs for
pending,report,spam_deny. - Badges & pins — author / staff / guest badges; one pinned parent per thread.
- Import —
php artisan commentify:import-disqusandcommentify:import-wordpress(idempotent viaimport_source+import_id; requiresallow_guests). - GDPR —
commentify:gdpr-export,commentify:gdpr-erase,commentify:gdpr-anonymize-ips.
Pricing
The React and Vue SDKs are included in the Composer package. One license covers PHP and JavaScript.

