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

Generador de correo electrónico para desarrolladores

Crea un Constructor de Correo Electrónico de Arrastrar y Soltar con GrapesJS

Crea un editor visual de correo electrónico para tu SaaS, CMS, plataforma de marketing o herramientas internas. Deja que los usuarios creen correos responsivos con bloques de arrastrar y soltar mientras tu equipo controla componentes, plantillas, almacenamiento, salida y publicación.

Lienzo de arrastrar y soltarHTML, MJML o proyecto JSONTu base de datos, tu ESPNúcleo de código abierto, BSD-3-Clause

Tus usuarios crean los correos electrónicos de forma visual. Tu aplicación controla la experiencia.

Editor en directo

Prueba el generador de correos electrónicos

Este es un editor GrapesJS real ejecutándose en esta página: no es un vídeo ni una captura de pantalla. Arrastra un bloque desde la derecha, selecciona cualquier elemento para volver a darle estilo, cambia al ancho de móvil y después lee el marcado generado. La cabecera y el pie de página están bloqueados, que es el mismo patrón que explica la sección de más abajo.

Lo que puedes hacer aquí

  1. Bloques
  2. Lienzo
  3. Estilo
  4. Responsive
  5. Vista previa
  6. HTML / JSON
Definición

¿Qué es un generador de correo electrónico de arrastrar y soltar?

Un generador de correos electrónicos de arrastrar y soltar es un editor visual que permite a los usuarios crear diseños de correo electrónico a partir de componentes reutilizables en lugar de escribir manualmente tablas HTML y CSS específicos para correos electrónicos.

La diferencia está en quién tiene que conocer las reglas. Sin un constructor, quien escribe el correo debe saber que el diseño se hace con tablas anidadas, que la mayoría del diseño tiene que ser en línea y que un margen disperso puede colapsar el diseño en un solo cliente. Con un constructor, esas reglas se codifican una vez — por ti — en bloques y componentes, y los demás simplemente las organizan.

Sin un generador visual

Alguien escribe a mano el marcado de tabla y luego lo revisa manualmente. Cada correo nuevo empieza con una copia del anterior.

welcome.htmlhtml
<table role="presentation" cellpadding="0" cellspacing="0" width="600">
  <tr>
    <td style="padding:32px;font-family:Arial,sans-serif">
      <h1 style="margin:0 0 12px;font-size:26px">Welcome</h1>
      <p style="margin:0;font-size:15px;line-height:1.6">Y Nuestro contenido... </p>
    </td>
  </tr>
</table>

Con un generador de arrastrar y soltar

Alguien organiza los bloques. El marcado de tabla se genera a partir de componentes que definiste y revisaste una vez.

  1. Cabecera
  2. Hero
  3. Texto
  4. Imagen
  5. CTA
  6. Pie de página

El constructor no está para facilitar el correo electrónico. Está para tomar las partes difíciles que sea decisión de otra persona — tuya, tomada una vez, a nivel de componente.

La parte difícil

Por qué los creadores de correo electrónico son más difíciles que los creadores de sitios web

Una página web se ejecuta en un navegador sobre el que puedes razonar en términos generales. Un correo electrónico se ejecuta dentro del cliente en el que el destinatario lo abrió, y ese cliente puede reescribir tu marcado, eliminar tus estilos o configurarlo con un motor completamente diferente. Por tanto, un creador de correo electrónico debe limitar lo que los usuarios pueden producir, no solo hacer que la producción sea agradable.

Donde tu correo electrónico tiene que sobrevivir

  • Gmail

    Las aplicaciones web, Android e iOS se comportan de forma diferente entre sí, y el cliente web procesa tus estilos antes de renderizar.

  • Outlook

    Escritorio, web y el cliente más reciente de Windows son, en la práctica, renderizadores diferentes. Las compilaciones de escritorio en Windows han sido históricamente el objetivo más estricto.

  • Apple Mail

    El más permisivo de los clientes comunes, lo que lo convierte en un mal sustituto: un correo que parece aquí aún puede romperse en otro sitio.

  • Yahoo Mail

    Otro cliente de webmail con sus propias reglas de sanitización para estilos y marcado.

  • Clientes móviles

    Ventanas de visualización estrechas, escalado agresivo de texto y manejo en modo oscuro que varía según la app y la versión del sistema operativo.

  • Todo lo demás

    Puertas de entrada corporativas, proveedores regionales y clientes antiguos que nunca aparecen en una matriz de pruebas típica.

Lo que eso obliga al constructor

  • La disposición es tablas, no flexbox ni grid

    Tus columnas, espaciadores y separadores deben ser componentes de tabla. Los usuarios nunca deberían poder soltar un div suelto en el lienzo.

  • El soporte para CSS es parcial e irregular

    Limita el Style Manager a propiedades que realmente hayas probado, en lugar de exponer todo el conjunto del navegador.

  • Los estilos son más seguros en línea

    O bien escribes con un preajuste que se inicie al exportar, o ejecutas un inliner en tu propio pipeline antes de que el correo salga de tu backend.

  • Las consultas de los medios no son universalmente reconocidas

    Diseña para que el respaldo de una sola columna ya sea aceptable, y trata las reglas responsivas como una mejora en lugar de un requisito.

  • Las imágenes suelen estar bloqueadas por defecto

    Exige texto alternativo en cada componente de la imagen y nunca dejes que un bloque dependa de que una imagen sea legible.

  • El modo oscuro puede cambiar el color de tu correo electrónico

    Algunos clientes invierten o cambian de color automáticamente. Evita diseños que dependan de que un fondo específico se mantenga exactamente de ese color.

  • Las fuentes web a menudo no se cargan

    Envía una pila de respaldo real en cada componente de texto y revisa el correo con la opción de respaldo en lugar de la cara prevista.

  • Los scripts no se ejecutan y la interactividad es limitada

    Cualquier cosa dinámica debe estar detrás de un enlace. Un constructor que ofrece bloques interactivos a los usuarios les ofrece algo que no funcionará.

  • El correo comercial conlleva requisitos legales

    La identidad del remitente y un mecanismo de baja son obligaciones, no decisiones de diseño. Fíjalos en la plantilla en lugar de confiar en una lista de comprobación.

