Informe automatizado de rendimiento de marketing por correo electrónico

Intermedio

Este es unDocument Extraction, Multimodal AIflujo de automatización del dominio deautomatización que contiene 13 nodos.Utiliza principalmente nodos como Merge, Summarize, GoogleSheets, ManualTrigger, MicrosoftOutlook. Generación automatizada de informes de rendimiento de marketing por correo electrónico usando Google Sheets y Outlook

Requisitos previos
  • Credenciales de API de Google Sheets
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": "dd0fb46b-c0ce-4499-a000-8a16fe234969",
      "name": "Al hacer clic en 'Ejecutar flujo de trabajo'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -3088,
        1232
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "67ca251f-bd65-4707-b807-9353033e205c",
      "name": "Obtener Datos de Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -2848,
        1264
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 365710158,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/19aUQYZq02qHsCelO4eeV4sx_MTJJupC5qe0gDLQBtRA/edit#gid=365710158",
          "cachedResultName": "Data"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "19aUQYZq02qHsCelO4eeV4sx_MTJJupC5qe0gDLQBtRA",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/19aUQYZq02qHsCelO4eeV4sx_MTJJupC5qe0gDLQBtRA/edit?usp=drivesdk",
          "cachedResultName": "Sample Marketing Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "HlBW2puZbuCCq8jJ",
          "name": "Google Sheets account 3"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "363322ba-a8f0-4269-afa2-6cc13f7f36b3",
      "name": "Contar Clientes Únicos",
      "type": "n8n-nodes-base.summarize",
      "position": [
        -2144,
        688
      ],
      "parameters": {
        "options": {},
        "fieldsToSummarize": {
          "values": [
            {
              "field": "Customer ID",
              "aggregation": "countUnique"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "d8d0162f-305a-4359-bdd6-ebf917202265",
      "name": "Contar Campañas Únicas",
      "type": "n8n-nodes-base.summarize",
      "position": [
        -2144,
        864
      ],
      "parameters": {
        "options": {},
        "fieldsToSummarize": {
          "values": [
            {
              "field": "Campaign",
              "aggregation": "countUnique"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "de8c8386-8fd7-49ed-bf90-88980ceb90f2",
      "name": "Sumar Clics Totales",
      "type": "n8n-nodes-base.summarize",
      "position": [
        -2144,
        1072
      ],
      "parameters": {
        "options": {},
        "fieldsToSummarize": {
          "values": [
            {
              "field": "Clicks",
              "aggregation": "sum"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "6618e8fb-8eb2-43b8-bd5f-b00b7306c8c5",
      "name": "Sumar Conversiones Totales",
      "type": "n8n-nodes-base.summarize",
      "position": [
        -2144,
        1232
      ],
      "parameters": {
        "options": {},
        "fieldsToSummarize": {
          "values": [
            {
              "field": "Conversions",
              "aggregation": "sum"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "c9a81add-1ec5-4db5-8f55-076cdc1db97a",
      "name": "Sumar Gasto Total",
      "type": "n8n-nodes-base.summarize",
      "position": [
        -2128,
        1408
      ],
      "parameters": {
        "options": {},
        "fieldsToSummarize": {
          "values": [
            {
              "field": "Spend ($)",
              "aggregation": "sum"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "cf7b8d92-15fa-46fd-a63f-0d1b2792f282",
      "name": "Enviar Informe por Correo 1",
      "type": "n8n-nodes-base.microsoftOutlook",
      "position": [
        -1472,
        1328
      ],
      "webhookId": "6a18e4a8-04ce-49a9-a2ad-451b8daf2df8",
      "parameters": {
        "subject": "Daily Marketing Performance",
        "bodyContent": "=<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Marketing Campaign Performance Report</title>\n    <style>\n        body {\n            font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\n            line-height: 1.6;\n            color: #1a1a1a;\n            max-width: 650px;\n            margin: 0 auto;\n            padding: 30px 20px;\n            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n            min-height: 100vh;\n        }\n        .container {\n            background: rgba(255, 255, 255, 0.95);\n            backdrop-filter: blur(20px);\n            padding: 40px;\n            border-radius: 24px;\n            box-shadow: \n                0 20px 40px rgba(0, 0, 0, 0.1),\n                0 8px 32px rgba(0, 0, 0, 0.08),\n                inset 0 1px 0 rgba(255, 255, 255, 0.4);\n            border: 1px solid rgba(255, 255, 255, 0.2);\n            position: relative;\n            overflow: hidden;\n        }\n        .container::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            left: 0;\n            right: 0;\n            height: 4px;\n            background: linear-gradient(90deg, #667eea, #764ba2, #f093fb, #f5576c);\n            background-size: 400% 400%;\n            animation: gradient 8s ease infinite;\n        }\n        @keyframes gradient {\n            0% { background-position: 0% 50%; }\n            50% { background-position: 100% 50%; }\n            100% { background-position: 0% 50%; }\n        }\n        h1 {\n            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n            -webkit-background-clip: text;\n            -webkit-text-fill-color: transparent;\n            background-clip: text;\n            font-size: 32px;\n            font-weight: 800;\n            margin-bottom: 40px;\n            text-align: center;\n            letter-spacing: -0.02em;\n        }\n        h2 {\n            color: #2d3748;\n            margin-bottom: 30px;\n            font-size: 24px;\n            font-weight: 700;\n            text-align: center;\n            position: relative;\n        }\n        h2::after {\n            content: '';\n            position: absolute;\n            bottom: -8px;\n            left: 50%;\n            transform: translateX(-50%);\n            width: 60px;\n            height: 3px;\n            background: linear-gradient(90deg, #667eea, #764ba2);\n            border-radius: 2px;\n        }\n        .summary-grid {\n            display: grid;\n            grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n            gap: 24px;\n            margin-bottom: 40px;\n        }\n        .metric-card {\n            background: linear-gradient(145deg, #ffffff 0%, #f8fafc 100%);\n            padding: 28px 24px;\n            border-radius: 16px;\n            border: 1px solid rgba(226, 232, 240, 0.8);\n            box-shadow: \n                0 4px 16px rgba(0, 0, 0, 0.08),\n                0 1px 4px rgba(0, 0, 0, 0.04);\n            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n            position: relative;\n            overflow: hidden;\n        }\n        .metric-card::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            left: 0;\n            right: 0;\n            height: 3px;\n            background: linear-gradient(90deg, #667eea, #764ba2);\n            opacity: 0;\n            transition: opacity 0.3s ease;\n        }\n        .metric-card:hover {\n            transform: translateY(-4px);\n            box-shadow: \n                0 12px 32px rgba(0, 0, 0, 0.12),\n                0 4px 16px rgba(0, 0, 0, 0.08);\n        }\n        .metric-card:hover::before {\n            opacity: 1;\n        }\n        .metric-label {\n            font-weight: 600;\n            color: #64748b;\n            font-size: 13px;\n            margin-bottom: 8px;\n            text-transform: uppercase;\n            letter-spacing: 0.5px;\n        }\n        .metric-value {\n            font-size: 28px;\n            font-weight: 800;\n            background: linear-gradient(135deg, #1e293b 0%, #475569 100%);\n            -webkit-background-clip: text;\n            -webkit-text-fill-color: transparent;\n            background-clip: text;\n            letter-spacing: -0.02em;\n        }\n        .footer {\n            margin-top: 50px;\n            padding-top: 30px;\n            border-top: 1px solid rgba(226, 232, 240, 0.6);\n            text-align: center;\n            color: #64748b;\n            font-size: 13px;\n            font-weight: 500;\n        }\n        .footer p {\n            margin: 6px 0;\n        }\n        .footer p:first-child {\n            font-weight: 600;\n            color: #475569;\n        }\n        @media (max-width: 600px) {\n            body {\n                padding: 20px 15px;\n            }\n            .container {\n                padding: 30px 24px;\n                border-radius: 20px;\n            }\n            .summary-grid {\n                grid-template-columns: 1fr;\n                gap: 20px;\n            }\n            h1 {\n                font-size: 28px;\n                margin-bottom: 30px;\n            }\n            .metric-value {\n                font-size: 24px;\n            }\n        }\n    </style>\n</head>\n<body>\n    <div class=\"container\">\n        <h1>Marketing Campaign Performance Report</h1>\n        \n        <h2>Campaign Summary</h2>\n        <div class=\"summary-grid\">\n            <div class=\"metric-card\">\n                <div class=\"metric-label\">Total Campaigns</div>\n                <div class=\"metric-value\">{{ $json.unique_count_Campaign }}</div>\n            </div>\n            <div class=\"metric-card\">\n                <div class=\"metric-label\">Total Customers Reached</div>\n                <div class=\"metric-value\">{{ $json.unique_count_Customer_ID }}</div>\n            </div>\n            <div class=\"metric-card\">\n                <div class=\"metric-label\">Total Clicks</div>\n                <div class=\"metric-value\">{{ $json.sum_Clicks }}</div>\n            </div>\n            <div class=\"metric-card\">\n                <div class=\"metric-label\">Total Conversions</div>\n                <div class=\"metric-value\">{{ $json.sum_Conversions }}</div>\n            </div>\n            <div class=\"metric-card\">\n                <div class=\"metric-label\">Total Spend</div>\n                <div class=\"metric-value\">{{ $json['sum_Spend_($)'] }}</div>\n            </div>\n        </div>\n        <div class=\"footer\">\n            <p>Report generated automatically via n8n automation</p>\n            <p>Last updated: {{ $json.lastUpdated }}</p>\n        </div>\n    </div>\n</body>\n</html>",
        "toRecipients": "rbreen@ynteractive.com",
        "additionalFields": {
          "bodyContentType": "html"
        }
      },
      "credentials": {
        "microsoftOutlookOAuth2Api": {
          "id": "9z1nG9ReKLXU309r",
          "name": "Microsoft Outlook account 4"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "d9d8fce2-da0f-4ba4-be18-445f5c71a466",
      "name": "Combinar",
      "type": "n8n-nodes-base.merge",
      "position": [
        -1776,
        1296
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition",
        "numberInputs": 5
      },
      "typeVersion": 3.2
    },
    {
      "id": "446a50f7-8d42-40f9-9323-790ea93a4aa5",
      "name": "Nota Adhesiva 17",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3136,
        480
      ],
      "parameters": {
        "width": 1984,
        "height": 128,
        "content": "## 📬 Need Help or Want to Customize This?\n📧 [robert@ynteractive.com](mailto:robert@ynteractive.com)  \n🔗 [LinkedIn](https://www.linkedin.com/in/robert-breen-29429625/)"
      },
      "typeVersion": 1
    },
    {
      "id": "08007788-b10a-45c2-8d8e-44b31d0679cc",
      "name": "Nota Adhesiva 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3136,
        624
      ],
      "parameters": {
        "color": 4,
        "width": 480,
        "height": 928,
        "content": "### Step 1: Set Up Your Google Sheets Data Source\n\n**Copy the Sample Data Template:**\n1. Access the template: [Marketing Performance Data Template](https://docs.google.com/spreadsheets/d/19aUQYZq02qHsCelO4eeV4sx_MTJJupC5qe0gDLQBtRA/edit?usp=sharing)\n2. Click \"File\" → \"Make a copy\" to create your own version\n3. Rename it (e.g., \"My Marketing Performance Data\")\n\n**Set Up Your Data Structure:**\nYour Google Sheet should have a \"Data\" tab with these columns:\n- **Customer ID** - Unique identifier for each customer\n- **Campaign** - Name of the marketing campaign\n- **Clicks** - Number of clicks generated\n- **Conversions** - Number of conversions achieved  \n- **Spend ($)** - Amount spent on the campaign\n\n**Configure Google Sheets API Access:**\n- Go to [Google Cloud Console](https://console.cloud.google.com/)\n- Create a project or select existing one\n- Enable \"Google Sheets API\"\n- Create OAuth2 credentials or use service account\n- Share your sheet with the service account email (if using service account)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6020cd74-f930-4e34-bcf4-8bb51caaffcf",
      "name": "Nota Adhesiva 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1920,
        624
      ],
      "parameters": {
        "color": 3,
        "width": 768,
        "height": 928,
        "content": "\n#### Node 8: \"Merge\"\n- **Purpose**: Combines all calculated metrics into one data object\n- **Configuration**: Pre-configured to merge by position\n- **No setup required**\n\n#### Node 9: \"Send Email Report\" (Microsoft Outlook)\n- **Purpose**: Sends the formatted HTML email report\n- **Setup Required**:\n  1. Click on the node\n  2. Set up Microsoft Outlook OAuth2 credentials:\n     - Click \"Create New Credential\"\n     - Follow OAuth2 setup for your Microsoft account\n     - Grant necessary email permissions\n  3. **Configure Email Settings**:\n     - **To Recipients**: Change from \"rbreen@ynteractive.com\" to your recipient email(s)\n     - **Subject**: Modify \"Daily Marketing Performance\" as needed\n     - **Body Content**: Pre-configured with professional HTML template\n  4. **Email Template Features**:\n     - Modern glassmorphic design\n     - Responsive layout for mobile devices\n     - Animated gradient accents\n     - Hover effects on metric cards\n     - Professional typography\n\n*Specializing in AI-powered workflow automation, business process optimization, and custom integration solutions.*"
      },
      "typeVersion": 1
    },
    {
      "id": "babb9445-8793-4b44-8447-0ed788ca53a0",
      "name": "Nota Adhesiva 4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2624,
        624
      ],
      "parameters": {
        "color": 5,
        "width": 672,
        "height": 928,
        "content": " #### Node 3-7: Data Analysis Nodes\n\n**\"Count Unique Customers\"**\n- **Purpose**: Counts how many unique customers were reached\n- **Configuration**: Pre-configured to count unique \"Customer ID\" values\n- **No setup required**\n\n**\"Count Unique Campaigns\"**\n- **Purpose**: Counts total number of campaigns run\n- **Configuration**: Pre-configured to count unique \"Campaign\" values\n- **No setup required**\n\n**\"Sum Total Clicks\"**\n- **Purpose**: Adds up all clicks across campaigns\n- **Configuration**: Pre-configured to sum \"Clicks\" column\n- **No setup required**\n\n**\"Sum Total Conversions\"**\n- **Purpose**: Totals all conversions achieved\n- **Configuration**: Pre-configured to sum \"Conversions\" column\n- **No setup required**\n\n**\"Sum Total Spend\"**\n- **Purpose**: Calculates total marketing spend\n- **Configuration**: Pre-configured to sum \"Spend ($)\" column\n- **No setup required**\n\n"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "d9d8fce2-da0f-4ba4-be18-445f5c71a466": {
      "main": [
        [
          {
            "node": "cf7b8d92-15fa-46fd-a63f-0d1b2792f282",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c9a81add-1ec5-4db5-8f55-076cdc1db97a": {
      "main": [
        [
          {
            "node": "d9d8fce2-da0f-4ba4-be18-445f5c71a466",
            "type": "main",
            "index": 4
          }
        ]
      ]
    },
    "de8c8386-8fd7-49ed-bf90-88980ceb90f2": {
      "main": [
        [
          {
            "node": "d9d8fce2-da0f-4ba4-be18-445f5c71a466",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "cf7b8d92-15fa-46fd-a63f-0d1b2792f282": {
      "main": [
        []
      ]
    },
    "6618e8fb-8eb2-43b8-bd5f-b00b7306c8c5": {
      "main": [
        [
          {
            "node": "d9d8fce2-da0f-4ba4-be18-445f5c71a466",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "d8d0162f-305a-4359-bdd6-ebf917202265": {
      "main": [
        [
          {
            "node": "d9d8fce2-da0f-4ba4-be18-445f5c71a466",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "363322ba-a8f0-4269-afa2-6cc13f7f36b3": {
      "main": [
        [
          {
            "node": "d9d8fce2-da0f-4ba4-be18-445f5c71a466",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "67ca251f-bd65-4707-b807-9353033e205c": {
      "main": [
        [
          {
            "node": "363322ba-a8f0-4269-afa2-6cc13f7f36b3",
            "type": "main",
            "index": 0
          },
          {
            "node": "d8d0162f-305a-4359-bdd6-ebf917202265",
            "type": "main",
            "index": 0
          },
          {
            "node": "de8c8386-8fd7-49ed-bf90-88980ceb90f2",
            "type": "main",
            "index": 0
          },
          {
            "node": "6618e8fb-8eb2-43b8-bd5f-b00b7306c8c5",
            "type": "main",
            "index": 0
          },
          {
            "node": "c9a81add-1ec5-4db5-8f55-076cdc1db97a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "dd0fb46b-c0ce-4499-a000-8a16fe234969": {
      "main": [
        [
          {
            "node": "67ca251f-bd65-4707-b807-9353033e205c",
            "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 - Extracción de documentos, IA Multimodal

¿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

Agregación de datos de gasto de marketing en Google Sheets usando tablas dinámicas personalizadas y VLOOKUP
Agregación de datos de gastos de marketing usando tablas dinámicas personalizadas y VLOOKUP en Google Sheets
Merge
Summarize
Google Sheets
+
Merge
Summarize
Google Sheets
10 NodosRobert Breen
Extracción de documentos
Generar informes de marketing desde Google Sheets usando GPT-4 y PDF.co
Usar GPT-4 insights y PDF.co para generar informes de marketing a partir de Google Sheets
Code
Merge
Aggregate
+
Code
Merge
Aggregate
15 NodosRobert Breen
Extracción de documentos
Crear libros de Excel de varias hojas usando Google Drive y Sheets mediante la fusión de conjuntos de datos
Crear libros de Excel de varias hojas usando Google Drive y Sheets mediante la fusión de conjuntos de datos
Code
Merge
Google Drive
+
Code
Merge
Google Drive
12 NodosRobert Breen
Extracción de documentos
Análisis de datos para principiantes: fusionar, filtrar y resumir en Google Sheets con GPT-4o
Análisis de datos para principiantes: fusionar, filtrar y resumir en Google Sheets con GPT-4o
If
Set
Code
+
If
Set
Code
21 NodosRobert Breen
Extracción de documentos
Generar informes de ROI de campañas de marketing usando Google Sheets, GPT-4o y correo electrónico
Usar Google Sheets, GPT-4o y correo electrónico para generar informes de ROI de campañas de marketing
Code
Merge
Aggregate
+
Code
Merge
Aggregate
16 NodosRobert Breen
Resumen de IA
Registrar automáticamente nuevos correos de Gmail en Google Sheets
Registrar automáticamente nuevos correos de Gmail en Google Sheets
Code
Gmail
Merge
+
Code
Gmail
Merge
11 NodosRobert Breen
CRM
Información del flujo de trabajo
Nivel de dificultad
Intermedio
Número de nodos13
Categoría2
Tipos de nodos6
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