
FluentComments – AJAX Comments, Anti-Spam & Comment Email Notifications
by Shahjahan Jewel
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
Screenshots

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