Retour au classement

usewaypoint/email-builder-js

TypeScriptemailbuilderjs.com

A free and open-source block-based email template builder.

developer-toolsemailemail-marketingemail-templateemailjsno-codetransactional-emailsamazonsesemailapisendgridemail-editoremail-template-builder
Croissance des étoiles
Étoiles
1.7k
Forks
745
Croissance hebdomadaire
Issues
46
5001k1.5k
févr. 2024nov. 2024sept. 2025juil. 2026
Artefactsnpmnpm install email-builder-js
README

EmailBuilder.js

Demo / Playground ·  EmailBuilderJS.com ·  GitHub

Introduction

EmailBuilder.js is a free and open-source email template builder for developers. Build emails faster than ever with clean JSON or HTML output that render well across clients and devices.

Use our playground or learn more about how to get started using EmailBuilder.js.

Image of builder

Image of designer


Build simple welcome emails to complex reports

Use a no-code builder that is flexible enough to create a wide variety of template designs – from simple welcome emails to complex reports.

Image of example templates

Sample templates available in the playground:


Why?

It's finally time to stop using 90's style HTML and CSS to build product emails. EmailBuilder.js takes inspiration from editor.js and email component libraries and puts them into an easy to use no-code builder to that allow the entire team to build emails.

Since the builder is completely free and open source, teams can self-host the builder and extend as needed.


Built-in blocks

Each block is it's own npm package that can be included in the builder. These are the ones that are built-in:


Email client support

All blocks are tested and supported by modern email clients (on both desktop and mobile) including: Gmail, Apple Mail, Outlook, Yahoo! Mail, HEY and Superhuman.

Image of mobile rendering

Email builder output

The email builder can output to a clean JSON or raw HTML. You can see this from the playground by simply clicking on the HTML or JSON tabs in the builder.

Image of JSON in builder


Using EmailBuilder.js

Install the package in your project:

npm install --save @usewaypoint/email-builder

Given an EmailBuilder.js configuration (the JSON output of the builder):

import { TReaderDocument } from '@usewaypoint/email-builder';

const CONFIGURATION: TReaderDocument = {
  root: {
    type: 'EmailLayout',
    data: {
      backdropColor: '#F8F8F8',
      canvasColor: '#FFFFFF',
      textColor: '#242424',
      fontFamily: 'MODERN_SANS',
      childrenIds: ['block-1709578146127'],
    },
  },
  'block-1709578146127': {
    type: 'Text',
    data: {
      style: {
        fontWeight: 'normal',
        padding: {
          top: 16,
          bottom: 16,
          right: 24,
          left: 24,
        },
      },
      props: {
        text: 'Hello world',
      },
    },
  },
};

You can render the EmailBuilder.js configuration to an HTML email string:

import { renderToStaticMarkup } from '@usewaypoint/email-builder';

const string = renderToStaticMarkup(CONFIGURATION, { rootBlockId: 'root' });

Or you can render the EmailBuilder.js configuration by using the <Reader /> React component:

import { Reader } from '@usewaypoint/email-builder';

<Reader document={CONFIGURATION} rootBlockId="root" />;

Sending emails

In most cases, you'll want to take the EmailBuilder.js configuration, render it to HTML, and then send it as an email. Here are a couple of examples on how you can do this using the same configuration from the examples above.


Sending through nodemailer

import { renderToStaticMarkup } from '@usewaypoint/email-builder';
import nodemailer from "nodemailer";

// Replace this with your transport configuration
const transportConfig = {}
const transporter = nodemailer.createTransport(transportConfig);

// Replace this with the JSON for your Reader document
const CONFIGURATION: TReaderDocument = {}

await transporter.sendMail({
  from: 'no-reply@example.com'
  to: 'friend@example.com',
  subject: 'Hello',
  html: renderToStaticMarkup(CONFIGURATION, { rootBlockId: 'root' }),
});

Sending through an email API

We'll use Waypoint for this example, however, you can use any email API like Amazon SES, SendGrid, or MailGun.

import axios from 'axios';

