PageKit: el creador de sitios GrapesJS autoalojado, con el código fuente incluido. Obtener acceso anticipado

Creador de plantillas de correo electrónico

Crea un Generador de Plantillas de Correo con GrapesJS

Ofrece a tus usuarios una forma visual de crear plantillas de correo responsivas — bloques reutilizables, MJML, componentes personalizados y exportación HTML lista para producción, todo dentro de tu propio producto.

Código abiertoAutoalojadoExtensibleAmigable para desarrolladores

El bucle en el que viven tus usuarios

  1. Construcción
  2. Diseño
  3. Vista previa
  4. Exportación
  5. Envío

26k+

GitHub estrellas

100+

Plugins en GJS.Market

10 years

Desarrollo activo

BSD-3-Clause

Licencia principal

Pruébalo

Una biblioteca de plantillas, en funcionamiento

Abre una plantilla de la estantería, cámbiala y guárdala como una nueva. La estantería crece en uno. Ese bucle —no los diseños individuales— es lo que ofrece un creador de plantillas de correo electrónico a tus usuarios.

your-app.com/templates

Biblioteca de plantillas

Añadir un bloque

  • Tu logo

  • Bienvenido a bordo, {{ user.first_name }}

  • Así es como poner en marcha tu primer proyecto.

  • Abre tu salpicadero

  • Cancelar suscripción · Gestionar preferencias

Las etiquetas de fusión permanecen intactas: tu renderizador las resuelve por destinatario en el momento de enviarlas.

El verdadero editor

O abrir la auténtica

La demo anterior es un modelo del bucle. Esto es el propio GrapesJS, ejecutando el preset oficial de MJML — cargado solo cuando lo pides, así que esta página no cuesta nada hasta entonces.

Abrir en una pestaña nueva

La demo del editor MJML publicada por el propio proyecto GrapesJS. Añade una sección, edita el texto y luego mira el marcado generado.

grapesjs.com/demo-mjml.htmlGratis

Carga un iframe desde la propia web de la demo.

En GJS.Market

Editor MJML está disponible como producto

Definición

¿Qué es un generador de plantillas de correo electrónico?

Un generador de plantillas de correo permite a las personas crear y cambiar la disposición de los correos de forma visual en lugar de escribir a mano el marcado HTML de correo. Una *biblioteca* de plantilla envía diseños terminados; un *creador* de plantillas ofrece la capacidad de crearlos — y de seguir haciéndolos después de que los hayas enviado.

Una plantilla como archivo

  1. Escribe el HTML

    tablas, estilos en línea, comentarios condicionales

  2. Prueba entre clientes

    No puedes ver el resultado mientras escribes

  3. Dásela a marketing

    como un archivo, o pegado en una herramienta

  4. Cada cambio vuelve a ti

    Un ticket de desarrollador por ajuste

Una plantilla, un propietario, un cuello de botella.

Una plantilla como sistema

  1. Abre un punto de partida

    de la estantería, o en blanco

  2. Edición visual

    El resultado está en pantalla todo el tiempo

  3. Guárdalo como plantilla

    una fila que posee tu cliente

  4. Reutilizarlo y revertirlo

    Sin entrada, sin promotor

Muchas plantillas, propiedad de quienes las envían a ellas.

Las plantillas ofrecen a tus usuarios un punto de partida. Un constructor les da control.

La distinción que importa

Más que una biblioteca de plantillas de correo electrónico

Una biblioteca es una estantería con techo: cubre lo que fue construida para cubrir, y las peticiones por encima de esa línea no tienen a dónde ir. Un constructor es un bucle — y la estantería crece cada vez que alguien la rodea.

Biblioteca de plantillas

Cualquier cosa por encima de esta línea necesita un revelador

