Módulo 2: Gmail y Email
Enviar Correos
Descripción de la cápsula
Enviar es la dirección más usada del email automatizado: correos de bienvenida, confirmaciones de pedido, alertas internas, recordatorios, follow-ups. Si automatizas un solo proceso de email en tu vida, probablemente sea un envío.
En la cápsula 02 ya enviaste un correo de texto plano de prueba. Esta cápsula te lleva a enviar correos de verdad: con formato HTML para que se vean profesionales, con varios destinatarios usando To/CC/BCC correctamente, con archivos adjuntos, y — lo más importante — con el cuerpo compuesto dinámicamente a partir de los datos que llegan al workflow.
El reto real de enviar no es técnico, es de diseño: un correo automático tiene que verse como si lo hubiera escrito una persona, no una máquina. Esta cápsula te da las herramientas para lograrlo.
Lo que vas a aprender
Al terminar esta cápsula serás capaz de:
- ✅ Enviar correos en HTML con formato (negritas, listas, enlaces)
- ✅ Componer el cuerpo dinámicamente con datos de nodos anteriores
- ✅ Usar To, CC y BCC correctamente y saber cuándo cada uno
- ✅ Adjuntar archivos a un correo
- ✅ Personalizar el remitente (nombre visible) y configurar respuestas
- ✅ Enviar a varios destinatarios a partir de una lista
La operación Send
Configuración base del nodo Gmail:
- Resource:
Message - Operation:
Send - To: destinatario(s)
- Subject: asunto
- Email Type:
TextoHTML - Message: el cuerpo del correo
Lo viste en la cápsula 02 con texto plano. Ahora cada campo se vuelve más rico.
Texto plano vs HTML
El campo Email Type decide cómo se interpreta el cuerpo:
| Tipo | Qué permite | Cuándo usarlo |
|---|---|---|
| Text | Solo texto sin formato | Alertas internas, mensajes simples, máxima compatibilidad |
| HTML | Negritas, listas, enlaces, colores, imágenes | Correos a clientes, bienvenidas, cualquier cosa "presentable" |
Cuerpo HTML básico
Con Email Type: HTML, el campo Message acepta etiquetas HTML:
<p>Hola {{ $json.name }},</p>
<p>Gracias por registrarte. Tu cuenta ya está activa.</p>
<p>Algunos primeros pasos:</p>
<ul>
<li>Completa tu perfil</li>
<li>Explora el catálogo</li>
</ul>
<p>Un saludo,<br>El equipo</p>
No te compliques con HTML elaborado. Para correos automáticos de negocio, HTML simple (párrafos, listas, un enlace, quizás negritas) se ve profesional y llega bien. Los correos con diseño complejo de tablas e imágenes son más propensos a verse rotos y a caer en spam. Menos es más.
Componer el cuerpo dinámicamente
El poder real está en que el correo cambia según los datos. El cuerpo es una mezcla de texto fijo y expressions:
<p>Hola {{ $json.name }},</p>
<p>Confirmamos tu pedido <strong>#{{ $json.order_number }}</strong>.</p>
<p>Total: ${{ $json.total }}</p>
<p>Fecha estimada de entrega: {{ $json.delivery_date }}</p>
El Subject también puede ser dinámico:
Confirmación de tu pedido #{{ $json.order_number }}
Esto es exactamente el mapeo del Módulo 1 (cápsula 06), aplicado al correo: defensivo, con valores por defecto para campos opcionales:
<p>Hola {{ $json.name || 'cliente' }},</p>
To, CC y BCC: cuál es cuál
Los tres campos de destinatario tienen significados distintos y se confunden mucho:
| Campo | Quién lo recibe | Lo ven los demás | Úsalo para... |
|---|---|---|---|
| To | El destinatario principal | Sí | A quién va dirigido el correo |
| CC (con copia) | Copia informativa | Sí — todos ven a todos | "Que se entere, pero no es para él/ella" |
| BCC (copia oculta) | Copia oculta | No — nadie ve a los BCC | Enviar a muchos sin exponer sus direcciones |
El error que NO debes cometer
Nunca pongas una lista de clientes en CC. Todos verían los correos de todos los demás — es una fuga de datos y se ve terriblemente poco profesional. Si vas a enviar el mismo correo a varias personas que no se conocen entre sí: usa BCC, o mejor aún, envía un correo individual a cada uno (más abajo).
Configurar varios destinatarios
En los campos To/CC/BCC puedes poner varias direcciones separadas por coma:
ana@example.com, beto@example.com
O con una expression si la lista viene de datos:
{{ $json.recipients }}
Enviar un correo individual a cada persona
El escenario más común de "envío masivo" bien hecho: tienes una lista de 50 leads en una hoja, quieres mandarle a cada uno un correo personalizado.
La clave — y esto conecta con el Módulo 1: n8n itera sobre items automáticamente.
Google Sheets (Get Row(s)) → Gmail (Send)
Si Google Sheets devuelve 50 items (50 leads), el nodo Gmail se ejecuta 50 veces, una por lead. Y como el To y el Message usan {{ $json.email }} y {{ $json.name }}, cada correo es individual y personalizado. No necesitas un loop.
Ventajas sobre BCC:
- Cada persona recibe su correo, con su nombre
- Nadie ve a nadie más
- Se ve como un correo real, no como un envío masivo
Cuidado con el volumen. Enviar 50 correos en segundos puede chocar con los límites de envío de Gmail (cápsula 07). Para listas grandes, un nodo Wait entre envíos, o procesar en lotes.
Adjuntar archivos
Para enviar un archivo adjunto, el nodo Gmail tiene una opción de Attachments.
El archivo tiene que llegar como binary data desde un nodo anterior — por ejemplo:
- Un nodo HTTP Request que descargó un PDF
- Un nodo de Google Drive que leyó un archivo
- Un nodo que generó un documento
En el nodo Gmail → Add Option → Attachments → indicas el nombre del campo binario (normalmente data).
Los adjuntos son territorio más avanzado porque dependen del manejo de binary data, que se profundiza en G4. Para este módulo, basta con saber que la opción existe y que el archivo debe venir como binario de un nodo anterior.
Personalizar el remitente
Por defecto, el correo sale de la dirección de la credencial. Pero puedes ajustar cómo se ve:
- Sender Name: el nombre visible (en vez de mostrar solo
automations@..., muestraEquipo de Soporte). Está en las opciones del nodo. - Reply To: la dirección a la que se responde. Útil si el correo sale de
automations@...pero quieres que las respuestas lleguen asupport@....
Estos dos campos pequeños hacen una diferencia grande en cómo se percibe el correo. Un correo de "Equipo de Soporte" con reply-to a una dirección real se siente humano. Un correo de
noreply@...se siente como spam.
Trampas comunes
Trampa 1: Lista de clientes en CC
Qué pasa: Pones 30 clientes en CC. Los 30 ven los correos de los otros 29. Fuga de datos, queja garantizada.
Cómo evitar: Para varios destinatarios que no se conocen: BCC, o mejor, un correo individual por persona (iterando items).
Trampa 2: HTML que se ve roto
Qué pasa: Copias HTML elaborado de una plantilla y en algunos clientes de correo se ve descuadrado.
Cómo evitar: HTML simple — párrafos, listas, enlaces, negritas. Nada de layouts complejos. Pruébalo enviándotelo a ti mismo y mirándolo en el móvil.
Trampa 3: Expressions sin valor por defecto
Qué pasa: El correo dice "Hola undefined," porque el campo name no llegó.
Cómo evitar: Diseño defensivo: {{ $json.name || 'cliente' }} en todo campo que pueda faltar (cápsula 06 del Módulo 1).
Trampa 4: Enviar 50 correos de golpe y chocar con límites
Qué pasa: Procesas una lista de 200 leads, los 200 correos salen en segundos, Gmail empieza a rechazar envíos.
Cómo evitar: Para volumen alto, agrega un Wait entre envíos o procesa en lotes. Gmail tiene límites de envío diarios (cápsula 07).
Trampa 5: Asunto vacío o genérico
Qué pasa: El asunto dice "Notificación" o queda vacío. El correo parece spam y nadie lo abre.
Cómo evitar: Asunto específico y dinámico: Confirmación de tu pedido #4521, no Notificación.
Ejercicio: tres envíos
Objetivo: practicar texto plano, HTML dinámico, y envío individual a una lista.
Tu tarea
- Envío simple: Manual Trigger → Gmail (Send, Text) — un correo de texto a ti mismo
- Envío HTML dinámico: Manual Trigger → Set (name, order, total) → Gmail (Send, HTML) — una confirmación de pedido con formato, usando expressions en el cuerpo y el asunto
- Envío individual a lista: Google Sheets (Get Row(s) de tu hoja
Leads CRMdel Módulo 1) → Gmail (Send) — un correo personalizado a cada lead, conToynamedinámicos
Ver pistas
- En el 2, recuerda Email Type: HTML, y usa
{{ $json.x }}tanto en Subject como en Message - En el 3, no necesitas loop — el nodo Gmail itera sobre los items que devuelve Google Sheets. Confirma que
To={{ $json.email }} - Si tu hoja
Leads CRMtiene emails de prueba que no son reales, usa una hoja con 2-3 direcciones tuyas reales para esta prueba
Resumen y siguiente paso
- Send es la operación de envío; el cuerpo puede ser texto plano o HTML
- HTML simple (párrafos, listas, enlaces) se ve profesional y llega bien — evita layouts complejos
- El cuerpo y el asunto se componen dinámicamente con expressions y valores por defecto
- To = destinatario principal, CC = copia visible, BCC = copia oculta — nunca pongas clientes en CC
- Para enviar a una lista: deja que n8n itere sobre items — un correo individual y personalizado por persona, sin loop
- Sender Name y Reply To hacen que el correo se perciba humano
- 5 trampas: clientes en CC, HTML roto, expressions sin default, volumen sin Wait, asuntos genéricos
Antes de avanzar deberías poder:
- Enviar un correo HTML con cuerpo dinámico
- Elegir correctamente entre To, CC y BCC
- Enviar un correo personalizado a cada item de una lista
Lo que sigue (cápsula 04):
Ya dominas la dirección de salida. Ahora la de entrada: el Gmail Trigger. Vas a hacer que un correo entrante dispare un workflow — la base de cualquier automatización que reaccione a lo que la gente te escribe.
Recursos adicionales
- n8n Gmail node Docs - Operación Send y sus opciones.
- HTML para email (guía simple) - Qué HTML/CSS funciona bien en correos.
- n8n Wait node Docs - Para espaciar envíos en volumen.
Creado: Mayo 14, 2026 Versión: 1.0