No estás construyendo un editor que produzca un HTML hermoso. Estás construyendo un editor que no puede producir un HTML peligroso.

El comportamiento del cliente cambia con los lanzamientos y modos de renderizado, así que esta página indica que no hay matriz de soporte por cliente. Valida contra los clientes y funciones que realmente utiliza tu propia audiencia. Última revisión de 2026-09-03.

La capa de edición

¿Por qué usar GrapesJS como generador de correos?

GrapesJS es un framework de web builder de código abierto (BSD-3-Clause), actualmente 0.23.6, con aproximadamente 26k+ estrellas en GitHub. Te da las partes de un editor que son caras de construir y aburridas para diferenciar, y se aparta para las partes que realmente son tu producto.

Lienzo y arrastrar y soltar

Un lienzo iframe con selección, objetivos de arrastre, indicadores de soltado, redimensionamiento y una barra de herramientas de componentes: la capa de interacción que tarda meses en hacerse bien y por la que nadie compra tu producto.

Componentes y bloques

Define un componente seguro para el correo electrónico una vez, y luego exponlo como un bloque que los usuarios arrastran. Los componentes tienen sus propias reglas: qué aceptan, qué se puede editar, qué se puede estilizar.

Gestores de estilo y rasgos

Un panel de estilo que puedes restringir a las propiedades que realmente soporta el email, y un panel traits para los ajustes que no son CSS — un destino de enlace, un texto alternativo, un campo de fusión.

Capas y recursos

Un árbol de estructuras para tablas anidadas que son difíciles de seleccionar con clic, y un gestor de activos al que puedas señalar tu propia biblioteca multimedia.

Storage Manager y estado del proyecto

Todo el estado del editor se serializa para proyectar JSON. Apunta el Storage Manager a tu API y al editor deja de importarle dónde están los datos.

Commands y plugins

Cada acción del editor es un comando con nombre que puedes llamar, sobreescribir o añadir — que es como los presets, exporters y los plugins 100+ en GJS.Market lo extienden sin fork.

GrapesJS proporciona la capa de edición. Tu aplicación proporciona el producto de correo electrónico.

Arquitectura

Cómo funciona un generador de correos electrónicos de arrastrar y soltar

Una ruta de solicitud, desde la persona que arrastra un bloque hasta la persona que abre el correo. Cada capa inferior tiene un propietario, y la mayoría de los problemas de integración surgen de poner una responsabilidad en el que no corresponde.
  1. Your SaaS / application

    Tu producto: cuentas, inquilinos, facturación, la ruta en la que está montado el editor.

  2. Email builder UI

    Tu shell alrededor del editor: selector de plantillas, guardar estado, botón de enviar, aprobaciones.

  3. GrapesJS

    El motor de edición visual. Sabe sobre componentes y lienzos, y nada sobre tus usuarios.

  4. Editor modules

    Los subsistemas del editor que configuras: qué bloques existen, qué aceptan, qué se puede estilizar, qué se puede editar.

    • Blocks
    • Components
    • Styles
    • Traits
  5. Project JSON

    El estado del editor serializado. Esto es lo que almacenas para que un correo pueda reabrirse más tarde.

  6. Your backend / API

    Tu API: permisos, versionado, resolución de la etiqueta de fusión, validación, registros de campaña.

  7. HTML / MJML

    El margen que realmente envías. Generado bajo demanda desde el proyecto almacenado.

  8. Your email provider

    El proveedor que entrega el correo y reporta lo que le ha pasado.

  9. Recipient

    La bandeja de entrada, y el cliente que lo renderice.

GrapesJS nunca se comunica con tu base de datos ni con tu proveedor de correo electrónico. Te entrega un documento; todo lo que viene después es tu arquitectura.

Responsabilidades

¿Quién posee qué?

Tres propietarios, sin solapamiento. El error arquitectónico más común en el tema de esta página es esperar que el editor haga algo en las columnas de la derecha.

Tu aplicación
  • Usuarios y cuentas
  • Roles y permisos
  • Registros de plantilla
  • Almacenamiento y versionado
  • Resolución de la combinación de etiquetas
  • Campañas y programación
  • Validación de salida
GrapesJS
  • Lienzo visual
  • Arrastrar y soltar
  • Modelo de componentes
  • Biblioteca de bloques
  • Edición de estilo
  • Árbol de capas
  • Deshacer / volver a hacer
  • Serialización del proyecto
Tu proveedor de correo electrónico
  • Entrega
  • Rebotes y quejas
  • Aperturas, clics y eventos

Nada de lo que hay en las columnas de la derecha es una carencia de GrapesJS: esas filas nunca fueron tarea del editor. Tratarlas como trabajo de la aplicación desde el primer sprint es lo que mantiene la integración sencilla.

Salida

HTML, MJML y JSON: ¿cuál es la diferencia?

Tres artefactos surgen del mismo lienzo, y no son intercambiables. Uno es el proyecto que conservas, dos son los formatos de entrega que generas a partir de él.

Proyecto JSON

Núcleo GrapesJS

La representación editable del correo — componentes, estilos, recursos y páginas, exactamente como los sostiene el editor.

Mejor para

  • Salvando trabajos en curso
  • Reabrir una plantilla para editar
  • Duplicación y versión
  • Diferenciando qué cambió entre revisiones

¿Cómo lo consigues

editor.getProjectData()

Este es el que hay que guardar. Almacenar solo HTML renderizado significa que la siguiente edición comienza con el marcado analizado en lugar del documento que el usuario construyó.

HTML

grapesjs-preset-newsletter

El marcado basado en tablas que entregas a un proveedor de envío, con estilos en línea para que más clientes los conserven.

Mejor para

  • El último correo que se envía
  • Entrega a una tubería existente
  • Control máximo sobre la salida

¿Cómo lo consigues

editor.runCommand('gjs-get-inlined-html')

El comando de inlining viene del preset del boletín, no del núcleo GrapesJS. Sin él obtienes el marcado de lienzo y una hoja de estilo, que no es lo que quieres enviar.

MJML

grapesjs-mjml