Generador de plantillas

  1. Crear
  2. Guardar como plantilla
  3. Reutilización
  • "Necesitamos un correo de bienvenida limpio para el viernes."

    Cubierto

    Biblioteca de plantillas

    Resuelto. Para esto es exactamente para lo que sirve una buena biblioteca: elige una, cambia las palabras, envía.

    Cubierto

    Generador de plantillas

    También resuelto, desde los mismos puntos de partida. Un constructor nave con una biblioteca dentro.

  • "Cada inquilino necesita su propio fundamento legal."

    No cubierto

    Biblioteca de plantillas

    Un pie de página compartido, o un fork de cada plantilla por inquilino.

    Cubierto

    Generador de plantillas

    Un bloque de pie de página, guardado una vez por inquilino y reutilizado en sus plantillas.

  • "Poned el pedido real del cliente en el recibo."

    No cubierto

    Biblioteca de plantillas

    Texto estático provisional. Los datos tienen que empalmarse aguas abajo.

    Cubierto

    Generador de plantillas

    Un componente vinculado a tu modelo de pedidos, editable como bloque y resuelto en el momento de enviar.

  • "Restaura la versión que enviamos el martes pasado."

    No cubierto

    Biblioteca de plantillas

    Lo que sea que se haya sobrescrito es lo que tienes.

    Cubierto

    Generador de plantillas

    Una fila de versiones. La restauración es una consulta, no un proyecto arqueológico.

  • "Deja que nuestros clientes construyan los suyos propios, sin enviarnos correos."

    No cubierto

    Biblioteca de plantillas

    No es lo que hace una biblioteca — no tiene una superficie de autoría.

    Cubierto

    Generador de plantillas

    El objetivo principal. Tus usuarios crean y mantienen plantillas que nunca ves.

Envía la biblioteca. Luego envía lo que haga más de ellos.

Capacidades

Todo lo que necesitas para crear correos de forma visual

La superficie de edición que obtienen tus usuarios, y las partes de ella que controlas.

Arrastrar y soltar

Los usuarios construyen los diseños moviendo bloques sobre el lienzo, en el orden en que los desean.

Edición visual

El texto, las imágenes y los enlaces se editan en su lugar, con el resultado renderizado en pantalla todo el tiempo.

Bloques reutilizables

Las secciones que tus usuarios guardan una vez y luego las dejan en cualquier plantilla.

Disposiciones responsivas

Previsualiza y ajusta el diseño en los anchos que importan para el correo electrónico, mientras editas.

MJML

Crea contra mjml donde quieres que se genere un marcado responsivo para ti en lugar de que se mantenga a mano.

Exportación HTML

Produce el HTML del correo electrónico que tu flujo de trabajo de entrega ya espera.

Recursos

Gestiona las imágenes que hace referencia una plantilla, en la tienda que ya uses.

Componentes personalizados

Añade componentes editables que reflejen los datos y flujos de trabajo de tu propio producto.

Deshacer y rehacer

Una pila completa de historiales, así que experimentar con la plantilla de otra persona es seguro.

Bloques

Crear bloques de correo electrónico reutilizables

Da a los usuarios una biblioteca de secciones para ensamblar, en lugar de hacer que empiecen cada correo desde un lienzo vacío. Cada una es una definición de bloque que registras una vez.

  • Cabecera

    Logo, texto del preencabezado y la fila de navegación, si usas alguno.

  • Portada

    La declaración inicial y la primera llamada a la acción.

  • Cuadrícula de productos

    Una fila o cuadrícula de artículos, vinculados a tu catálogo donde quieres que estén vivos.

  • Lista de características

    Filas cortas de iconos y texto para notas de lanzamiento y incorporación.

  • Precios

    Comparación de planos diseñada para sobrevivir a un renderizador basado en tablas.

  • Testimonio

    Una cita, una atribución y un avatar opcional.

  • Llamada a la acción

    Un botón antibalas que se renderiza sin imágenes de fondo.

  • Pie de página

    Dirección, enlace de preferencias y el enlace de baja que legalmente debes incluir.

Componentes personalizados

Crea componentes de correo electrónico para tu producto

Los bloques estándar cubren la distribución. Lo que hace que el constructor sea tuyo son los componentes que conocen tus datos: un pedido, una suscripción, una reserva, una recomendación.

  1. Estándar
  2. Compuesta
  3. Bound
  4. Tu modelo de datos

Estándar

Texto, imagen, botón, columnas, sección

Los primitivos que todo correo necesita necesita. Vienen con el editor.

Compuesta

Cabecera, héroe, fila de producto, pie de página

Tus bloques estándar, montados una vez y registrados para reutilización.

Bound

Pedido, cliente, evento, recomendación

