Drag & Drop
Nutzer erstellen Layouts, indem sie Blöcke in der gewünschten Reihenfolge auf die Leinwand verschieben.
PageKit — der selbst gehostete GrapesJS-Website-Builder, als Quellcode. Early Access sichern
Geben Sie Ihren Nutzern eine visuelle Möglichkeit, responsive E-Mail-Vorlagen zu erstellen – wiederverwendbare Blöcke, MJML, benutzerdefinierte Komponenten und produktionsbereiten HTML-Export – alles innerhalb Ihres eigenen Produkts.
Die Schleife, in der deine Nutzer leben
26k+
GitHub-Sterne
100+
Plugins auf GJS.Market
10 years
Aktive Entwicklung
BSD-3-Clause
Kernlizenz
Öffnen Sie eine Vorlage vom Regal, ändern Sie sie und speichern Sie sie dann als neue. Das Regal wächst um eins. Diese Schleife – nicht die einzelnen Designs – ist das, was ein E-Mail-Vorlagen-Generator Ihren Nutzern bietet.
Vorlagenbibliothek
Füge einen Block hinzu
Dein Logo
Willkommen an Bord, {{ user.first_name }}
So bringen Sie Ihr erstes Projekt zum Laufen.
Öffnen Sie Ihr Dashboard
Abmelden · Präferenzen verwalten
Merge-Tags bleiben unberührt – dein Renderer löst sie pro Empfänger zum Senden auf.
Die obige Demo ist ein Modell der Schleife. Das ist GrapesJS selbst, das das offizielle MJML-Preset ausführt – nur geladen, wenn man danach fragt, daher kostet es diese Seite bis dahin nichts.
In einem neuen Tab öffnenDie MJML-Editor-Demo, die vom GrapesJS-Projekt selbst veröffentlicht wurde. Füge einen Abschnitt hinzu, bearbeite den Text und schau dir dann das generierte Markup an.
Lädt ein iframe von der eigenen Website der Demo ein.
Auf GJS.Market
MJML-Editor ist als Produkt erhältlich
Ein E-Mail-Vorlagen-Builder ermöglicht es Nutzern, E-Mail-Layouts visuell zu erstellen und zu ändern, anstatt HTML-Markup manuell zu schreiben. Eine Vorlagen-*Bibliothek* liefert fertige Entwürfe; ein Vorlage-*Builder* bietet die Möglichkeit, sie zu erstellen – und sie auch nach dem Versand weiterzuerstellen.
Schreibe das HTML
Tabellen, Inline-Stile, bedingte Kommentare
Testen Sie clientsübergreifend
Beim Schreiben kann man das Ergebnis nicht sehen
Gib es dem Marketing
als Datei oder in ein Werkzeug eingefügt
Jede Veränderung kommt zu dir zurück
ein Entwicklerticket pro Anpassung
Eine Vorlage, ein Besitzer, ein Engpass.
Öffne einen Ausgangspunkt
aus dem Regal oder leerer
Visuell bearbeiten
Das Ergebnis ist die ganze Zeit auf dem Bildschirm zu sehen
Speichere es als Vorlage
Eine Zeile, die Ihr Kunde besitzt
Wiederverwendung und Version
Kein Ticket, kein Entwickler
Viele Vorlagen, im Besitz der Leute, die sie schicken.
Vorlagen geben deinen Nutzern einen Ausgangspunkt. Ein Builder gibt ihnen Kontrolle.
Eine Bibliothek ist ein Regal mit einer Decke: Es deckt das ab, wofür es gebaut wurde, und Anfragen oberhalb dieser Linie haben keinen Ausweg. Ein Bauunternehmer ist eine Schleife – und das Regal wächst jedes Mal, wenn jemand darum herumgeht.
"Wir brauchen bis Freitag eine saubere Willkommens-E-Mail."
Vorlagenbibliothek
Gelöst. Genau dafür ist eine gute Bibliothek gedacht – wähle eine, ändere die Wörter, schicke ab.
Vorlagenbauer
Auch gelöst, von denselben Ausgangspunkten aus. Ein Bauer wird mit einer Bibliothek darin verschifft.
"Jeder Mieter braucht sein eigenes rechtliches Fundament."
Vorlagenbibliothek
Ein gemeinsamer Footer oder ein Fork jeder Vorlage pro Tenant.
Vorlagenbauer
Ein-Fuß-Block, einmal pro Tenant gespeichert und in deren Vorlagen wiederverwendet.
"Legen Sie die tatsächliche Bestellung des Kunden in den Kassenbon."
Vorlagenbibliothek
Statischer Platzhalter-Text. Die Daten müssen stromabwärts eingefügt werden.
Vorlagenbauer
Eine Komponente, die an dein Bestellmodell gebunden ist, als Block editierbar und beim Senden aufgelöst wird.
"Stellt die Version wieder, die wir letzten Dienstag geschickt haben."
Vorlagenbibliothek
Das, womit die Datei überschrieben wurde, ist das, was du hast.
Vorlagenbauer
Eine Versionsreihe. Wiederherstellung ist eine Abfrage, kein archäologisches Projekt.
"Lassen Sie unsere Kunden ihre eigenen bauen, ohne uns E-Mails zu schicken."
Vorlagenbibliothek
Nicht das, was eine Bibliothek tut – sie hat keine Autorenoberfläche.
Vorlagenbauer
Der ganze Sinn. Deine Nutzer erstellen und behalten Vorlagen, die du nie siehst.
Schick die Bibliothek. Dann verschick das Ding, das mehr von ihnen macht.
Die Bearbeitungsfläche, die deine Nutzer bekommen, und die Teile davon, die du kontrollierst.
Nutzer erstellen Layouts, indem sie Blöcke in der gewünschten Reihenfolge auf die Leinwand verschieben.
Text, Bilder und Links werden an Ort und Stelle bearbeitet, wobei das gerenderte Ergebnis die ganze Zeit auf dem Bildschirm ist.
Sektionen, die deine Nutzer speichern, speichern und danach in eine beliebige Vorlage einfügen.
Schauen Sie das Layout an und passen Sie das Layout bei den Breiten an, die für E-Mails wichtig sind, während Sie bearbeiten.
Schreibe gegen mjml, wo du möchtest, dass responsives Markup für dich generiert wird, statt handverwaltet.
Erstellen Sie das E-Mail-HTML, das Ihr Lieferworkflow bereits erwartet.
Verwalten Sie die Bilder, auf die eine Vorlage verweist, in dem Store, den Sie bereits verwenden.
Füge editierbare Komponenten hinzu, die die Daten und Arbeitsabläufe deines eigenen Produkts widerspiegeln.
Ein vollständiger Historik-Stack, also ist es sicher, mit einer fremden Vorlage zu experimentieren.
Gib den Nutzern eine Bibliothek von Abschnitten, aus denen sie zusammenstellen können, anstatt sie jede E-Mail von einer leeren Leinwand starten zu lassen. Jede ist eine Blockdefinition, die man einmal registriert.
Logo, Text im Vortext und die Navigationszeile, falls du eine verwendest.
Die Eröffnungsrede und der erste Aufruf zum Handeln.
Eine Reihe oder ein Raster von Artikeln, gebunden an deinen Katalog, wo du sie haben möchtest.
Kurze Icon-und-Text-Zeilen für Release Notes und Onboarding.
Planvergleich, der darauf ausgelegt ist, einen tabellenbasierten Renderer zu überstehen.
Ein Zitat, eine Quellenangabe und ein optionaler Avatar.
Eine kugelsichere Taste, die ohne Hintergrundbilder rendert.
Adresse, Einstellungslink und der Link zum Abmelden sind Sie gesetzlich verpflichtet anzugeben.
Standardblöcke decken das Layout ab. Was den Bauunternehmer zu Ihrem macht, sind die Komponenten, die Ihre Daten kennen – eine Bestellung, ein Abonnement, eine Buchung, eine Empfehlung.
Standard
Die Primitive, die jede E-Mail braucht. Sie kommen mit dem Editor.
Komponiert
Deine Standardblöcke, einmal zusammengebaut und zur Wiederverwendung registriert.
Gebunden
Komponenten mit Eigenschaften, die deine Nutzer setzen, und Merge-Tags, die dein Renderer pro Empfänger auflöst.
Der Editor rendert einen Platzhalter, während die Vorlage geschrieben wird. Dein Backend tauscht die echten Werte beim Senden aus.
// A component bound to your own model. The editor renders a placeholder; your
// backend swaps in the real order at send time, per recipient.
editor.DomComponents.addType('order-summary', {
model: {
defaults: {
droppable: false,
// Traits are the fields the person editing the template can set.
traits: [
{ name: 'orderId', label: 'Order', type: 'text' },
{ name: 'showTax', label: 'Show tax line', type: 'checkbox' },
],
// Merge tags survive export untouched and are resolved by your renderer.
components: '<mj-text>{{ order.total }}</mj-text>',
},
},
});In einem Vorlagensystem unterscheiden sich Vorlagen danach, wer sie besitzt und wer sie ändern darf – nicht nur danach, was sie sagen. Das sind die Klassen, die es wert sind, von Anfang an modelliert zu werden.
Besitzklassen
Dies sind Eigentümerklassen in einem Vorlagensystem, keine Produkte zum Verkauf. GJS.Market listet Editor-Plugins und Presets auf; es verkauft keine E-Mail-Vorlagen.
Schauen Sie das Layout in der tatsächlichen Breite an, in denen die E-Mail tatsächlich rendert, während Sie noch bearbeiten. 600px ist die langjährige Konvention für die Spalte im Hauptteil – eine Konvention, keine Spezifikation.
Was Benutzer pro Breite ändern können
Zwei Spalten auf einem Desktop-Client, gestapelt auf einem Handy – entschieden in der Vorlage, nicht durch das Raten des Empfängers.
E-Mail-Clients implementieren HTML und CSS unterschiedlich und haben das schon immer getan. Ein Visual Builder entfernt das nicht – er standardisiert den Autorenschritt, sodass jedes Mal das gleiche bekannte Markup erscheint.
| Auftraggeber | Was es anders macht | Was der Bauunternehmer dagegen tut |
|---|---|---|
| Gmail | Strips <style> blockiert in einigen Kontexten, einschließlich der Gmail-Mobile-Apps mit Nicht-Gmail-Konten. | Senden Sie Inline-Stile aus, anstatt sich auf ein Stylesheet zu verlassen, das die Reise überlebt hat. |
| Outlook (Windows) | Rendert mit der Word-Engine: keine Flexbox, kein Raster, und der Grenzradius auf einer Tabellen-Zelle wird weggelassen. | Erstelle tabellenbasierte Layouts und kugelsichere Buttons statt CSS-Layouts. |
| Apple Mail | Der standardmäßigste der vier; auch der am ehesten geeignete Layout, der anderswo nur zufällig funktionierte. | Vorschau bei jeder Breite während des Bearbeitens, damit das Layout bewusst und nicht nebensächlich ist. |
| Yahoo Mail | Historisch unvereinbar mit Medienanfragen; das aktuelle Verhalten ist Not publicly documented. | Bevorzuge Layouts, die auf eine einzige lesbare Spalte ohne Medienanfrage degradieren. |
Einschränkungen, wie sie auf 2026-08-28 verifiziert sind. Verhaltensänderungen; Überprüfen Sie caniemail.com den aktuellen Zustand und testen Sie Produktions-E-Mails mit den Kunden, die Ihr eigenes Publikum tatsächlich nutzt.
mjml existiert, um responsives E-Mail-Markup zu etwas zu machen, das du selbst erstellst, anstatt es manuell zu warten. GrapesJS kann mit grapesjs-mjml erweitert werden, um eine visuelle Bearbeitungsfläche darauf zu legen.
MJML ist kompakt genug, um es in einer Pull Request zu überprüfen, was rohes E-Mail-HTML nicht ist.
Der Compiler gibt das Tischgerüst und Medienanfragen aus, sodass niemand sie von Hand schreibt.
Behalte das MJML neben dem Projekt-JSON, damit eine Vorlage als Quelle bearbeitbar bleibt.
Die Frage, die entscheidet, ob du einen Builder oder einen Viewer hast: Welche Zeilen existieren, nachdem ein Nutzer auf Speichern klickt? Drei Tabellen decken das ab.
templates
Eine Zeile pro Vorlage, auf einen Mieter zugeschnitten.
template_versions
Nur Anhänge. Die Wiederherstellung der E-Mail vom letzten Dienstag ist eine Anfrage.
blocks
Einmal gespeichert, danach in jede Vorlage eingefügt.
Eine Versionsreihe enthält alle drei
JSON
Projektdaten
Was du wieder in den Editor lädst. Ohne das ist eine Vorlage für immer nur lesbar.
MJML
Editierbare Quelle
Diffable, überprüfbar und neu kompilierbar, wenn sich der Compiler verbessert.
HTML
Was du schickst
Gerendert und eingearbeitet, unverändert an deinen Anbieter übergeben.
Speichern Sie alle drei. Jede beantwortet eine andere Frage, und eine einzelne davon aus den anderen zu rekonstruieren, ist verlustbehaftet.
Wie die drei Formate zusammenhängenDer Editor ist ein Client. Er fragt deine API nach einer Vorlage und gibt eine zurück; er erfährt nie, wer deine Tenants sind, und hält nie die einzige Kopie von irgendetwas.
Wo eine Vorlage hinkommt
// Storage scoped to the tenant AND the template. The editor never learns who
// the tenant is — your API does, from the session, and refuses everything else.
editor.Storage.add('remote', {
async load({ templateId }) {
const res = await fetch(`/api/templates/${templateId}/project`);
return res.json();
},
async store(project, { templateId }) {
await fetch(`/api/templates/${templateId}/project`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(project),
});
},
});Integriere den Editor mit dem Backend, das du bereits benutzt, anstatt deinen E-Mail-Workflow auf eine andere Plattform zu verlagern. GJS.Market verkauft Editor-Plugins – es hostet deine Vorlagen nicht und sendet deine E-Mails nicht.
In dem Moment, in dem ein zweiter Kunde eine Vorlage speichert, hört das Eigentum auf, ein Detail zu sein. Drei Ebenen decken fast jedes Produkt ab.
Deins. Für jeden Mieter sichtbar, von keinem von ihnen bearbeitbar – die Ausgangspunkte, die du pflegst.
Gespeichert von einem Kunden, sichtbar für das ganze Team, unsichtbar für alle anderen.
Noch in Arbeit. Privat, bis jemand es auf eine Mietervorlage befördert.
Dasselbe Template-System, auf verschiedene Jobs gerichtet.
Lassen Sie Kunden Kampagnen visuell erstellen und jede Sendung als versionierte Vorlage speichern.
Einbettung des EditorsWiederverwendbare Outreach-Vorlagen, die ein ganzes Team teilt, ohne dass ein Designer im Loop ist.
Drag-and-Drop-E-Mail-GeneratorVorlagen für automatisierte Reisen, mit Komponenten, die an das Ereignis gebunden sind, das sie ausgelöst hat.
React E-Mail-BuilderEin No-Code-Design-Workflow für Autoren, die niemals ein Tabellenlayout sehen sollten.
Headless-CMS-EditorE-Mail-Erstellung innerhalb des Produkts, das die Leute bereits geöffnet haben, nicht in einem separaten Tool.
White-Label-SeitengeneratorKontrollierte Bearbeitung: markengesperrte Regionen, bearbeitbare Kopie, Zusammenführungs-Tags, die nicht gebrochen werden können.
Einbettbarer SeitenbauerDie Bearbeitungsleinwand ist der sichtbare Teil. Ein Vorlagensystem ist der Rest – und der Rest ist der Zeitpunkt.
Woraus ein Vorlagensystem besteht
Von Grund auf
Alles davon
Mit GrapesJS
Die Bearbeitungsebene ist bereits gebaut
GrapesJS gibt dir die Bearbeitungsebene. Das darauf liegende Vorlagensystem – Eigentum, Versionierung, Mietverhältnisse – gehört dir und sollte es sein: Es ist der Teil, der zu deinem Produkt passt.
Echte Angebote aus dem Katalog, gruppiert nach ihrer Arbeit innerhalb eines Vorlagensystems. Namen und Preise stammen direkt vom Markt, daher kann hier nichts von dem abweichen, was tatsächlich zum Verkauf steht.
Speichern, Auflisten und Wiederöffnen von Vorlagen – das Thema dieser Seite.
Durchstöbern Sie diese KategorieWie eine neue Vorlage beginnt, bevor jemand eine gespeichert hat.
Durchstöbern Sie diese KategorieBringt MJML-Komponenten in den Editor, live kompiliert, sodass responsives Markup generiert und nicht handgeschrieben wird.
Der Pre-MJML-Pfad: tabellenbasierte E-Mail-Blöcke und ein CSS-Inliner, ohne Kompilierungsschritt dazwischen.
Die Abschnitte, aus denen eine Vorlage zusammengesetzt und wieder zusammengesetzt wird.
Durchstöbern Sie diese KategorieFür den Teil einer Vorlage, der handschriftlich sein muss.
Durchstöbern Sie diese KategorieVerkabele den Speicher des Editors an ein Backend, das du kontrollierst.
Durchstöbern Sie diese KategorieEs speichert Projektdaten in Firebase, die je nach der Eingabe deiner App ihre Vorlagen einführt.
Speichert Projektdaten in Directus, was praktisch ist, wenn Vorlagen neben deinen anderen Inhalten liegen.
Die Bilder, auf die sich eine Vorlage bezieht, muss die Vorlage überdauern.
Durchstöbern Sie diese KategorieDas weist den Asset-Manager auf Cloudinary hin, sodass Template-Bilder von einem Ort aus transformiert und bereitgestellt werden.
Fügt einen umfassenderen Upload-Flow für die Bilder hinzu, die deine Nutzer in eine Vorlage einfügen.
Vier Kombinationen, die bereits zusammenarbeiten, ausgewählt nach wessen Vorlagenbibliothek du baust.
Für Kunden, die jeweils ihre eigene Bibliothek führen
Für ein Team, das viele Kampagnen produziert
Für Vorlagen, die neben deinen anderen Inhalten liegen
Für einen Editor, der in einer React-App montiert ist
Die Preise werden beim Bau live aus dem Katalog vorgelesen.
GrapesJS ist die Bearbeitungsebene und endet beim HTML. Alles danach ist dein Backend und der Anbieter, den du bereits bezahlst – im Editor gibt es kein eingebautes Senden, und hier wird auch nichts angedeutet.
Etappe 01
Der Send verweist auf eine bestimmte Version, sodass das, was rausgegangen ist, nach der Umschreibung reproduzierbar bleibt.
template_versions.idEtappe 02
Dein Renderer löst die Merge-Tags pro Empfänger auf. Der Editor sieht nie Kundendaten.
{{ order.total }}Etappe 03
Tabellenbasiert und inlined, was jeder Anbieter erwartet.
text/htmlEtappe 04
Welches ESP du bereits verwendest. Das Tauschen ändert nichts am Template-System.
POST /messagesEtappe 05
Öffnen, klicken und springen an die Version angebunden, die sie produziert hat, was sie vergleichbar macht.
webhookDer Editor Core plus das offizielle MJML-Plugin. Beide sind BSD-3-Clause.
npm install grapesjs grapesjs-mjmlimport grapesjs from 'grapesjs';
import grapesjsMjml from 'grapesjs-mjml';
import 'grapesjs/dist/css/grapes.min.css';
// One editor instance per template being edited. The template id — not a page
// id — is what every load and store call is keyed by.
const editor = grapesjs.init({
container: '#template-editor',
plugins: [grapesjsMjml],
pluginsOpts: {
[grapesjsMjml]: {
imagePlaceholderSrc: 'https://cdn.your-app.com/email/placeholder.png',
},
},
storageManager: {
type: 'remote',
autosave: true,
stepsBeforeSave: 10,
},
});Das Speichern ist der Punkt, an dem ein Vorlagenbauer aufhört, ein Editor zu sein. "Als Vorlage speichern" erstellt eine Zeile, die Ihrem Kunden gehört; das Speichern fügt erneut eine Version hinzu, anstatt eine zu überschreiben.
// "Save as new template" — a row your customer owns from now on.
async function saveAsTemplate(name) {
const res = await fetch('/api/templates', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
name,
project: editor.getProjectData(), // re-openable in the editor
}),
});
return res.json(); // { id, name, version: 1 }
}
// Editing an existing template appends a version rather than overwriting it,
// so "restore the version we sent last Tuesday" stays a query, not a restore.
async function saveVersion(templateId) {
await fetch(`/api/templates/${templateId}/versions`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ project: editor.getProjectData() }),
});
}Framework-Details befinden sich auf ihren eigenen Seiten – diese Seite bleibt absichtlich framework-neutral.
Teams, bei denen die Erstellung von E-Mails innerhalb ihres Produkts stattfinden muss und nicht daneben.
Integrieren Sie visuelle E-Mail-Bearbeitungen in Ihre Anwendung, damit Kunden aufhören, in ein separates Tool zu exportieren.
Geben Sie Kunden einen Kampagnen-Builder, dessen Vorlagen Sie versionen, prüfen und unterstützen können.
Beginne mit einer erweiterbaren Lektoratsgrundlage, anstatt eine Leinwand und einen Geschichtsstapel zu schreiben.
Baue pro Client ein wiederverwendbares E-Mail-System, das als Blöcke und gesperrte Vorlagen übergeben wird.
Fügen Sie die Erstellung von E-Mails hinzu, ohne einen Editor Core und dessen Wartung für immer zu besitzen.
Erlauben Sie Nutzern, Marken-E-Mails zu erstellen, ohne Markup zu schreiben oder ein Ticket einzureichen.
Diese Seite handelt vom Vorlagensystem. Diese behandeln die benachbarten Fragen.
MJML hinein, inlineiertes tabellenbasiertes HTML aus, an einen sendenden Anbieter übergeben. Das Format und die Auslieferungsargumente vollständig.
GrapesJS E-Mail-BuilderDie Bearbeitungserfahrung aus der Sicht des Marketers, nicht das darunterliegende Datenmodell.
Drag-and-Drop-E-Mail-GeneratorMounting und Steuerung des Editors aus einer React-Anwendung.
React E-Mail-BuilderDie gleiche Einbettungsfrage für Seiten statt für E-Mails.
SaaS-SeitenbauerBeginnen Sie mit GrapesJS, gestalten Sie das Bearbeitungserlebnis rund um Ihr Produkt und erweitern Sie es mit den Plugins, die Ihr Vorlagensystem benötigt.
Installiere den Core, mounte den Editor und verdrahte den Speicher an deine eigene API.
Lies den SchnellstartPresets, Blöcke, Speicher und Export – echte Angebote mit aktuellen Preisen.
E-Mail-Plugins durchsuchenSagen Sie uns, was Ihr Template-System zu tun hat, und wir werden den Build begrenzen.
Beginnen Sie mit einem BriefingVerwandte Literatur