Un lenguaje de marcado de mayor nivel para el correo electrónico que se compila hasta la tabla responsiva HTML.

Mejor para

  • Crear correos responsivos con menos margen
  • Mantener el código fuente almacenado legible
  • Compilación a HTML en el momento de enviar

¿Cómo lo consigues

editor.runCommand('mjml-code')

MJML es un ecosistema separado: el plugin editor renderiza los componentes MJML y un compilador los convierte en HTML. Ambos son paquetes de terceros que añades.

JSON es el proyecto. HTML y MJML son la entrega. Guarda el primero, genera los demás.

De lienzo a bandeja de entrada

  1. Editor visual
  2. Proyecto JSON
  3. Tu base de datos
  4. Renderizar al enviar
  5. HTML
  6. Tu proveedor
Renderizar en el momento del envío en lugar de al guardar es lo que permite resolver las etiquetas de fusión por destinatario, y lo que te deja corregir un pie de página en todas las plantillas sin volver a guardarlas.
Componentes

Proporciona a los usuarios componentes seguros para correo electrónico

No entregues a los usuarios un lienzo en blanco y un div. Entrega un pequeño conjunto de componentes que ya codifican el marcado de tabla, los estilos en línea y los respaldos, y luego deja que la gente los organice. Estos diez cubren la mayor parte de lo que realmente necesitan el marketing y el correo electrónico del ciclo de vida.

  • Cabecera

    Logo, barra de marca, texto de preencabezado. Normalmente bloqueado para que cada correo salga con la misma identidad.

  • Hero

    Titular, línea de apoyo y una acción. Dimensionado para que el mensaje sobreviva sin que la imagen cargue.

  • Texto

    Un bloque de párrafo con una pila de fuentes de respaldo real y altura de línea que aguanta a los anchos de los teléfonos.

  • Imagen

    Ancho fijo, dimensiones explícitas y texto alternativo obligatorio, así que una imagen bloqueada sigue dejando un correo electrónico legible.

  • Botón

    Un botón basado en tabla en lugar de un ancla estilizada — la diferencia es visible en clientes más estrictos.

  • Sección de dos columnas

    Una fila de tabla que se apila en pantallas estrechas, con el orden de apilado ya decidido por ti.

  • Tarjeta de producto

    Imagen, nombre, precio y enlace, impulsados por los campos que rellena tu backend en lugar de copiar y pegar.

  • Vínculos sociales

    Una fila fija de iconos y URLs, editable como configuración en lugar de como marcado.

  • Divisor

    Una línea dibujada con un borde de tabla en lugar de un elemento <hr>, que varios clientes de correo reestilizan.

  • Pie de página

    Identidad del remitente, dirección y enlace de baja de baja. Normalmente bloqueado, porque son obligaciones.

Permite que los usuarios diseñen visualmente sin tener que entender el correo HTML.

Bloques

Crea correos electrónicos a partir de bloques reutilizables

Un componente es la definición; un bloque es cómo un usuario lo pone en el lienzo. La biblioteca de bloques es la palanca más poderosa que tienes sobre lo que la gente puede construir — y la más fácil de equivocarse si eres generoso.

El bucle que repiten tus usuarios

  1. Biblioteca de bloques
  2. Arrastre al lienzo
  3. Personalización
  4. Guardar como plantilla

Un lienzo sin restricciones

Cada elemento disponible, cada estilo editable, sin opinión sobre la estructura.

  • Los usuarios producen margen que nadie ha revisado
  • Solicitudes de soporte sobre un cliente que renderiza
  • Las plantillas se alejan de la marca en cuestión de semanas
  • No hay forma segura de cambiar una sección compartida más adelante

Una biblioteca de bloques curada

Una lista corta de bloques que has diseñado, probado y que puedes cambiar centralmente.

  • La salida se queda dentro del marcado que has validado
  • Los nuevos usuarios son productivos sin formación
  • Las reglas de marca están en el componente, no en un documento
  • Mejorar un bloqueo mejora cada correo que lo utiliza
Estructura

Plantillas, bloques y componentes

Tres niveles, y confundirlos es lo que hace que los constructores de correo sea difícil de desarrollar. Los componentes son lo que son, los bloques son cómo se añaden, las plantillas son puntos de partida terminados.

  1. Plantillas
  2. Bloques
  3. Componentes
  4. Un sistema de plantillas que tu equipo pueda hacer crecer

Plantillas

Diseños completos de correos electrónicos

Un correo electrónico completo desde el que un usuario puede empezar — boletín, recibo, paso de incorporación. Almacenado como proyecto JSON, clonado en su uso.

Bloques

Secciones reutilizables

Las unidades arrastrables de las que se ensambla una plantilla: un hero, una fila de artículo, una banda CTA, un pie de página.

Componentes

Elementos específicos de dominio

Las primitivas editables dentro de un bloque, con su propio traits y reglas — una tarjeta de producto que sabe que tiene un precio.

Primero construye los componentes, luego los bloques que los exponen, y después las plantillas que los organizan. Los equipos que empiezan en el nivel de plantilla acaban con decenas de diseños casi idénticos y sin forma de cambiar ninguno.

Una plantilla de boletín ampliada

Plantilla de boletín

  • ├── Cabecera (bloqueada)
  • ├── Hero
  • ├── Bloque de artículos ×3
  • ├── CTA
  • └── Pie de página (bloqueado)

Cada hijo es un bloque; cada bloque está formado por componentes. Cambia el bloque de artículo una vez y cada boletín construido a partir de esta plantilla lo recoge la próxima vez que se abra.

Barandillas de protección

Da libertad a los usuarios sin dejar que rompan la plantilla

Bloquear GrapesJS no es un modo ni un plan tier — es un conjunto de opciones en una definición de componente. Una región bloqueada sigue renderizándose, exportándose y simplemente se niega a arrastrarse, eliminarse o reestilizarse en el editor.

Cabecera de empresa

Bloqueado

Presente en cada correo, idéntico en cada correo. Nadie necesita moverlo.

Contenido editable

Editable

Texto e imágenes que el remitente está realmente aquí para escribir.

Llamada a la acción

Editable

