Skip to content

Templatical Cloud

The self-hosted editor gives you everything you need to build and render email templates. Templatical Cloud adds the features teams need when shipping email tooling at scale — AI content generation, real-time collaboration, media management, template scoring, and more.

How It Works

Cloud features are activated by switching from init() to initCloud() when initializing the editor. The same visual editor you already know gets additional capabilities powered by the Templatical Cloud backend.

js
import { initCloud } from '@templatical/editor';

const editor = await initCloud({
  container: '#editor',
  auth: {
    url: '/api/templatical/token',
  },
});

All Cloud features communicate through authenticated API endpoints and WebSocket connections managed automatically by the SDK.

Features

FeatureDescription
AI AssistantGenerate email content from prompts, rewrite text, design-to-template conversion
CollaborationReal-time co-editing with live cursors and block locking
CommentsInline review threads on specific blocks
Media LibraryUpload, organize, and manage images with folders and search
Template ScoringAutomated quality checks for deliverability and accessibility
RenderingtoMjml() and toHtml() server-side, with a countdown GIF and video play button a browser cannot produce
Saved BlocksReusable block groups — one library per project, shared across your team with no backend to implement
TemplatesSaving, loading, autosave and the unsaved-changes guard, with no storage to run
Test EmailsSend test emails directly from the editor
Version HistoryBrowse, preview and restore past versions — an open contract Cloud implements
MCP IntegrationConnect AI agents to build and modify templates programmatically
Multi-TenantProject and tenant isolation with API keys
Headless APIFull programmatic access to templates, media, and rendering

Bringing your own

Cloud is a first-party implementation of the same provider contracts the open-source editor exposes — one editor component, one core, one header behind both entry points. Saved blocks and test emails can still be yours while Cloud handles the rest:

ts
await initCloud({ container, auth, savedBlocks: mine, testEmail: mine });

They mix safely because Cloud never independently uses either. The rest are refused outright, except templates, comments and versionHistory, which Cloud accepts for their configuration and events; a refused value passed from JavaScript is ignored with a console warning:

KeyWhat initCloud() does with it
templatesStorage stays Cloud's; configuration and events are yours. The id anchors collaboration, comments, AI rewrite, scoring and the server-side export, so initCloud() keeps load/create/save. The key still reaches the editor for its configuration and eventsautoSave, unsavedChangesGuard, nameField, onSaved, onCreated, onLoaded — with any storage methods named and ignored.
commentsStorage stays Cloud's; configuration and events are yours. A comment is keyed to a template id Cloud issued and its author is signed by the auth token, so initCloud() keeps its own list/create/update/delete/setResolved/subscribe. The key still reaches the editor for its eventsonCreated, onUpdated, onDeleted, onResolved, onUnresolved — with any storage methods named and ignored.
versionHistoryStorage stays Cloud's; events are yours. A version is keyed to a template id Cloud issued, and Cloud's own templates adapter records automatic versions as part of every save, so initCloud() keeps its own list/get/create/restore. The key still reaches the editor for its eventsonCreated, onRestored — with any storage methods named and ignored. There's no boolean or full-provider form here, unlike savedBlocks: the type is VersionHistoryOptions alone.
renderCloud renders independently for delivery — test email, scheduled sends and exports. A provider would change what you preview and export, never what Cloud sends.

There's no user key either — initCloud() fills it from the auth token's own claim, so a consumer-supplied identity could only disagree with the one the backend verifies.

To own the whole set, use init().

Pricing

Plans start at $99/month. All plans include the full editor, AI features, and collaboration.

Start Free Trial  ·  View Pricing  ·  Contact Sales