The drag-drop canvas that ships inside every AuriusCRM workspace.
60+ widgets. Six-device responsive preview. CSS-variable theme swap. JSON-first export so your page survives any framework migration. Built on BuilderJS — the same engine running the public playground at builder.emotsy.com.
Drop a hero. Drop a form. Drop a YouTube embed. Done.
Every category covers the next thing you'd reach for — text and headings for narrative, media for proof, forms for capture, components for layout. No "build it yourself" required.
Need something custom? The widget SDK lets you ship your own widgets that drop into the palette next to the built-ins — same drag-drop UX, same JSON export.
Content
Heading · Paragraph · Blockquote · List · Definition list · Divider · Marked text · Eyebrow
Media
Image · Image link · Image grid · Hero image · Video · YouTube · Audio · Background
Layout
Hero · Cells · Container · Block · 1/2/3 column · Grid · Panel · Well · Jumbotron · Intro
Forms
Form · Form group · Input · Email · Number · Date · Checkbox · Radio · Select · Multiselect · Textarea
Buttons
Button · Submit · Cancel · Button group · Button toolbar · Icon button
Components
Navbar · Header · Footer · Social · User profile · Media object · Pricing table · Services list
Commerce
Product · Product list · Abandoned cart
Custom widgets
Ship your own components via the widget SDK. Render whatever, expose typed controls, drop into the palette.
Edit in any device. Render perfectly in all six.
The builder isn't desktop-first with a "mobile preview" bolted on. Every widget knows how it stacks at 320px and how it expands at 1920px. Edit in the size your audience actually uses.
Want to hide a section on mobile? One toggle. Want to swap a card-grid for a carousel on phone? Native. The responsive cell-stack rule kicks in at ≤600px so nothing breaks at the edges.
Swap a brand without re-saving a single page.
Every widget renders through CSS variables — --theme-primary, --theme-bg,
--theme-text, etc. Define a theme as a CSS file; switch themes by swapping the file.
Your existing pages don't change shape, just colour.
Ship one product. Sell to ten brands. Each tenant gets their own theme; the pages stay portable.
Your page is a JSON file. Forever.
No proprietary format. No "export to HTML and lose the structure". The page IS a JSON document. Save it to your DB, ship it to a CDN, render it client-side, render it server-side — all from the same canonical source.
When Next.js becomes Remix becomes whatever's next, you don't migrate pages. You point a new renderer at the same JSON. Pages survive framework churn.
{
"version": "1.0",
"theme": "aurius",
"sections": [
{
"type": "hero",
"props": {
"title": "Webinar: ship without breaking",
"subtitle": "Friday · 2pm UTC · 45 min",
"cta": { "label": "Reserve →", "href": "#form" }
}
},
{
"type": "cells",
"props": { "columns": 2, "gap": 24 },
"children": [
{ "type": "feature", "props": { "icon": "clock", "title": "45 minutes" } },
{ "type": "feature", "props": { "icon": "globe", "title": "Recording sent" } }
]
},
{
"type": "form",
"props": { "id": "form", "submit": "/api/lead" },
"children": [
{ "type": "input", "props": { "name": "email", "type": "email", "required": true } },
{ "type": "button", "props": { "label": "Reserve my seat" } }
]
}
]
}
One script tag. Any framework. Any host.
Need the builder inside your own SaaS? Drop a single script tag, mount on any div, capture the JSON on save. Works the same in React, Vue, Astro, plain HTML — because the builder is framework-agnostic by design.
Drop a hero. Drop a form. Ship the page.
The public playground at builder.emotsy.com is the fastest way to feel it. Open it in a new tab — drag widgets, swap themes, export JSON.