Etiqueta y enlace editables, y una lista corta de colores — no el marcado debajo.

Pie de base legal

Bloqueado

Identidad del remitente y enlace de baja de suscripción. Una obligación, no una decisión de diseño.

Las opciones que lo producen

Cabecera de empresa
removable: false, draggable: false
Contenido editable
editable: true
Llamada a la acción
stylable: ['background-color', 'color']
Pie de base legal
removable: false, copyable: false

Lo que esto te compra

  • Edición segura para la marca sin paso de revisión en cada envío
  • Contenido de cumplimiento que no puede eliminarse accidentalmente
  • Un Style Manager más corto, que además es un UI más sencillo
  • Bloques aprobados que se comportan igual en cada plantilla
  • Cambios centrales en las secciones compartidas sin tocar los borradores
Véase el patrón controlado sin código

Estas opciones rigen el editor UI. No son autorización. Un proyecto modificado publicado directamente en tu endpoint de guardado está limitado solo por lo que valida tu servidor — así que valida la estructura, las regiones requeridas y los campos permitidos en el backend, cada vez.

Personalización

Crea contenido de correo electrónico dinámico

El correo personalizado son dos problemas distintos: permitir que un usuario coloque un marcador de posición sin conocer la sintaxis y resolver ese marcador con datos reales en el momento de enviarlo. El editor resuelve el primero. Solo tu aplicación puede resolver el segundo.

Etiquetas de fusión en la plantilla

  • {{first_name}}
  • {{company_name}}
  • {{order.total}}
  • {{unsubscribe_url}}

Para el editor, estos son textos ordinarios. Se almacenan exactamente tal y como están escritos y sobreviven guardados, reabiertos y exportados sin tocar.

Cómo los usuarios los insertan

Expone los campos disponibles como un rasgo en tu componente de texto — un desplegable de "Nombre", "Empresa", "Total de pedidos" — y escribe el token tú mismo en el contenido. Los usuarios eligen un campo; nunca aprenden una sintaxis y no pueden inventar una etiqueta que tu renderizador no conozca.

Bloques dinámicos

Un bloque puede ser un marcador de posición para contenido que aún no existe. El usuario introduce una tarjeta de producto y configura qué productos debe mostrar; los valores llegan cuando se muestra el correo.

  1. 1El usuario coloca una tarjeta de producto
  2. 2Tu backend consulta el catálogo en el momento de enviar
  3. 3Se rellenan nombre, precio, imagen y URL
  4. 4El HTML renderizado va a tu proveedor

GrapesJS proporciona la experiencia de edición. Tu backend resuelve datos dinámicos y etiquetas de fusión cuando el correo se renderiza o se envía.

Vista previa

Previsualiza los correos antes de enviarlos

Dos anchos cubren casi toda la revisión de diseño: el ancho al que se crea el correo y un teléfono. Ambos están a un cambio de dispositivo en el editor, y ninguno es lo mismo que hacer pruebas.

Escritorio600pxEl ancho de autoría. Casi todas las plantillas de correo están diseñadas a 600px.
Móvil375pxDonde la mayoría del correo realmente se abre. Comprueba el pedido acumulado y los objetivos de la prensa.

El flujo de trabajo que realmente detecta problemas

  1. 1Vista previa en el editorCambia de dispositivo, desactiva las imágenes y lee el correo con la fuente de respaldo. Esto detecta problemas de estructura y jerarquía en segundos.
  2. 2Inspeccionar la salidaLee el marcado generado para cualquier cosa que no debería estar ahí — una clase perdida, una regla sin línea, un atributo alterno ausente.
  3. 3Enviar a una lista de semillasCuentas reales de los clientes que usa tu audiencia. Este es el único paso que te muestra lo que ven los destinatarios.
  4. 4Añade un servicio de prestación si se gana su lugarLos servicios de terceros capturan una plantilla entre muchos clientes a la vez. Merece la pena cuando envías plantillas con suficiente frecuencia como para que una lista semilla se convierta en el cuello de botella.

Una vista previa en el editor es tu navegador que renderiza el marcado en lienzo. Un cliente de correo muestra una versión transformada de ese marcado a través de su propio motor, y ambos pueden diferir. La vista previa es para revisión de diseño; una lista semilla o un servicio de renderizado es para compatibilidad.

Validación

Valida antes de enviar

La mayoría de los desastres por correo electrónico no generan errores. Son un enlace roto, una etiqueta de fusión sin cubrir o una baja de baja ausente. Los tres son baratos de detectar en el servidor y caros de detectar en una bandeja de entrada.

Contenido

¿Está el correo completo?

Corre antes de que una plantilla pueda salir del borrador.

  • La línea de asunto y el preencabezado están presentes
  • Cada imagen tiene texto alternativo
  • Cada URL de imagen es absoluta y accesible públicamente
  • No quedó ninguna copia provisional de la plantilla
  • Las regiones requeridas siguen presentes en el proyecto
Enlaces

¿Se resuelve todo?

Barato de automatizar y el fallo más común.

  • Cada href es absoluto y devuelve un estatus de éxito
  • No hay errores tipográficos en mailto ni tel
  • Los parámetros de seguimiento se aplican de forma consistente
  • Cada etiqueta de fusión coincide con un campo que conoce tu renderizador
  • No queda ninguna etiqueta sin resolver en la salida renderizada
Cumplimiento

¿Es legal enviarlo?

No es negociable, así que impídelo en código en lugar de en una lista de comprobación.

  • Enlace de baja presente y funcional
  • Identidad del remitente y dirección postal presentes
  • Consentimiento registrado para los destinatarios en este envío
  • Zapata legal bloqueada intacta en el proyecto guardado
  • La salida se limpiaba si alguna parte provenía de la entrada del usuario
Persistencia

Guarda y restaura proyectos de correo electrónico

El Storage Manager es una interfaz, no una base de datos. Implévalo contra tu propio API y el editor carga, guarda y restaura automáticamente a través de endpoints que controlas — que es el punto en el que los borradores, versiones y aprobaciones se vuelven posibles.

El ciclo de vida que define tu backend

  1. Edición
  2. Guardado automático
  3. Borrador
  4. Versión
  5. Aprobado
  6. Publicado
