Enviar correos en frío
Este flujo automatiza el envío masivo y personalizado de promociones. Primero, unifica la información de un producto (entrada manual) con una base de datos de contactos desde Google Sheets. Posteriormente, inicia un bucle de procesamiento donde, para cada
graph TD
%%{init: {'theme': 'mc','layout': 'elk'}}%%
GSheetCellComponent-1ujen[Sheet Cells ]
style GSheetCellComponent-1ujen stroke:#a170ff
GoogleGenerativeAIModel-30xv3[Gemini]
style GoogleGenerativeAIModel-30xv3 stroke:#a170ff
GmailMesageComponent-0c0un[<div><img alt="logo" src="/_astro/gmail.CLxyIGOu.svg" style="height: 20px !important;width: 20px !important"/></div>Gmail Message]
style GmailMesageComponent-0c0un stroke:#a170ff
Prompt-dufy4[<div><img alt="logo" src="/_astro/square-terminal.BMOXc-nZ.svg" style="height: 20px !important;width: 20px !important"/></div>Prompt]
style Prompt-dufy4 stroke:#a170ff
Loop-x4kgp[Loop]
style Loop-x4kgp stroke:#a170ff
CreateData-lk556[Create Data]
style CreateData-lk556 stroke:#a170ff
Switch-4pxix[Switch]
style Switch-4pxix stroke:#a170ff
GSheetCellComponent-lry71[Sheet Cells 2]
style GSheetCellComponent-lry71 stroke:#a170ff
TextInput-qh2y0[<div><img alt="logo" src="/_astro/type.Dy26vmDy.svg" style="height: 20px !important;width: 20px !important"/></div>Text Input]
style TextInput-qh2y0 stroke:#a170ff
GoogleGenerativeAIModel-z1mmi[Gemini2]
style GoogleGenerativeAIModel-z1mmi stroke:#a170ff
Prompt-eyrkb[<div><img alt="logo" src="/_astro/square-terminal.BMOXc-nZ.svg" style="height: 20px !important;width: 20px !important"/></div>Prompt2]
style Prompt-eyrkb stroke:#a170ff
ParseData-z3lo1[<div><img alt="logo" src="/_astro/braces.Djq0PW4_.svg" style="height: 20px !important;width: 20px !important"/></div>dirección]
style ParseData-z3lo1 stroke:#a170ff
ParseData-sg4v4[<div><img alt="logo" src="/_astro/braces.Djq0PW4_.svg" style="height: 20px !important;width: 20px !important"/></div>Fin]
style ParseData-sg4v4 stroke:#a170ff
ParseData-e32rl[<div><img alt="logo" src="/_astro/braces.Djq0PW4_.svg" style="height: 20px !important;width: 20px !important"/></div>dirección2]
style ParseData-e32rl stroke:#a170ff
LoopEnd-96ajm[Loop End]
style LoopEnd-96ajm stroke:#a170ff
CreateData-lk556 -.- Loop-x4kgp
linkStyle 0 stroke:#a170ff
GSheetCellComponent-1ujen -.- Switch-4pxix
linkStyle 1 stroke:#a170ff
Switch-4pxix -.- GSheetCellComponent-lry71
linkStyle 2 stroke:#a170ff
GSheetCellComponent-lry71 -.- CreateData-lk556
linkStyle 3 stroke:#a170ff
TextInput-qh2y0 -.- CreateData-lk556
linkStyle 4 stroke:#a170ff
Loop-x4kgp -.- ParseData-z3lo1
linkStyle 5 stroke:#a170ff
Loop-x4kgp -.- ParseData-sg4v4
linkStyle 6 stroke:#a170ff
GoogleGenerativeAIModel-30xv3 -.- Prompt-eyrkb
linkStyle 7 stroke:#a170ff
Prompt-eyrkb -.- GoogleGenerativeAIModel-z1mmi
linkStyle 8 stroke:#a170ff
GoogleGenerativeAIModel-30xv3 -.- GmailMesageComponent-0c0un
linkStyle 9 stroke:#a170ff
GoogleGenerativeAIModel-z1mmi -.- GmailMesageComponent-0c0un
linkStyle 10 stroke:#a170ff
ParseData-z3lo1 -.- GmailMesageComponent-0c0un
linkStyle 11 stroke:#a170ff
Loop-x4kgp -.- ParseData-e32rl
linkStyle 12 stroke:#a170ff
ParseData-e32rl -.- Prompt-dufy4
linkStyle 13 stroke:#a170ff
Prompt-dufy4 -.- GoogleGenerativeAIModel-30xv3
linkStyle 14 stroke:#a170ff
GmailMesageComponent-0c0un -.- LoopEnd-96ajm
linkStyle 15 stroke:#a170ff
LoopEnd-96ajm -.- Loop-x4kgp
linkStyle 16 stroke:#a170ff
🧩 Descripción general
El flujo automatiza el envío masivo de correos electrónicos de promoción.
Lee la lista de contactos y productos desde una hoja de Google Sheets, genera de forma personalizada el asunto y el cuerpo del mensaje mediante Gemini, actualiza el estado de cada fila y envía los correos a través de Gmail, repitiendo el proceso para cada contacto.
⚙️ Funcionalidades principales
- Lee y filtra los contactos que aún no han recibido el correo.
- Actualiza el estado de la fila a “enviado” una vez procesada.
- Genera un cuerpo de correo persuasivo en HTML a partir del producto.
- Crea un asunto atractivo y limitado a 15 caracteres.
- Envía el correo a la dirección del destinatario.
- Itera el proceso hasta que la hoja ya no tenga filas sin enviar.
- Genera un resumen de la ejecución cuando finaliza el bucle.
🔄 Pasos del flujo de trabajo
| Nombre del componente | Rol en el flujo | Entradas clave | Salidas clave |
|---|---|---|---|
| Celdas de Google Sheets | Lectura de la hoja | Nombre de la hoja | Lista de filas (Data) |
| Enrutador Condicional | Filtrar filas | Campo “enviado” | Filas con enviado = no |
| Celdas de Google Sheets | Actualizar estado | Número de fila → “si” | Confirmación de actualización (Data) |
| Crear Datos | Combinar producto y destinatario | Producto (Texto), Destinatario (Data) | Registro individual (Data) |
| Bucle | Iterar sobre registros | Datos creados | Elemento (item) y conjunto terminado (done) |
| Parsear Datos (destinatario) | Extraer dirección | Registro | Texto: Dirección de correo |
| Parsear Datos (producto) | Extraer producto | Registro | Texto: Detalle del producto |
| Plantilla de Prompt (cuerpo) | Definir prompt para cuerpo | Producto | Prompt de IA |
| Modelo de IA Generativa de Google (cuerpo) | Generar cuerpo HTML | Prompt | Texto: Cuerpo del correo |
| Plantilla de Prompt (asunto) | Definir prompt para asunto | Cuerpo del correo | Prompt de IA |
| Modelo de IA Generativa de Google (asunto) | Generar asunto breve | Prompt | Texto: Asunto del correo |
| Mensaje de Gmail | Enviar correo | Destinatario, Asunto, Cuerpo | Confirmación de envío (Data) |
| Fin de Bucle | Reiniciar iteración | Resultado del envío | Elemento actual del bucle |
| Fin | Resumen final | Datos procesados | Resumen de ejecución |
Nota: Los nodos de tipo LabelComponent solo contienen textos descriptivos y no participan en la lógica de ejecución.
🧠 Notas
- El flujo requiere credenciales válidas para la API de Google Sheets y Gmail.
- El modelo Gemini debe estar habilitado y contar con tokens suficientes; la generación del cuerpo puede consumir hasta 4096 tokens.
- El asunto se restringe a 15 caracteres; el prompt de asunto debe respetar esta longitud.
- El componente Celdas de Google Sheets debe apuntar a una hoja con las columnas:
destinatario,enviado,respondido. - La hoja se actualiza con la columna
enviadocambiada a “si” antes de enviar el correo para evitar re‑envíos. - Se emplean dos prompts: uno para generar el cuerpo HTML y otro para crear un asunto atractivo y conciso.
- El flujo se ejecuta en modo batch, procesando cada fila de manera secuencial; la velocidad está limitada por las cuotas de las APIs de Google y de Gemini.
- Al finalizar, el nodo Fin devuelve un resumen que puede incluir el número de correos enviados y los posibles errores.