Envío programado de correos electrónicos de nuevos clientes potenciales desde Google Sheets a través de Outlook

Intermedio

Este es unautomatización que contiene 9 nodos.Utiliza principalmente nodos como Filter, GoogleSheets, ScheduleTrigger, MicrosoftOutlook. Envío automatizado de correos electrónicos a nuevos potenciales clientes desde Google Sheets mediante Outlook

Requisitos previos
  • Credenciales de API de Google Sheets

Categoría

-
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "meta": {
    "instanceId": "ad0113c344ee237399e44e9f11798b05baeb83a6196d514a9ae9d2ad71c3b5c9",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "425810c5-874c-41db-8fdd-59450e7f280e",
      "name": "Enviar un mensaje",
      "type": "n8n-nodes-base.microsoftOutlook",
      "position": [
        -784,
        9472
      ],
      "webhookId": "028da3bf-3bd3-4c4f-883a-4e0f18c67f81",
      "parameters": {
        "subject": "Build AI Agents & Automations with n8n",
        "bodyContent": "Hi There,\n\nI help people learn how to build AI agents and create powerful AI automations using n8n. If you’re exploring ways to save time or scale your workflows, I’d love to share what’s possible.\n\nYou can check out my n8n Creator profile here with 70+ ready-to-use automations:\n👉 https://n8n.io/creators/rbreen\n\nIf you’d like help getting started or want to see what AI + n8n can do for your business, just reply to this email.\n\nBest,\nRobert Breen\n📞 +1 814-882-1293\n🔗 https://www.linkedin.com/in/robert-breen-29429625/",
        "toRecipients": "={{ $json.Email }}",
        "additionalFields": {}
      },
      "credentials": {
        "microsoftOutlookOAuth2Api": {
          "id": "9z1nG9ReKLXU309r",
          "name": "Microsoft Outlook account 4"
        }
      },
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "e84f0281-eb13-4afa-b831-eae6f1a5cf54",
      "name": "Activador programado",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -2416,
        9072
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "1d3ef656-0288-45c2-8b82-a9aa7b57e2b0",
      "name": "Obtener fila(s) en sheet3",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -2080,
        9232
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sXXVbl2kKdYTzCmZDe7QyeMp1N9wZg9K63oGK2UIaeU/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1sXXVbl2kKdYTzCmZDe7QyeMp1N9wZg9K63oGK2UIaeU",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1sXXVbl2kKdYTzCmZDe7QyeMp1N9wZg9K63oGK2UIaeU/edit?usp=drivesdk",
          "cachedResultName": "New Leads"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "HlBW2puZbuCCq8jJ",
          "name": "Google Sheets account 3"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "7fa47640-1e65-491d-9457-ef32d0b7f600",
      "name": "Filtro1",
      "type": "n8n-nodes-base.filter",
      "position": [
        -1744,
        9088
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "914418a9-8c96-4959-abb7-ad3bb52f420d",
              "operator": {
                "type": "string",
                "operation": "empty",
                "singleValue": true
              },
              "leftValue": "={{ $json.Contacted }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "3b4a33f6-c810-4dcb-9b19-3abc6b982e9f",
      "name": "Añadir o actualizar fila en sheet1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1312,
        8736
      ],
      "parameters": {
        "columns": {
          "value": {
            "Email": "={{ $json.Email }}",
            "Contacted": "Yes"
          },
          "schema": [
            {
              "id": "Email",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Contacted",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Contacted",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Created",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Created",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Email"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/14T6rilaOl1LBTwNnu7ILE3T1equWOz0noI-OIUaI3zU/edit#gid=0",
          "cachedResultName": "leads"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "14T6rilaOl1LBTwNnu7ILE3T1equWOz0noI-OIUaI3zU",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/14T6rilaOl1LBTwNnu7ILE3T1equWOz0noI-OIUaI3zU/edit?usp=drivesdk",
          "cachedResultName": "New Leads - Real"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "HlBW2puZbuCCq8jJ",
          "name": "Google Sheets account 3"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "65e19508-beb8-4b3d-8ec8-55093f437fd5",
      "name": "Nota adhesiva58",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2688,
        8576
      ],
      "parameters": {
        "color": 7,
        "width": 2144,
        "height": 1056,
        "content": "## Email new leads from Google Sheets via Outlook on a schedule\n\nSend a templated outreach email to **new leads** in a Google Sheet on a **daily schedule**, then **mark each lead as contacted** so they won’t be emailed twice. Built with: **Schedule Trigger → Google Sheets → Filter → Outlook Send Email → Google Sheets (append/update)**.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6736dbfa-79fc-4aa6-9890-5b60b3b98cd1",
      "name": "Nota adhesiva6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3120,
        8576
      ],
      "parameters": {
        "width": 400,
        "height": 1056,
        "content": "## How to set up\n### 1) Google Sheets (OAuth2)\n- In **n8n → Credentials → New → Google Sheets (OAuth2)**, sign in and grant access.  \n- In **Get rows**: select your **Lead Source** sheet (e.g., “New Leads”).  \n- In **Append/Update**: select the sheet you want to mark as contacted (can be the same sheet or a CRM sheet).  \n- Make sure your sheet has at least: `Email`, `Contacted` (blank for new).\n\n### 2) Outlook (Microsoft Graph) OAuth2\n- **n8n Cloud (quick connect):**  \n  - In **Credentials → New → Microsoft Outlook OAuth2**, choose **Connect**, sign in with your Microsoft account, and accept permissions.\n- **Self-hosted (Azure App Registration):**  \n  1) Azure Portal → **App registrations** → **New registration**.  \n  2) Add redirect URL: `https://YOUR_N8N_URL/rest/oauth2-credential/callback`.  \n  3) **API permissions (Delegated):** `offline_access`, `Mail.Send`, `User.Read`. Grant admin consent if required.  \n  4) Create a **Client secret**; copy **Application (client) ID** and **Directory (tenant) ID**.  \n  5) In n8n, create **Microsoft Outlook OAuth2** credential with those values and scopes: `offline_access Mail.Send openid email profile`.  \n- In the **Send a message** node, select that credential and keep `To` mapped to `{{$json.Email}}`.  \n- Customize **Subject** and **Body** to your brand (default provided).\n\n---\n\n\n- 📧 **rbreen@ynteractive.com**  \n- 🔗 **Robert Breen** — https://www.linkedin.com/in/robert-breen-29429625/  \n- 🌐 **ynteractive.com** — https://ynteractive.com\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "79a41cd6-d72f-4cd5-81a2-3341a21ceeb8",
      "name": "Nota adhesiva70",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2144,
        8784
      ],
      "parameters": {
        "color": 3,
        "width": 224,
        "height": 656,
        "content": "### 1) Connect Google Sheets (OAuth2)\n1. In **n8n → Credentials → New → Google Sheets (OAuth2)**  \n2. Sign in with your Google account and grant access  \n3. In each Google Sheets node, select your **Spreadsheet** and the appropriate **Worksheet**:  \n\n\nhttps://docs.google.com/spreadsheets/d/1sXXVbl2kKdYTzCmZDe7QyeMp1N9wZg9K63oGK2UIaeU/edit#gid=0"
      },
      "typeVersion": 1
    },
    {
      "id": "49825745-adc3-4a5e-ba1c-0a65e31fd177",
      "name": "Nota adhesiva7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -848,
        8608
      ],
      "parameters": {
        "color": 3,
        "height": 992,
        "content": "### 2) Outlook (Microsoft Graph) OAuth2\n- **n8n Cloud (quick connect):**  \n  - In **Credentials → New → Microsoft Outlook OAuth2**, choose **Connect**, sign in with your Microsoft account, and accept permissions.\n- **Self-hosted (Azure App Registration):**  \n  1) Azure Portal → **App registrations** → **New registration**.  \n  2) Add redirect URL: `https://YOUR_N8N_URL/rest/oauth2-credential/callback`.  \n  3) **API permissions (Delegated):** `offline_access`, `Mail.Send`, `User.Read`. Grant admin consent if required.  \n  4) Create a **Client secret**; copy **Application (client) ID** and **Directory (tenant) ID**.  \n  5) In n8n, create **Microsoft Outlook OAuth2** credential with those values and scopes: `offline_access Mail.Send openid email profile`.  \n- In the **Send a message** node, select that credential and keep `To` mapped to `{{$json.Email}}`.  \n- Customize **Subject** and **Body** to your brand (default provided).\n"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "7fa47640-1e65-491d-9457-ef32d0b7f600": {
      "main": [
        [
          {
            "node": "3b4a33f6-c810-4dcb-9b19-3abc6b982e9f",
            "type": "main",
            "index": 0
          },
          {
            "node": "425810c5-874c-41db-8fdd-59450e7f280e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e84f0281-eb13-4afa-b831-eae6f1a5cf54": {
      "main": [
        [
          {
            "node": "1d3ef656-0288-45c2-8b82-a9aa7b57e2b0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1d3ef656-0288-45c2-8b82-a9aa7b57e2b0": {
      "main": [
        [
          {
            "node": "7fa47640-1e65-491d-9457-ef32d0b7f600",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Intermedio

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Flujos de trabajo relacionados recomendados

Información del flujo de trabajo
Nivel de dificultad
Intermedio
Número de nodos9
Categoría-
Tipos de nodos5
Descripción de la dificultad

Adecuado para usuarios con experiencia intermedia, flujos de trabajo de complejidad media con 6-15 nodos

Autor
Robert Breen

Robert Breen

@rbreen

Professional services consultant with over 10 years of experience solving complex business problems across industries. I specialize in n8n and process automation—designing custom workflows that integrate tools like Google Calendar, Airtable, GPT, and internal systems. Whether you need to automate scheduling, sync data, or streamline operations, I build solutions that save time and drive results.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34