storage-adapter.tsJS
// The editor hands you project JSON; your backend decides
// what a draft, a version and an approved template mean.
editor.Storage.add('email-api', {
  async load({ templateId }) {
    const res = await fetch(`/api/email-templates/${templateId}`);
    return res.json();               // -> project JSON
  },
  async store(data, { templateId }) {
    await fetch(`/api/email-templates/${templateId}`, {
      method: 'PUT',
      headers: { 'Content-Type': 'application/json' },
      // Authorization is enforced server-side. Never trust this call.
      body: JSON.stringify({ project: data }),
    });
  },
});

El guardado automático se limita por el número de cambios en lugar de por un temporizador, así que una ráfaga de ediciones sigue costando una petición. Mantén las versiones como copias inmutables del proyecto JSON — restaurar una revisión entonces solo cuesta cargar, y una mala edición deja de ser un incidente.

Entrega

Conecta tu infraestructura de correo electrónico existente

Nada en esta arquitectura te pide cambiar cómo envías el correo. El editor produce un documento; tu backend lo renderiza y se lo entrega al proveedor que ya pagas.

  1. 01

    GrapesJS

    Produce el proyecto y, a petición, el marco. No sabe nada sobre los destinatarios.

  2. 02

    HTML / MJML

    Generados bajo demanda desde el proyecto almacenado, con estilos en línea o MJML compilados.

  3. 03

    Tu backend

    Resuelve las etiquetas de fusión, valida la salida, registra la campaña, llama al proveedor.

  4. 04

    Tu proveedor

    Entrega el correo y reporta rebotes, quejas, abre y vuelve a enviarte.

Ejemplos de dónde publica tu backend

  • Mailgun
  • Postmark
  • SendGrid

Listados alfabéticamente como ilustraciones del último salto. Cualquier proveedor con un endpoint HTTP API o SMTP tiene la misma forma, y cambiar uno por otro no toca el editor.

GrapesJS es el editor, no tu servicio de correo electrónico.

Ni GrapesJS ni GJS.Market incluyen integración con ningún proveedor mencionado anteriormente, y no se implica ninguna colaboración. La entrega de la entregabilidad, la autenticación y la gestión de supresión siguen siendo responsabilidad de tu proveedor y tu aplicación.

send-campaign.tsts
// Server side. GrapesJS is not in this file — and that is the point.
const template = await db.emailTemplates.find(templateId);

// 1. Your application resolves merge tags. The editor never does.
const html = renderMergeTags(template.html, {
  first_name: user.firstName,
  unsubscribe_url: unsubscribeUrlFor(user),
});

// 2. Your ESP delivers it. Swap the client, keep the editor.
await esp.send({ to: user.email, subject: template.subject, html });
Casos de uso

¿Qué puedes construir?

La misma capa de edición, empaquetada de ocho maneras diferentes. Lo que cambia entre ellas es quién edita, qué pueden cambiar y dónde va el resultado.

Generador de correo SaaS

Deja que los clientes diseñen el ciclo de vida y el correo electrónico de campañas dentro de tu producto, según plantillas y bloques que controlas por plan.

Arquitectura de un builder SaaS

Generador de boletines

Proporciona a un equipo de marketing un editor visual para un formato recurrente, con un bloque de artículos que mantenga cada número consistente.

Plugins para boletines

Constructor de automatización de marketing

Crea los correos que se encuentran dentro de campañas y flujos de trabajo, compartiendo bloques con las páginas de destino a las que apuntan.

Creador de páginas de aterrizaje

Editor de correo electrónico transaccional

Plantillas muy controladas para recibos y notificaciones — mayormente bloqueadas, con un pequeño centro editable.

Sistemas de plantillas

Editor de correo CMS

Deja que los equipos de contenido reutilicen los bloques con los que ya escriben contenido web, almacenados junto al resto del modelo de contenido.

Edición con CMS headless

Generador de correo electrónico para agencias

Un editor, un conjunto de bloques de marca por cliente y plantillas que no se pueden desajustar entre reseñas.

Constructores de marca blanca

Herramienta interna de correo electrónico

Proporciona a los equipos internos un editor controlado en lugar de un archivo HTML compartido y una cola de peticiones.

No-code para desarrolladores

Generador de correo electrónico de marca blanca

Haz que el editor parezca y se comporte como parte de tu producto, hasta en los paneles, los iconos y el lenguaje.

Etiqueta blanca al editor
Construir vs adoptar

¿Deberías construir un editor de correo desde cero?

No es un juicio, es una comprobación de alcance. Cada fila es algo que necesita un creador de correos electrónicos. La columna de la izquierda es el trabajo que poseerías; la derecha es lo que GrapesJS te da antes de escribir un componente.

CapacidadDesde ceroCon GrapesJS
Lienzo visualConstrúyeloDisponible
Arrastrar y soltarConstrúyeloDisponible
Modelo de componentesConstrúyeloDisponible
Biblioteca de bloquesConstrúyeloExtensible
Edición de estiloConstrúyeloDisponible
Árbol de capasConstrúyeloDisponible
Deshacer / volver a hacerConstrúyeloDisponible
Gestión de activosConstrúyeloDisponible
Integración de almacenamientoConstrúyeloConfigurable
Componentes personalizadosConstrúyeloCompatible
Arquitectura de pluginsConstrúyeloCompatible

"Disponible" significa que la capacidad viene con el núcleo y necesita configuración, no construcción. No significa que no necesite trabajo: todo creador serio de correo define sus propios componentes, restringe sus estilos y escribe su propio adaptador de almacenamiento. Verificado frente a grapesjs 0.23.6 en 2026-09-03.

Construye tu producto de correo electrónico, no otro motor de edición.

Mercado

Amplía tu generador de correo electrónico con plugins

Listados reales del catálogo GJS.Market, agrupados por la etapa de la construcción a la que pertenecen. Nombres, precios e imágenes vienen directamente del mercado, así que lo que ves aquí es lo que realmente se está a la venta hoy.

Base del editor de correo

Qué convierte un editor de páginas en un editor de correo electrónico: bloques basados en tablas, un Style Manager con forma de correo electrónico, importación y exportación.