Componentes con rasgos que tus usuarios establezcan y etiquetas de fusión que tu renderizador resuelve por destinatario.

El editor renderiza un marcador de posición mientras se escribe la plantilla. Tu backend intercambia los valores reales en el momento de enviar.

Registrar un componente vinculado a tu modelojs
// 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>',
    },
  },
});
Tipos de plantillas

Empieza con una plantilla

En un sistema de plantillas, las plantillas difieren según quién las posee y quién puede cambiarlas — no solo por lo que dicen. Estas son las clases que merece la pena modelar desde el primer día.

Clases de propiedad

  • Plantilla del sistema
  • Plantilla de inquilino
  • Borrador de usuario
  • Plantilla de marca bloqueada
  • Fragmento compartido
  • En blanco

Estas son clases de propiedad en un sistema de plantillas, no productos a la venta. GJS.Market lista plugins y preajustes para editores; no vende plantillas de correo electrónico.

Responsive

Crea plantillas de correo responsivas visualmente

Previsualiza el diseño en el ancho en el que realmente se renderiza el correo electrónico, mientras aún lo estás editando. 600px es la convención de larga data para la columna del cuerpo — una convención, no una especificación.

Escritorio600px
Tableta480px
Móvil320px

Qué pueden cambiar los usuarios por ancho

  • Columnas de pila
  • Tamaño de fuente
  • Relleno
  • Ancho de imagen
  • Ancho de botón
  • Esconde un bloque

Dos columnas en un cliente de escritorio, apiladas en un teléfono — decididas en la plantilla, no por la suposición del cliente del destinatario.

Compatibilidad

Diseño para clientes de correo electrónico reales

Los clientes de correo electrónico implementan HTML y CSS de forma diferente, y siempre lo han hecho. Un constructor visual no elimina eso: estandariza el paso de autoría para que salga el mismo marcado conocido de bueno cada vez.

ClienteQué hace diferenteLo que hace el constructor al respecto
GmailElimina bloqueos <style> en algunos contextos, incluyendo las aplicaciones móviles de Gmail con cuentas que no son de Gmail.Emite estilos con líneas en lugar de depender de que una hoja de estilos sobreviva al viaje.
Outlook (Windows)Renderiza con el motor Word: no hay flexbox, ni cuadrícula, y se elimina el radio de borde en una celda de tabla.Genera un diseño basado en tablas y botones a prueba de balas en lugar de un diseño CSS.
Apple MailEl más completo de estándares de los cuatro; también el más propenso a exponer un diseño que solo funcionaba por accidente en otros lugares.Previsualiza en cada ancho durante la edición, para que el diseño sea deliberado y no incidental.
Yahoo MailHistóricamente inconsistente con las consultas de medios; el comportamiento actual es Not publicly documented.Prefiero diseños que se degradan a una sola columna legible sin necesidad de consulta de medios.

Restricciones verificadas en 2026-08-28. Cambios de comportamiento; Comprobar caniemail.com el estado actual y probar los correos de producción con los clientes que tu propia audiencia realmente utiliza.

MJML

Crea correos responsivos con MJML

mjml existe para que el marcado de correo responsivo sea algo que generes en lugar de mantenerlo a mano. GrapesJS puede extenderse con grapesjs-mjml para poner una superficie de edición visual encima.

Una fuente que puedes diferenciar

MJML es lo suficientemente compacto como para revisarlo en una solicitud de tirada, cosa que el HTML bruto de correo no es.

Sensible por construcción

El compilador emite el andamiaje de tablas y las consultas de medios, así que nadie las escribe a mano.

Almacenado, no solo exportado

Mantén el MJML junto al JSON del proyecto, para que una plantilla se mantenga editable como fuente.

Arquitectura

Plantillas como datos

La pregunta que decide si tienes un constructor o un visor: ¿qué filas existen después de que un usuario haga clic en Guardar? Tres tablas lo cubren.

templates

La plantilla

  • idTonalidad primaria
  • tenant_id¿quién es el propietario?
  • nameLo que ven los usuarios
  • kindsistema, inquilino o draft
  • current_version_idpuntos en la versión en directo

Una fila por plantilla, asignada a un inquilino.

tiene muchos

template_versions

