sandywp / plugins / fluent-comments
FluentComments
AJAX Comments, Anti-Spam & Comment Email Notifications
AJAX comments with layered spam protection and no CAPTCHA. Threaded replies, load more, and 5 editable notification emails. Free, no pro version.
Ready in seconds.
v2.1.1 700+ installs WP 6.5+ PHP 7.4+

What you get inside
8 screens-
Comments load and post without reloading the page, with threaded replies and an inline reply form
-
The settings screen: which post types FluentComments runs on, and the rules every comment is held to
-
Every notification email in one place, each one switched on or off from the row
-
Write your own subject and body in the WordPress editor, with placeholders for the comment, post and recipient
-
Every email previewed against a real comment from your own site before it goes out
-
One template design - logo, colors, footer and From address - shared by every email
-
The approval notice as the commenter receives it
-
The whole screen in dark mode, remembered per browser
About this plugin
FluentComments replaces the WordPress comment form with a fast, modern, AJAX powered one, and it stops comment spam before it ever reaches your moderation queue.
Comments post without a page reload. Replies thread properly. Spam is blocked by several layers working together, so your readers never have to solve a CAPTCHA. And every email your site sends because somebody commented, whether that email goes to the commenter, the post author or you, can be rewritten in your own words with your own logo and colors.
FluentComments works on classic themes, block (FSE) themes and page builders. Every feature is free. There is no pro version, no upsell and no paid add-on. The whole plugin is open source on GitHub.
FluentComments at a glance
- AJAX comments. Post a comment or a reply with no page reload.
- Comment spam protection. Signed tokens, a honeypot, a timing check and rate limits, with no CAPTCHA for your readers.
- Threaded replies that follow your WordPress discussion depth.
- “Load more” pagination instead of 400 comments in one request.
- Five comment notification emails. Each one can be edited, previewed and switched off.
- An email template designer. Your logo, your colors, your footer and your From address, shared by all five.
- Block (FSE) theme support with a real block, plus a
[fluent_comments]shortcode for page builders. - Cache friendly. There is no security nonce anywhere in the plugin, so a cached comment form never expires.
- Light, dark and system appearance for the admin screen.
- Developer friendly. A small, documented set of actions and filters.
- 100% free and open source, GPLv2.
Why FluentComments
WordPress comments are a genuinely good feature buried under a form from 2010 and a spam problem that most people solve by turning comments off. FluentComments fixes both halves: how comments look and feel, and the flood of junk behind them.
⚡ Instant, AJAX powered commenting
- Post a comment or a reply without reloading the page
- Threaded replies that follow your WordPress discussion depth setting
- “Load more” pagination instead of dumping 400 comments into one request
- Gravatar avatars, relative timestamps and a clean, modern card layout
- Fully responsive, and styled with CSS custom properties so your theme can restyle every part of it
- The whole interface is translatable
🛡️ Comment spam protection, without a CAPTCHA
Spam is scored, not guessed at. A borderline comment is held for moderation, and only a conclusive failure is turned away. Nobody is asked to identify a traffic light.
- Signed submission tokens. Every comment needs a short lived, HMAC signed token that is issued in a separate request. A bot that posts blindly at your site never gets one.
- Single use tokens, bound to a session cookie. A token cannot be replayed, or lifted from another visitor’s page.
- A honeypot field whose name comes from your site’s own salt. It is different on every install, so it cannot be hard coded against.
- A timing check. A form submitted faster than a human could type is scored as suspicious.
- Rate limiting, keyed per session first and per IP only as a backstop. An office or a CDN exit address is never counted as one person.
- Native form rejection. Once FluentComments handles a post type, anything posted to the default WordPress endpoint without our fields is refused. Bots that skip your page and POST straight to
wp-comments-post.phpget nothing. - Every threshold can be adjusted with a filter, and Akismet keeps working alongside it.
✉️ Five comment notification emails, all yours to rewrite
FluentComments owns every notification your site sends about a comment, and puts them all on one screen:
- A held comment was approved. Sent by FluentComments to the commenter.
- Someone replied in their thread. Sent to everyone above the reply.
- A comment landed on their post. Sent to the post author.
- A comment was posted. WordPress’s own notice, rewritten.
- A comment is waiting for review. WordPress’s own moderation notice, rewritten.
- Switch each one on or off from its own row. The switch takes effect immediately, with no save button.
- Edit the subject and body in a real WordPress editor. Smartcodes like
{{comment.author}},{{post.title}},{{receiver.name}}and{{comment.content}}are filled in when the mail goes out. - Preview an email against a real comment from your site before you send anything.
- A shared template designer for your logo, your colors, your footer text, and the From and Reply-To addresses.
- WordPress’s own two notices are left completely alone until you explicitly ask to replace them. Upgrading the plugin never quietly changes an email your site was already sending.
🧩 Block themes, classic themes, page builders
- A FluentComments block for the Site Editor, with its own title, avatar, color and border radius controls
- A
[fluent_comments]shortcode that works anywhere, including page builders - On a classic theme it takes over
comments_templateautomatically, so there is nothing to place - On a block theme the plugin never rewrites your templates for you. Instead, the settings screen works out which template each of your post types renders through, follows its template parts and patterns, and tells you exactly which post types still need the block placed
⚙️ Settings that don’t fight WordPress
The settings screen puts the WordPress Discussion options that actually matter next to the plugin’s own: the moderation word lists, the link limit, threading depth, who may comment, and closing comments on old posts.
They are read and written in place as real WordPress options, never copied. This screen and Settings › Discussion can never disagree with each other.
🚀 Built for cached sites
Assume every page on your site is served from a full page cache to somebody else. FluentComments does.
- Nothing visitor specific is ever printed into the HTML. No identity, no token, and no security nonce anywhere in the plugin, so a comment form served from cache can never fail with a stale security token.
- The first page of comments is rendered into the page itself, so a visitor who only reads never triggers an uncached request.
- Everything per visitor is fetched on intent, when someone actually goes to comment.
🧑💻 For developers
A small, documented extension API that works identically on both front ends:
fluent_comments/form_fields: render your own fields into the formfluent_comments/validate_submission: reject a submission with aWP_Errorfluent_comments/comment_data: adjust the comment before it reaches WordPressfluent_comments/spam_score: nudge the score up or downfluent_comments/before_processandfluent_comments/after_added_comment: act around the insert
Every comment goes through wp_handle_comment_submission(), the same function wp-comments-post.php uses, so core’s validation, moderation rules and comment_post hook all behave exactly as they always did.
100% free, forever
No pro version. No locked features. No “upgrade to unlock”. Every feature described on this page is in the plugin you are about to install, and the source is on GitHub under GPLv2.
Contribute on GitHub
FluentComments is fully open source. If you want to contribute, or just report a bug, you are very welcome. The repository is on GitHub.
Other plugins by the WPManageNinja team
- FluentCart – Simple and Powerful eCommerce Plugin for WordPress
- Fluent Forms – Fastest Contact Form Builder Plugin for WordPress
- FluentSMTP – The Most Advanced SMTP, SES Plugin for WordPress
- FluentCRM – Email Marketing Automation and CRM Plugin for WordPress
- Ninja Tables – Best WP DataTables Plugin for WordPress
Questions
- Is FluentComments really free? Is there a pro version?
It is free, and there is no pro version. Every feature listed on this page is in the free plugin: the spam protection, all five emails, the template designer and the block. Nothing is held back, and the whole thing is GPLv2 open source on GitHub.
- How does FluentComments stop comment spam without a CAPTCHA?
By making the submission itself expensive to fake. Posting a comment requires a short lived, cryptographically signed token that is issued in a separate request and tied to a session cookie, so it cannot be replayed or reused. On top of that there is a honeypot field with an install specific name, a minimum time between opening the form and submitting it, and rate limiting keyed per session with a per IP backstop. Anything posted straight to the default WordPress endpoint without our fields is refused outright. Suspicious submissions are scored and held for moderation rather than thrown away, and every threshold can be changed with a filter.
- Do I still need reCAPTCHA or a CAPTCHA plugin?
No. FluentComments is built so your readers never have to prove they are human. The checks happen between the browser and your server, not in front of the person trying to leave a comment.
- Does it work with Akismet?
Yes. Akismet inspects the comment itself and needs nothing from the form, so it runs normally alongside FluentComments.
- What if I use another anti-spam or CAPTCHA plugin on my comment form?
FluentComments renders its own comment form, so a field another plugin wants to add, like a CAPTCHA or an extra question, is never printed on the page. Because nobody could fill that field in, running its validator anyway would reject every comment on your site. So those validators are skipped for the duration of a FluentComments submission. If you want to keep another plugin’s check, add its callback to the
fluent_comments/allowed_comment_hooksfilter and render its field with thefluent_comments/form_fieldsaction.- Does it work with block (FSE) themes?
Yes. Add the FluentComments block in the Site Editor, or use the
[fluent_comments]shortcode. The plugin never edits your templates on your behalf. But the settings screen does work out which template each post type renders through, looks inside it and its template parts, and tells you which ones still need the block.- Does it work with Elementor, Divi, Bricks and other page builders?
Yes. Drop the
[fluent_comments]shortcode into any builder’s shortcode or text widget and the full comment list and form render there.- Will it work with my caching plugin?
Yes, and it is designed for it. Nothing visitor specific is printed into the page, so a cached comment form is still a valid one. There is no security nonce anywhere in the plugin, which means a form served from cache can never fail with the “your session has expired” error that nonce based forms hit. Everything per visitor is fetched on demand, only when someone actually goes to comment.
sandywp / also on the shelf
Try another plugin
4.7 · 60K+ installs
Advanced AJAX-powered WordPress comments plugin with live commenting, comment voting, inline feedback, social login, custom…
4.8 · 5K+ installs
AnyComment is blazing-fast commenting plugin based on React for WordPress.
Comment Edit Core – Simple Comment Editing
4.8 · 2K+ installs
Allow your users to edit their comments for a period of time. Adjust the comment timer and save some admin headaches.
Spin up a real WordPress site in seconds.
Test plugins, build a demo, hand a client a link — then squash it and start again. No local setup, no Docker.