Extensions
Add what you need. Nothing you don’t.
Extensions bolt new behaviour onto Total CMS — Twig functions, CLI commands, routes, admin screens, event listeners — each one sandboxed behind permissions you control. Everything below already ships in the download. There is nothing to install; you enable what you want and leave the rest off.
Protect
Gate a page behind a numeric passcode. Visitors enter a code to unlock and a cookie remembers them for 7 days. For client previews and soft launches.
totalcms/protect
Maintenance
Per-page 503 maintenance mode. Take individual pages offline with a custom message while the rest of the site stays up. Admins bypass automatically.
totalcms/maintenance
Scheduled
Time-window gating. Renders a page only between a configured start and end time. For holiday campaigns, embargoed announcements and time-limited sales.
totalcms/scheduled
A/B Split
Render an alternate template at the same URL for a percentage of visitors. Test layout, copy or CTA variations without changing the page URL.
totalcms/ab-split
Pushover Notifications Pro
Send push notifications through Pushover when a form is submitted. Supports Twig templates in messages, image attachments, priority levels and delivery groups.
totalcms/pushover
Algolia Search Beta Pro
Hybrid keyword and neural search backed by Algolia. Pushes content to Algolia on save and routes the MCP search tools through it. Needs an Algolia account.
totalcms/algolia-search
How They Work
Permissions you actually control.
An extension declares nothing about its own privileges. Total CMS detects what it really registered — routes, Twig functions, CLI commands, event listeners — and turns each one into a toggle you can switch off without uninstalling.
Capabilities, not promises
Permissions come from what the code actually did at registration, not from what its manifest claims. An extension cannot grant itself reach it never asked for.
A broken one can’t take the site down
Every extension boots inside its own try/catch. A failure is logged, recorded, and the extension is skipped — the rest of your site carries on serving.
No silent overrides
Extensions cannot shadow core Twig functions or built-in CLI commands, and collisions between two extensions are reported rather than resolved behind your back.
Build Your Own
The extension API is the same one we use.
Every extension above is built on the public extension API — there is no private back door. The starter repo demonstrates every extension point, and the CLI manages them from the terminal.
Start from the template
The extension starter is a working extension that exercises every extension point, ready to clone and rename.
Read the reference
The extension points reference covers routes, Twig, CLI, admin nav, dashboard widgets, field types, event listeners, and assets.
Manage from the CLI
Use tcms extension:list, enable, disable and remove to script installs and keep environments in step.