Cada partida

  • idTonalidad primaria
  • template_idPlantilla principal
  • versionincrementos en la partida de salvación
  • project / mjml / htmlLos tres artefactos
  • created_byquién lo salvó y cuándo

Solo añadir información. Restaurar el correo del martes pasado es una consulta.

Compuesto por

blocks

Secciones reutilizables

  • idTonalidad primaria
  • tenant_idQuién puede usarlo
  • nameaparece en el raíl de bloque
  • projectLa sección guardada
  • lockededitable o bloqueado por marca

Guardé una vez, luego lo dejé en cualquier plantilla.

Una fila de versiones contiene los tres

JSON

Datos del proyecto

Lo que vuelves a cargar al editor. Sin él, una plantilla es de solo lectura para siempre.

MJML

Fuente editable

Diffable, revisable y recompilable cuando el compilador mejora.

HTML

Lo que envías

Renderizado e inlineado, entregado a tu proveedor sin cambios.

Guarda los tres. Cada uno responde a una pregunta diferente, y reconstruir cualquiera de ellos a partir de los otros es con pérdida.

Cómo se relacionan los tres formatos
Tu infraestructura

Guarda tus datos de correo electrónico en tu propia infraestructura

El editor es un cliente. Pide a tu API una plantilla y te la devuelve; nunca aprende quiénes son tus inquilinos y nunca tiene la única copia de nada.

Dónde va una plantilla

  1. Editor
  2. Datos del proyecto
  3. Tu API
  4. Tu base de datos
  5. Tu infraestructura de correo electrónico
El almacenamiento está asignado a un inquilino y una plantillaJS
// 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),
    });
  },
});

Integra el editor con el backend que ya ejecutas, en lugar de mover tu flujo de trabajo de correo a la plataforma de otra persona. GJS.Market vende plugins de editor — no aloja tus plantillas ni envía tu correo.

Multiinquilino

Las bibliotecas de tus clientes, no una sola estantería compartida

En el momento en que un segundo cliente guarda una plantilla, la propiedad deja de ser un detalle. Tres niveles cubren casi todos los productos.

Plantillas del sistema

Tuyo. Visible para todos los inquilinos, editable por ninguno — los puntos de partida que mantengas.

Plantillas de inquilinos

Salvado por un cliente, visible para todo su equipo, invisible para los demás.

Borradores de usuario

Trabajo en progreso. Privado hasta que alguien lo promocione a plantilla de inquilino.

Casos de uso

Añadir un generador de correo electrónico a tu SaaS

El mismo sistema de plantillas, apuntando a diferentes trabajos.

Construir vs comprar

¿Construir un editor de correo desde cero?

El lienzo de edición es la parte visible. El resto es un sistema de plantillas — y el resto es donde va el tiempo.

De qué está hecho un sistema de plantillas

  • Lienzo del editor
  • Arrastrar y soltar
  • Registro de bloques
  • Modelo de componentes
  • Controles de estilo
  • Vista previa responsiva
  • Gestión de activos
  • CRUD de plantilla
  • Versionado y restauración
  • Validación de etiquetas de fusión
  • Alcance del inquilino
  • Deshacer y volver a hacer
  • Exportación HTML
  • Compilación MJML
  • Pruebas continuas para clientes

Desde cero

Todo

  • Cada subsistema anterior es tuyo para diseñar, construir y seguir funcionando
  • El comportamiento del cliente de correo cambia bajo ti, indefinidamente
  • Nada de esto es el producto por el que tus clientes están pagando

Con GrapesJS

La capa de edición, ya construida

  • Lienzo, arrastrar y soltar, bloques, componentes, estilo, recursos e historia
  • APIs de almacenamiento para conectar las filas de plantilla a tu propio backend
  • Un ecosistema de plugins para MJML, bloques, almacenamiento y exportación

GrapesJS te da la capa de edición. El sistema de plantillas encima — propiedad, versionado, arrendamiento — es tuyo, y debe serlo: es la parte que encaja con tu producto.

Ecosistema de plugins

Extiende tu generador de correo electrónico con plugins GJS.Market

Listados reales del catálogo, agrupados por el trabajo que realizan dentro de un sistema de plantillas. Los nombres y precios vienen directamente del mercado, así que nada aquí puede desviarse de lo que realmente está a la venta.