Explora la categoría

Plantillas

Una biblioteca de puntos de partida, para que nadie empiece un correo desde un lienzo vacío.

Explora la categoría

La escotilla de escape

Para la única parte de un correo electrónico que debe estar escrita a mano — un píxel de seguimiento, un bloque específico del proveedor, un fragmento proporcionado legalmente.

Explora la categoría

Enviar el correo

Exporta el documento terminado para el traspaso, revisión o una pipeline de construcción existente.

Explora la categoría

Algunas capacidades de esta página no tienen ningún plugin detrás, y esta sección no inventará ninguno: no hay producto de vista previa o de comprobación de spam, ni producto CSS-inliner, ni producto de etiqueta de fusión ni producto de plantilla de correo electrónico ya hecho en el catálogo. Estos se describen aquí como patrones a implementar, o como trabajo que nuestro equipo puede hacer contigo.

Stacks

Monta el stack de tu generador de correo

Cuatro montajes, montadas solo a partir de anuncios que existen hoy en día. Empieza en la fila que coincide con lo que estás enviando y añade la siguiente capa cuando gane su lugar.

Los precios provienen del catálogo en vivo en el momento de la compilación. Los listados gratuitos están marcados; los de pago enlazan directamente a su página de producto.

Inicio rápido

Crea un generador de correos electrónicos de arrastrar y soltar en 5 pasos

La forma de la obra, en el orden en que tiene sentido hacerla. Cada paso enlaza con la guía que lo cubre correctamente — esta página es un mapa, no un tutorial.

  1. 1

    Inicializar el editor

    Monta GrapesJS en un contenedor, configura las necesidades de correo de los dos dispositivos y desactiva el almacenamiento local por defecto antes que nada.

    Guía de configuración de GrapesJS
  2. 2

    Definir componentes de correo electrónico

    Escribe los componentes basados en tablas de los que están hechos tus correos, limita lo que se puede estilizar y expone cada uno como un bloque.

    Componentes de correo electrónico en profundidad
  3. 3

    Añadir plantillas

    Da a los usuarios un lugar para empezar. Guarda las plantillas como proyecto JSON y clonas al usarlas en lugar de editar la original.

    Sistemas de plantillas
  4. 4

    Proyectos de tienda

    Implementa un adaptador de almacenamiento en tu API para que los drafts, autosave y versiones sean tuyos para definir.

    Plugins de almacenamiento
  5. 5

    Renderizar y enviar

    Genera el marcado al enviar, resuelve las etiquetas de fusión en el lado del servidor y entrega el resultado a tu proveedor.

    Busca ayuda con la construcción
email-editor.tsts
import grapesjs from 'grapesjs';
import newsletter from 'grapesjs-preset-newsletter';

const editor = grapesjs.init({
  container: '#email-editor',
  height: '100%',
  // Email is authored at a fixed width; give users one extra viewport
  // to check, not a full responsive breakpoint set.
  deviceManager: {
    devices: [
      { id: 'desktop', name: 'Desktop', width: '' },
      { id: 'mobile', name: 'Mobile', width: '375px' },
    ],
  },
  // Curated blocks only: the preset's table sections, plus your own.
  plugins: [
    (ed) => newsletter(ed, { inlineCss: true, showBlocksOnLoad: true }),
  ],
  // Point the editor at your API rather than the browser's localStorage.
  storageManager: {
    type: 'remote',
    autosave: true,
    stepsBeforeSave: 10,
  },
});
email-button.tsts
// An email-safe button: users edit the label and the link,
// never the table markup that makes it render in Outlook.
editor.DomComponents.addType('email-button', {
  isComponent: (el) => el.dataset?.type === 'email-button',
  model: {
    defaults: {
      draggable: '[data-gjs-type="cell"], td',
      // Users may recolour it; they may not restyle it into a div.
      stylable: ['background-color', 'color', 'border-radius'],
      traits: [
        { name: 'href', label: 'Link' },
        { name: 'label', label: 'Button text' },
      ],
      components: `
        <table role="presentation" cellpadding="0" cellspacing="0">
          <tr><td><a href="#">Read the update</a></td></tr>
        </table>`,
    },
  },
});

Ambas muestras se ejecutan contra grapesjs 0.23.6. 'grapesjs-preset-newsletter' y 'grapesjs-mjml' son paquetes BSD-3-Clause separados — el núcleo entrega sin preajuste de correo electrónico — así que instala el formato de salida que elegiste arriba.

Antes del lanzamiento

Lista de verificación de producción

¿Qué diferencia una demo funcional de un generador de correo electrónico que puedes entregar a los clientes? Todo aquí es tu trabajo, no del editor.

Editor

La experiencia de edición

Lo que los usuarios pueden y no pueden hacer.

  • Biblioteca de bloques seleccionada, no el conjunto por defecto
  • Componentes seguros para correo electrónico con estilos restringidos
  • Edición responsiva en ambos anchos de dispositivo
  • Plantillas disponibles desde un estado vacío
  • Encabezado, pie de página y zonas legales bloqueadas
Datos

Persistencia

Nada de lo que crea un usuario debería perderse.

  • El proyecto JSON persistió a través de tu propio API
  • Autoguardado limitado por el número de cambios
  • Historial de versiones inmutable con restauración
  • Copias de seguridad que cubren el almacén de plantillas
  • Un camino probado para reabrir un proyecto antiguo
Salida

Lo que sale del sistema

Validado en el servidor, siempre.

  • Salida HTML o MJML validada antes del envío
  • Cada enlace comprobado y absoluto
  • Cada etiqueta de fusión resoluble
  • Cada URL de imagen pública y permanente
  • HTML proporcionado por el usuario, saneado
Correo electrónico

Capacidad de entrega y legislación

Las partes que no tienen que ver con el diseño.

  • Probado con los clientes que utiliza tu audiencia
  • Comprobado en un móvil, no solo en un escritorio
  • Funcionando para cancelar la suscripción en cada envío
  • Identidad del remitente y dirección en el pie de página
  • El seguimiento y el consentimiento se gestionan según la jurisdicción
Seguridad

