These flags live in config/commentify.php, or under core when Pro is installed. See Configuration.
Sorting
The dropdown offers newest, oldest, most liked, and most replied. Newest is the default.
enable_sorting set to false hides the dropdown and always uses newest. When a pinned_at column exists, pinned comments stay first.
Reporting
Choosing other asks for a note. Each user can report a comment once. Rows land in comment_reports. Review them in Filament.
Approval
Turned on, new comments save with is_approved = false and stay off the public thread until you approve them. Turned off, comments are approved on save. Toggle this from the Filament Commentify Settings page, or approve and disapprove from the Comments resource. Pending rows stay visible to their author.
Markdown composer
Comments are stored as Markdown and rendered with CommonMark. HTML in the source is stripped. Strikethrough and autolinks are enabled.
The toolbar inserts headings, bold, italic, strikethrough, quotes, code, links, lists, task lists, @ mentions, and horizontal rules. Preview uses the same renderer as the published comment. The emoji picker inserts the character at the cursor.
The picker follows the light, dark, or auto theme on both Tailwind and Bootstrap.
Read-only
The composer stops accepting posts. With Pro installed, API writes fail with 423 / read_only.
Lazy loading
The default keeps the thread in the first HTML response. Set lazy to true and the component renders a placeholder until it enters the viewport. A tag can override the config either way:
Filament Commentify Settings includes the same toggle.
Thread loader
eager loads max_depth levels of replies with nested eager loads. That is the default, and it matches the previous shape (two levels).
cte loads the same tree in one recursive query. It runs on MySQL 8+, MariaDB 10.2+, PostgreSQL, SQLite, and SQL Server. Any other value throws. Both loaders go through the Comment model, so a global scope on the host app, including a tenancy scope, applies to the page query and to both halves of the recursive query.
max_depth is clamped from 0 to 50. 0 does not preload replies. pagination_count is how many top-level comments appear per page (default 10).
Mentions
Type @ in a reply or edit to search users. Profile links use users_route_prefix, users_route_key, and user_profile_route. See Configuration.
Named threads
Pro only. The free package stores every comment on default. Pro adds a thread column so one record can hold more than one conversation.
List and create accept thread_name (max 64). Omit it and the API uses default. Each comment in the JSON includes thread_name.
A thread listed under threads with private set to true is visible to moderators and to the commentable owner. Everyone else gets a 403 on the Livewire thread and on list and create. allow_guests on that thread is read by Livewire. The JSON API still follows the global allow_guests and api.guest_comments flags.
Lock one record without turning on global read-only:
That row lives in commentify_thread_settings and wins over the config value for that record and thread name. Livewire then hides the composer. The global API read-only check still follows core.read_only. Last modified on November 1, 2026