import { renderToStaticMarkup } from '@usewaypoint/email-builder';

// Replace this with the JSON for your Reader document
const CONFIGURATION: TReaderDocument = {}

await axios({
  method: 'post',
  url: 'https://live.waypointapi.com/v1/email_messages',
  headers: {
    'Content-Type': 'application/json',
  },
  auth: {
    username: API_KEY_USERNAME,
    password: API_KEY_PASSWORD,
  },

  data: {
    from: 'no-reply@example.com'
    to: 'friend@example.com',
    subject: 'Hello',
    bodyHtml: renderToStaticMarkup(CONFIGURATION, { rootBlockId: 'root' }),
  },
});

Self hosting the Editor

Fork this repository and use one of the examples in the examples directory as an example for self-hosting.

Quick start (Vite + MUI)

  1. Fork this repository.
  2. Open up directory in terminal.
  3. Go to the editor-sample package: cd examples/vite-emailbuilder-mui
  4. Install packages: npm install
  5. Run the server: npx vite
  6. Open in browser: http://localhost:5173/email-builder-js/

Contribute

Feel free to report any bug on the issues page. If possible, please add steps, information, screenshots, or videos to help us reproduce them.

If you are looking to provide code contribututions to EmailBuilder.js, please fork the repository and create a new pull request. We will check your code closely and provide feedback.




Brought to you by Waypoint

EmailBuilder.js is the community version of our much-loved no-code template builder on Waypoint. If you are looking for a better collaboration experience for your team, check out Waypoint's email API with a hosted template builder with dynamic LiquidJS variables, drag and drop, reusable layouts, loops, and additional blocks.


Looking for something special?

Need special consultation, a one-off feature, integration, or something else for your business? We can help or put you in touch with someone that can – contact us at support@usewaypoint.com and share your details.

Dépôts similaires
affaan-m/ECC

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

JavaScriptnpmMIT Licenseai-agentsanthropic
ecc.tools
231.9k35.4k
puppeteer/puppeteer

JavaScript API for Chrome and Firefox

TypeScriptnpmApache License 2.0headless-chrometesting
pptr.dev
95.3k9.5k
Graphify-Labs/graphify

Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.

PythonPyPIMIT Licenseclaude-codegraphrag
graphify.com
93.3k9k
DietrichGebert/ponytail

Makes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.

JavaScriptnpmMIT Licenseagent-skillsai-agents
ponytail.dev
87.4k4.8k
OpenHands/OpenHands

🙌 OpenHands: AI-Driven Development

PythonPyPIOtheragentartificial-intelligence
openhands.dev
81.6k10.4k
hoppscotch/hoppscotch

Open-Source API Development Ecosystem • https://hoppscotch.io • Offline, On-Prem & Cloud • Web, Desktop & CLI • Open-Source Alternative to Postman, Insomnia

TypeScriptnpmMIT Licenseapiapi-client
hoppscotch.io
79.8k6k
rtk-ai/rtk

CLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies

Rustcrates.ioApache License 2.0agentic-codingai-coding
rtk-ai.app
72.4k4.5k
daytonaio/daytona

Daytona is a Secure and Elastic Infrastructure for Running AI-Generated Code

developer-toolsagentic-workflow
daytona.io
72.2k5.7k
ComposioHQ/awesome-claude-skills

A curated list of awesome Claude Skills, resources, and tools for customizing Claude AI workflows

PythonPyPIclaudeclaude-code
68.4k7.8k
localstack/localstack

💻 A fully functional local AWS cloud stack. Develop and test your cloud & Serverless apps offline

PythonPyPIOtherawslocalstack
localstack.cloud
65.1k4.8k
All-Hands-AI/OpenHands

🙌 OpenHands: Code Less, Make More

PythonPyPIMIT Licenseagentartificial-intelligence
all-hands.dev
49.7k5.5k
GitHubDaily/GitHubDaily

坚持分享 GitHub 上高质量、有趣实用的开源技术教程、开发者工具、编程网站、技术资讯。A list cool, interesting projects of GitHub.

githubopen-source
githubdaily.com
47.1k4.7k