Plugins are the beating heart.
A curated library ships free with every install. Premium plugins unlock more power. Build your own in three files — no revenue share, no restrictions.
Six free plugins. Zero strings attached.
Todo
Task manager with priorities, status tracking, and due dates. Simple, focused, always there.
View plugin →Notes
Free-form notes with categories, tags, and full-text search. Perfect for a personal knowledge base.
View plugin →Contacts
Full CRM — groups, favourites, tags, CSV import/export. A proper contact manager, completely free.
View plugin →Site Search
Full-text ⌘K search with weighted results and instant suggestions. Ships with every install.
View plugin →Theme Switcher
28 themes with live preview and one-click switching. Visitors can pick their own, or follow your default.
View plugin →Garage
Vehicle management with service history, MOT reminders, and document storage. A real-world domain plugin example.
View plugin →Custom, scoped, and deployed with you.
The multi-site supervisor. Route multiple domains to their own isolated sites — each with its own content, plugins, theme, and configuration — all managed from a single admin panel. Built for agencies and organisations running multiple brands, clients, or regional sites from one installation.
Build. Ship. Sell.
Three files. Full Fastify 5 access. A built-in Code Editor in the admin panel. Zero revenue share. Distribute your own plugins through the built-in store — you keep everything you charge. From idea to production in an afternoon. From production to reseller in a month.
This isn't a walled garden. It's real Node.js, real Fastify, real server code — with a proper plugin API that hooks into every lifecycle event and lets you register shortcodes, routes, admin views, and storage adapters without forking the core.

plugin.json for the manifest. plugin.js for the Fastify plugin. config.js for defaults. That's it. No scaffolding generator, no build step, no config hell. Drop a folder, restart, done.
Edit plugin source directly from the admin panel — syntax highlighting, autocomplete, inline docs, and live reload. No SSH, no deploy pipeline, no leaving the CMS. Save and the plugin restarts itself.
Routes, hooks, middleware, decorators, request lifecycle — the entire Fastify 5 API is yours. Use any npm package. Talk to any database. Hit any third-party service. If you can do it in Node, you can do it in a Domma plugin.
form:submitted, collection:entryCreated, content:pageUpdated, user:loggedIn — plus a registerHook API for your own events. Build workflows, integrations, notifications, automations — no polling, no cron, no glue code.
Ship your plugin through the built-in plugin store. Free, paid, freemium, licence-gated, your call. Other Domma installations discover and install with one click. Updates handled. Users managed. You own the relationship.
No commission. No platform cut. No revenue share on plugin sales. You set the price, you take the payment, you keep every penny. Your plugins, your terms, your customers — forever.
Three files. Full access. Zero boilerplate.
{
"name": "my-plugin",
"displayName": "My Plugin",
"version": "1.0.0",
"icon": "star",
"description": "A plugin that does something useful.",
"author": "You",
"tier": "free"
}export default async function (fastify, opts) {
// Register a custom shortcode
fastify.cms.registerShortcode('hello', (attrs) => {
return 'Hello, ' + (attrs.name || 'world') + '!'
})
// React to form submissions
fastify.cms.on('form:submitted', async (data) => {
console.log('New submission:', data.formSlug)
})
// Add a custom route
fastify.get('/api/my-plugin/status', async () => {
return { ok: true, version: '1.0.0' }
})
}