Rapport automatisé des performances marketing par e-mail

Intermédiaire

Ceci est unDocument Extraction, Multimodal AIworkflow d'automatisation du domainecontenant 13 nœuds.Utilise principalement des nœuds comme Merge, Summarize, GoogleSheets, ManualTrigger, MicrosoftOutlook. Génération automatique de rapports de performance marketing par e-mail avec Google Sheets et Outlook

Prérequis
  • Informations d'identification Google Sheets API
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "meta": {
    "instanceId": "ad0113c344ee237399e44e9f11798b05baeb83a6196d514a9ae9d2ad71c3b5c9",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "dd0fb46b-c0ce-4499-a000-8a16fe234969",
      "name": "Lors du clic sur 'Exécuter le workflow'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -3088,
        1232
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "67ca251f-bd65-4707-b807-9353033e205c",
      "name": "Obtenir les données 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": "Compter les clients uniques",
      "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": "Compter les campagnes uniques",
      "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": "Somme des clics totaux",
      "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": "Somme des conversions 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": "Somme des dépenses totales",
      "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": "Envoyer le rapport par e-mail 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": "Fusionner",
      "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": "Note adhésive 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": "Note adhésive 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": "Note adhésive 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": "Note adhésive 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
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Intermédiaire - Extraction de documents, IA Multimodale

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Workflows recommandés

Agrégation des données de dépenses marketing dans Google Sheets à l'aide de tableaux croisés dynamiques personnalisés et de VLOOKUP
Agrégation des données de dépenses marketing avec tableaux croisés dynamiques personnalisés et VLOOKUP dans Google Sheets
Merge
Summarize
Google Sheets
+
Merge
Summarize
Google Sheets
10 NœudsRobert Breen
Extraction de documents
Utiliser GPT-4 Insights et PDF.co pour générer des rapports marketing à partir de Google Sheets
Générer des rapports marketing à partir de Google Sheets avec insights GPT-4 et PDF.co
Code
Merge
Aggregate
+
Code
Merge
Aggregate
15 NœudsRobert Breen
Extraction de documents
Créer un classeur Excel avec plusieurs feuilles de calcul en utilisant Google Drive et Sheets avec l'union d'ensembles de données
Créer un classeur Excel multi-feuilles en utilisant Google Drive et Sheets via la fusion d'ensembles de données
Code
Merge
Google Drive
+
Code
Merge
Google Drive
12 NœudsRobert Breen
Extraction de documents
Débutant en analyse de données : fusion, filtrage et résumé dans Google Sheets avec GPT-4o
Analyse de données pour débutants : fusion, filtrage et résumé dans Google Sheets avec GPT-4o
If
Set
Code
+
If
Set
Code
21 NœudsRobert Breen
Extraction de documents
Utiliser Google Sheets, GPT-4o et les e-mails pour générer un rapport de ROI de campagne marketing
Générer des rapports de ROI de campagne marketing avec Google Sheets, GPT-4o et e-mail
Code
Merge
Aggregate
+
Code
Merge
Aggregate
16 NœudsRobert Breen
Résumé IA
Enregistrement automatisé des nouveaux e-mails Gmail dans Google Sheets
Enregistrer automatiquement les nouveaux e-mails Gmail dans Google Sheets
Code
Gmail
Merge
+
Code
Gmail
Merge
11 NœudsRobert Breen
CRM
Informations sur le workflow
Niveau de difficulté
Intermédiaire
Nombre de nœuds13
Catégorie2
Types de nœuds6
Description de la difficulté

Adapté aux utilisateurs expérimentés, avec des workflows de complexité moyenne contenant 6-15 nœuds

Auteur
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.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34