BuilderJS

The Ecommerce Email Template Builder Your Store App Embeds

If you're building a store-email feature, abandoned-cart designer, or order-confirmation editor inside a Shopify or WooCommerce app, you need a drag-drop canvas your merchants can actually use — not three months of building one from primitives. BuilderJS is an embeddable, framework-agnostic editor library (~140KB) that mounts in any DOM node: React, Vue, Svelte, Angular, Next.js, Laravel, or plain HTML. It builds both Outlook-safe HTML email and responsive web/landing markup, with 42 element types, 59 controls, and JSON-first save/load via getData() and load(). One honest boundary: BuilderJS is the editor your merchants design in — it produces the template markup. Your app or your chosen ESP brings the sending, the lists, and the deliverability. You own the source under a one-time CodeCanyon license (item 27146783), self-host it, and never pay per seat, per merchant, or per email.

Built for the emails ecommerce actually relies on

Stores live and die by transactional and lifecycle email: order confirmations, shipping updates, abandoned-cart nudges, back-in-stock alerts, and promo blasts. The hard part has never been the marketing logic — it's the template that renders correctly in Gmail, Apple Mail, and Outlook alike. BuilderJS solves the rendering half. Its EmailExportPipeline converts flexbox layouts to bulletproof tables, rasterizes SVG to PNG, injects @media mobile-stacking, and wraps MSO conditionals so Outlook behaves, then runs a CSS inliner so the final HTML survives clipping. The library ships 30+ templates and 200+ samples that have been Litmus-tested across 22 email clients, so your merchants start from markup that already works. You wire the output into your existing send path — your app's queue, your transactional API, or the merchant's connected ESP. BuilderJS builds the template; you bring the sending.

Drop it into your Shopify or WooCommerce app stack

BuilderJS is a DOM-mount bundle — dist/builder.js plus dist/builder.css — not a published npm React or Vue component. That distinction matters for how you integrate it. You mount it client-side into a container node: in React, inside useEffect; in Vue, onMounted; in Angular, ngAfterViewInit; in Svelte, onMount. For a Next.js admin built on the App Router, use a dynamic import with ssr:false and a 'use client' directive so it never runs on the server. Persisting a merchant's design is a clean round-trip: call getData() to get lossless JSON, POST it to your own route, and call load() to restore it later — no proprietary format lock-in, no schema you can't read. Because the bundle is framework-agnostic, the same editor works whether your store-app dashboard is React, a Laravel Blade view, or plain HTML, so you ship one editor across surfaces.

Customize and brand it without forking

Merchant-facing tools need to feel native to your app, and BuilderJS extends without touching its core. Register custom Elements, Widgets, and Controls through Builder.registerElement to expose store-specific blocks — a product card that pulls SKU, price, and image; a dynamic coupon block; a star-rating module for review emails. Skin the editor with themes to match your dashboard, and localize the merchant UI across 20+ locales including RTL, which matters when you sell into multiple regions. The library is multi-tenant capable via closure-captured configuration, so you can run isolated editor instances per merchant — but be clear-eyed about the boundary: BuilderJS gives you the editor, while your application owns tenant isolation, seat management, and billing. Vendor-neutral AI hooks are pluggable, so if you offer an AI copy or layout assist, you wire in your own provider rather than being locked to one.

Own the backend, own the bill

BuilderJS ships with reference PHP backends for save, upload, and auth against MySQL, SQLite, or S3. You copy them, you own them, and you adapt them — port the same contract to Node, Go, or Python if that's your stack. There's no required service in the loop: no SaaS dependency, no phone-home, no usage metering that throttles you on a busy Black Friday. Compare that to the embeddable-SaaS model. Unlayer's embeddable builder runs $250/mo (Launch), $750/mo (Scale), and $2,000/mo (Optimize), per its pricing page as of June 2026 (unlayer.com/pricing). The Stripo Plugin runs $100/mo (Startup) and $550/mo (Business), per its plugin page as of June 2026 (stripo.email/plugin). Those are recurring bills that scale with your success. BuilderJS is a one-time CodeCanyon license (item 27146783) — Regular $52 or Extended $99 — after which you self-host the source you own. See it live at builder.emotsy.com.

Frequently asked questions

Explore