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: Text o HTML
  • 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:

TipoQué permiteCuándo usarlo
TextSolo texto sin formatoAlertas internas, mensajes simples, máxima compatibilidad
HTMLNegritas, listas, enlaces, colores, imágenesCorreos 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:

CampoQuién lo recibeLo ven los demásÚsalo para...
ToEl destinatario principalA quién va dirigido el correo
CC (con copia)Copia informativaSí — todos ven a todos"Que se entere, pero no es para él/ella"
BCC (copia oculta)Copia ocultaNo — nadie ve a los BCCEnviar 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@..., muestra Equipo 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 a support@....

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

  1. Envío simple: Manual Trigger → Gmail (Send, Text) — un correo de texto a ti mismo
  2. 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
  3. Envío individual a lista: Google Sheets (Get Row(s) de tu hoja Leads CRM del Módulo 1) → Gmail (Send) — un correo personalizado a cada lead, con To y name diná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 CRM tiene 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

  1. n8n Gmail node Docs - Operación Send y sus opciones.
  2. HTML para email (guía simple) - Qué HTML/CSS funciona bien en correos.
  3. n8n Wait node Docs - Para espaciar envíos en volumen.

Creado: Mayo 14, 2026 Versión: 1.0