Pilas recomendadas

Crea el generador de correos que necesitas

Cuatro combinaciones que ya funcionan juntas, elegidas por la biblioteca de plantillas que estás creando.

Los precios se leen en directo desde el catálogo en el momento de la compilación.

Entrega

De una plantilla almacenada a una bandeja de entrada

GrapesJS es la capa de edición y se detiene en el HTML. Todo lo que viene después es tu backend y el proveedor al que ya pagas — no hay envío integrado en el editor, y aquí no se implica ninguno.

  1. Etapa 01

    Elige una versión

    El envío hace referencia a una versión específica, así que lo que se envió sigue siendo reproducible después de que la plantilla avanza.

    template_versions.id
  2. Etapa 02

    Fusionar los datos

    Tu renderizador resuelve las etiquetas de fusión por destinatario. El editor nunca ve los datos de los clientes.

    {{ order.total }}
  3. Etapa 03

    Renderizar el HTML

    Basado en tablas e en línea, que es lo que todo proveedor espera recibir.

    text/html
  4. Etapa 04

    Llama a tu proveedor

    El ESP que ya uses. Cambiarlo no cambia nada del sistema de plantillas.

    POST /messages
  5. Etapa 05

    Resultados de los feeds

    Aperturas, clics y rebotes se adhieren a la versión que los produjo, lo que los hace comparables.

    webhook
Nada en esta cadena funciona con GJS.Market. El editor produce marcos; tu infraestructura hace el resto.
Inicio rápido

Empieza a crear tu generador de plantillas de correo electrónico

El núcleo del editor más el plugin oficial de MJML. Ambos son BSD-3-Clause.

npm install grapesjs grapesjs-mjml
Montar el editor sobre una plantillaJS
import 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,
  },
});

Guardar es cuando un creador de plantillas deja de ser un editor. "Guardar como plantilla" crea una fila que pertenece a tu cliente; guardar de nuevo añade una versión en lugar de sobrescribirla.

Creación de una plantilla y una versiónJS
// "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() }),
  });
}
  1. Instala el núcleo y el plugin MJML
  2. Monta el editor, con clave por id de plantilla
  3. Registra tus bloques y componentes acotados
  4. Haz el almacenamiento por cable a tu propia API
  5. Añadir guardar como plantilla y versionado
  6. Entrega el HTML renderizado a tu proveedor

Los detalles del framework están en sus propias páginas — esta página se mantiene neutral en cuanto al framework a propósito.

Público

¿Quién crea creadores de plantillas de correo electrónico?

Equipos que necesitan que la creación de correos se haga dentro de su producto en lugar de al lado.

Empresas SaaS

Integra la edición visual de correo electrónico en tu aplicación para que los clientes dejen de exportar a otra herramienta.

Plataformas de correo electrónico

Ofrece a los clientes un creador de campañas cuyas plantillas puedas versionar, auditar y dar soporte a los usuarios.

Desarrolladores

Empieza desde una base de edición extensible en lugar de escribir un lienzo y una pila de historia.

Agencias

Construye un sistema de correo reutilizable por cliente, entregado en bloques y plantillas bloqueadas.

Equipos de producto

Añadir la creación de correo sin tener un núcleo de editor y su mantenimiento para siempre.

Plataformas de marketing

Permite que los usuarios produzcan correos electrónicos propios de la marca sin poner margen ni abrir un ticket.

Soluciones relacionadas

¿Buscas algo más específico?

Esta página trata sobre el sistema de plantillas. Estas cubren las preguntas vecinas.

Preguntas frecuentes

Preguntas sobre creadores de plantillas de correo electrónico

Empieza

Crea los correos electrónicos visualmente. Construye el editor a tu manera.

Empieza con GrapesJS, adapta la experiencia de edición a tu producto y amplíala con los plugins que tu sistema de plantillas necesita.

Hazlo tú mismo

Empieza a construir

Instala el núcleo, monta el editor y conecta el almacenamiento a tu propia API.

Lee el inicio rápido
Entrégalo

Crea un generador de correo personalizado

Cuéntanos qué tiene que hacer tu sistema de plantillas y nosotros cubriremos el alcance de la construcción.

Empieza un resumen

Lecturas relacionadas