Dónde se comprometen los generadores de correo

Un generador de correo acepta marcado creado por usuarios y lo envía a terceros. Esa combinación merece más cuidado que una función CRUD típica.

  • Riesgo

    Confiar en las restricciones del editor

    Las regiones bloqueadas, estilos restringidos y bloques ocultos están en el navegador. Una solicitud elaborada puede publicar cualquier proyecto que desee.

    Qué hacer

    Valida el proyecto guardado en el servidor: regiones requeridas presentes, tipos de componentes en una lista de permisos, campos dentro de los límites.

  • Riesgo

    Enviar código personalizado sin desinfectar

    Un componente de incrustación de código es una solicitud de función que llega a todos los creadores de correo electrónico, y es una superficie de inyección dirigida a las bandejas de entrada de tus clientes.

    Qué hacer

    Limpia el marcado almacenado y vuelve a desinfectar en el renderizado. Limita quién puede usar un componente de código y registra cada uso del mismo.

  • Riesgo

    Aceptar cualquier archivo subido

    Las subidas enviadas por un editor acaban en URLs públicas que duran tanto como el correo electrónico.

    Qué hacer

    Validar el tipo y tamaño en el servidor, volver a codificar imágenes y servir activos desde un dominio que no contenga cookies de sesión.

  • Riesgo

    Dejar el endpoint de envío subprotegido

    El renderizado y el envío son operaciones costosas e irreversibles. Normalmente están protegidas con menos cuidado que la ruta del editor.

    Qué hacer

    Autoriza por plantilla y por lista de destinatarios, envía con límite de tasa y exige una segunda comprobación antes de que cualquier cosa llegue a una audiencia completa.

  • Riesgo

    Resolver etiquetas de fusión con lo que esté dentro del alcance

    Un generador permisivo de plantillas interpolará encantado un campo que el remitente nunca debería ver.

    Qué hacer

    Resuelve contra una lista explícita de campos permitidos para esa plantilla y falla el renderizado con una etiqueta desconocida en lugar de emitirla.

Rendimiento

Mantén el generador de correos rápido

El editor es una gran dependencia que vive dentro de tu aplicación. Estas son las palancas que importan, en el orden en que normalmente se benefician.

  • Carga el editor con pereza

    Importala solo en la ruta que edita un correo electrónico y solo en el navegador. Nada del editor pertenece a un renderizado del servidor ni a tu paquete principal.

  • Plugins opcionales de carga perezosa

    Un visor de código, un editor de imágenes o un compilador MJML pueden llegar cuando el usuario abre ese panel en lugar de en init.

  • Mantén la biblioteca de bloques corta

    Cada bloque se analiza con marcado al inicio y se renderiza una tarjeta en la paleta. Un conjunto seleccionado es más rápido y seguro.

  • Debounce autosave

    Reduce la velocidad por número de cambios en lugar de por pulsación de teclas, así que una ráfaga de escritura produce una petición en lugar de treinta.

  • Mantén los datos del proyecto ágiles

    Referencia los recursos por URL. Las imágenes de Base64 dentro del proyecto JSON hacen que cada carga, guardado y copia de versión sea más pesado.

  • Vigila los componentes personalizados

    La lógica de componentes que se ejecuta en cada cambio es la causa habitual de un lienzo que se siente lento en correos largos.

Aquí no se citan cifras a propósito: las cifras dependen de tu recuento de bloques, la lógica de tus componentes y el hardware de tus usuarios. Mide la ruta del editor en tu propia aplicación antes y después de cada cambio.

La decisión

Creador de correo electrónico autoalojado vs plataforma alojada

Ahora que la arquitectura está clara, el compromiso es fácil de expresar. Un constructor alojado es más rápido de presentar ante un cliente; un constructor que posees es una característica de tu producto y no una dependencia de él.

Plataforma alojada de creación de correo electrónico

Un editor embebido operado por un proveedor, integrado a través de su API y su UI.

Lo que obtienes

  • Infraestructura operada por el proveedor
  • La residencia y retención de datos dependen del proveedor
  • La personalización de UI varía según el producto y el plan
  • Los componentes personalizados varían según el producto y el plan
  • La marca depende del plan que sepas
  • Integración de backend a través del API del proveedor
  • El envío depende del modelo de la plataforma
  • El editor sigue siendo una herramienta externa dentro de tu producto

La ruta más rápida para llegar a un editor funcional, con la hoja de ruta y los precios que pertenecen a otra persona.

Compárese con un proveedor alojado

Tu constructor basado en GrapesJS

Una capa de edición de código abierto que configuras, extiendes y despliegas como parte de tu propia aplicación.

Lo que obtienes

  • La infraestructura es tuya, dondequiera que ya estés
  • Los datos permanecen en tu base de datos bajo tus políticas
  • El UI es tu UI, hasta en los paneles y el lenguaje
  • Los componentes personalizados son código de aplicación ordinario
  • La marca es el aspecto de tu producto
  • La integración backend es tu propia arquitectura
  • Enviar permaneces con el proveedor que ya usas
  • El editor es una función nativa, no una herramienta incrustada

Más trabajo al principio y un editor que crece con tu producto en vez de alrededor de él.

Empieza a construir

Las plataformas alojadas difieren sustancialmente entre sí, por eso la columna de la izquierda dice "depende del proveedor" en lugar de hacer una afirmación general. Consulta los términos específicos del proveedor sobre localización, retención, límites de personalización y qué ocurre con tus plantillas si te vas.

Integración

Utiliza el generador de correo electrónico con tu pila de aplicaciones

GrapesJS se renderiza en un elemento DOM simple, así que integrarlo es una cuestión de qué hook de ciclo de vida llama a init y a cuál llama destroy. Tu framework alimenta tu aplicación; GrapesJS alimenta la capa de edición visual de correo electrónico.

Empieza con el tutorial de GrapesJS
FAQ

Preguntas sobre el creador de correos electrónicos de arrastrar y soltar

¿Qué es un generador de correo electrónico de arrastrar y soltar?

Un editor visual que permite a alguien ensamblar un correo electrónico a partir de componentes reutilizables — cabecera, texto, imagen, botón, pie de página — en lugar de escribir a mano con marcado de tabla y CSS en línea. Las reglas del correo electrónico HTML se codifican una sola vez, en los componentes, en lugar de ser aprendidas por todos los que escriben un correo.

¿Puedo crear un generador de correos electrónicos de arrastrar y soltar con GrapesJS?

Sí. GrapesJS suministra el lienzo, arrastrar y soltar, modelo de componentes, biblioteca de bloques, paneles de estilo y rasgos, árbol de capas, deshacer/rehacer y serialización de proyectos. Tú suministras los componentes seguros para correo electrónico, las plantillas, el adaptador de almacenamiento y la tubería de envío.

¿GrapesJS soporta edición de correos electrónicos?

El núcleo es un framework general de construcción web y no incluye preajustes de correo electrónico. El soporte para correo electrónico proviene de plugins: grapesjs-preset-newsletter añade bloques basados en tablas, un comando de exportación orientado a correo electrónico Style Manager y un comando de exportación CSS-inlineing, y grapesjs-mjml añade componentes MJML. Ambos son paquetes BSD-3-Clause separados.

¿Puedo usar MJML con GrapesJS?

Sí, a través del plugin grapesjs-mjml. Renderiza los componentes MJML en vivo en el lienzo usando la compilación del navegador del compilador MJML. editor.runCommand('mjml-code') devuelve la fuente MJML y mjml-code-to-html la compila a HTML.

¿Puedo exportar correos HTML?

Sí. editor.getHtml() devuelve el marcado canvas, y el preajuste del boletín añade gjs-get-inlined-html, que devuelve HTML con el CSS en línea — que es lo que quieres enviar. También puedes hacer inline en tu propio pipeline backend si prefieres mantener ese paso en el lado del servidor.

¿Puedo almacenar plantillas de correo electrónico en mi propia base de datos?

Sí, y deberías. El Storage Manager es una interfaz: implementa load y store contra tu API y el editor persiste proyectando JSON en tu base de datos. Nada se almacena en ningún servicio de terceros a menos que decidas ponerlo allí.

¿Puedo crear bloques de correo personalizados?

Sí. Define un tipo de componente con el marcado de la tabla, el traits y las restricciones de estilo que quieras, luego registra un bloque que lo inserte. Esta es la palanca principal que tienes sobre lo que los usuarios pueden producir, y es código de aplicación ordinario.

¿Puedo bloquear partes de una plantilla de correo electrónico?

Sí, con opciones de componentes como removable: false, draggable: false, copyable: false y una lista stylable restringida. Ten en cuenta que estas gobiernan el editor UI — tu servidor aún tiene que validar que un proyecto guardado contiene las regiones que debe contener.

¿Puedo usar etiquetas de fusión y contenido dinámico?

Sí. El editor trata una etiqueta como {{first_name}} como texto normal y la almacena sin tocar, así que puedes colocar etiquetas a través de un desplegable de rasgos en lugar de hacer que los usuarios aprendan sintaxis. Resolver esas etiquetas con datos reales ocurre en tu backend en tiempo de renderizado — GrapesJS no lo hace.

¿Puedo conectar SendGrid, Mailgun o Postmark?

Tu backend puede, igual que hoy: generar el HTML, resolver las etiquetas de fusión, llamar al API del proveedor. GrapesJS no está en esa ruta de solicitud, y ni GrapesJS ni GJS.Market incluyen integración con ninguno de esos proveedores.

¿GrapesJS envía correos electrónicos?

No. Es un editor. La entrega, los rebotes, las quejas, las listas de supresión y los eventos de interacción pertenecen a tu proveedor de correo electrónico, y los registros de campaña y la programación pertenecen a tu aplicación.

¿Puedo usar el constructor en React?

Sí. Monta el editor en un efecto contra un contenedor referenciado, mantén ese contenedor fuera de la ruta de render de React y destruye la instancia al desmontar. Existe un paquete oficial de envolvimiento React si prefieres componentes a la gestión manual del ciclo de vida.

¿Puedo usarlo con Vue o Angular?

Sí. GrapesJS renderiza en un elemento DOM simple, así que la integración consiste en llamar a init desde el gancho de montaje de tu framework y destruir desde su gancho de desmontaje. No hay un envoltorio oficial Vue o Angular, y no se necesita.

¿Puedo poner una marca blanca en el generador de correos electrónicos?

Sí. Los paneles, botones, iconos, la hoja de estilos y las propias cadenas de la interfaz del editor son configurables, para que el editor pueda parecer y leerse como parte de tu producto en lugar de como una herramienta de terceros incrustada.

¿Debería construir un editor de correo desde cero?

Solo si el propio motor de edición es tu producto. Si lo que vendes es un producto por correo electrónico — plantillas, campañas, personalización, entrega — entonces el modelo de lienzo, arrastrar y soltar y componentes son trabajos indiferenciados, y adoptar un motor existente deja el presupuesto para las piezas que los clientes realmente notan.
Servicios

¿Necesitas ayuda para crear tu generador de correos electrónicos?

Si prefieres que esto funcione antes que investigarlo, nuestro equipo crea editores de correo basados en GrapesJS como un servicio — incluyendo las partes de esta página que no tienen ningún plugin detrás.

  • Integración de GrapesJS en una aplicación existente
  • Componentes personalizados para correo electrónico
  • Integración y compilación de MJML
  • Bibliotecas de bloques seleccionadas
  • Adaptadores de almacenamiento e historial de versiones
  • Sistemas de plantillas y bibliotecas iniciales
  • Etiquetas de fusión y bloques dinámicos
  • Editor de marca blanca UI
  • Plugins personalizados
  • Flujos de trabajo de publicación y aprobación
Habla con un experto en GrapesJS
Empieza

Construye tu generador de correo electrónico

Ofrece a tus usuarios una forma visual de crear correos electrónicos sin obligar a tu equipo de desarrollo a construir un editor de correo desde cero.

Construir

Empieza a construir con GrapesJS

Cuéntanos qué tiene que hacer el editor y obtén un plan definido para la integración.

Empieza a construir

Tus usuarios crean los correos. Tu producto es el dueño de la experiencia.