AutomationFlowsAI & RAG › Turn Gmail Meeting Summaries Into Hubspot CRM Records with Openai

Turn Gmail Meeting Summaries Into Hubspot CRM Records with Openai

ByAvkash Kakdiya @itechnotion on n8n.io

This workflow listens for incoming meeting summary emails in Gmail and processes them automatically. The email content is cleaned and sent to an AI model that extracts CRM-ready sales data in a structured format. The parsed data is then used to create or update contacts, deals,…

Event trigger★★★★☆ complexityAI-powered13 nodesGmail TriggerHubSpotOpenAI
AI & RAG Trigger: Event Nodes: 13 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #12476 — we link there as the canonical source.

This workflow follows the Gmail Trigger → OpenAI recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "aQdxmqj12Lr2QOxk",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Meeting Debrief \u2192 HubSpot CRM",
  "tags": [],
  "nodes": [
    {
      "id": "6b041fb7-dfe3-44be-9440-e943c80c358c",
      "name": "Gmail Trigger",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        128,
        -1152
      ],
      "parameters": {
        "simple": false,
        "filters": {
          "sender": "user@example.com",
          "labelIds": [
            "INBOX"
          ],
          "includeSpamTrash": false
        },
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "2abc8171-865e-40ed-8b30-5af017eaf015",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -416,
        -1664
      ],
      "parameters": {
        "width": 448,
        "height": 704,
        "content": "## Meeting Debrief \u2192 HubSpot CRM Automation\n\nThis workflow automatically converts meeting summary emails into structured HubSpot CRM updates using AI. It is designed for teams that use meeting recording or note-taking tools (such as tl;dv, Zoom summaries, or internal recap emails) and want to eliminate manual CRM data entry after sales or discovery calls.Instead of sales reps writing notes and updating HubSpot manually, this automation reads the meeting summary email, extracts key sales information using OpenAI, and creates CRM-ready records automatically.\n### How it works\n\n\t\u2022\tThe workflow starts when a new meeting summary email arrives in Gmail.\n\t\u2022\tThe email body is cleaned and normalized into a single summary field.\n\t\u2022\tThe summary is sent to OpenAI, which extracts structured sales data.\n\t\u2022\tThe AI response is parsed into valid JSON.\n\t\u2022\tHubSpot records are created or updated automatically.\n### Setup steps:\n\n\t1.\tConnect your Gmail account (used to receive meeting summaries).\n\t2.\tConnect your OpenAI API credentials.\n\t3.\tConnect your HubSpot account.\n\t4.\tUpdate the Gmail sender filter."
      },
      "typeVersion": 1
    },
    {
      "id": "350b54cd-806b-4d4b-9264-2c3a2f6fec69",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        48,
        -1664
      ],
      "parameters": {
        "color": 7,
        "height": 704,
        "content": "## Step:1 Gmail Trigger \u2014 Meeting Summary Intake\n\nTriggers the workflow when a new meeting summary email is received in Gmail.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "71a0750b-ecef-490b-bc0e-2a0eafe69f64",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        304,
        -1664
      ],
      "parameters": {
        "color": 7,
        "width": 224,
        "height": 704,
        "content": "## Step:2 Prepare & Normalize Summary\n\nExtracts and prepares the meeting summary text from the email for AI processing.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "19e518b9-fe26-4cc3-9017-f12e8d1ea54c",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        544,
        -1664
      ],
      "parameters": {
        "color": 7,
        "width": 304,
        "height": 704,
        "content": "## Step:3 AI Extraction \u2014 Structured Sales Data\n\nUses OpenAI to extract structured sales insights from the meeting summary.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "f532d0db-b6ef-44df-9f45-55300e75e125",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        880,
        -1664
      ],
      "parameters": {
        "color": 7,
        "width": 192,
        "height": 704,
        "content": "## Step:4 Parse AI JSON Output\n\nCleans and parses the AI response into valid JSON fields for CRM usage.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "1faa593f-4d7d-4c2f-a9c5-c5321e9e6e3a",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1088,
        -1664
      ],
      "parameters": {
        "color": 7,
        "width": 624,
        "height": 704,
        "content": "## Step:5 HubSpot CRM Updates\n\nCreates or updates HubSpot contact, deal, and meeting engagement automatically.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a9ee7b9e-c970-48cb-acb6-58a4a2a55dc0",
      "name": "Prepare Meeting Summary",
      "type": "n8n-nodes-base.set",
      "position": [
        368,
        -1152
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "99f2ba4c-8820-402b-b9af-0d191c109cd9",
              "name": "summary",
              "type": "string",
              "value": "={{ $json.text }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1a7099fe-6db1-4082-8d56-0a1348201e84",
      "name": "Parse AI JSON Output",
      "type": "n8n-nodes-base.function",
      "position": [
        912,
        -1152
      ],
      "parameters": {
        "functionCode": "const text =\n  $json.output[0].content[0].text;\n\nreturn [\n  {\n    json: JSON.parse(text)\n  }\n];\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c4e22869-7c4a-4e44-b927-b1385da499e6",
      "name": "Create Meeting Engagement",
      "type": "n8n-nodes-base.hubspot",
      "position": [
        1520,
        -1152
      ],
      "parameters": {
        "type": "meeting",
        "metadata": {
          "body": "=\n{{ $('Parse AI JSON Output').item.json.problem + '\\n\\nNext Steps:\\n' + $('Parse AI JSON Output').item.json.next_actions.join('\\n') }}\n\n\n\n\n"
        },
        "resource": "engagement",
        "authentication": "appToken",
        "additionalFields": {
          "associations": {
            "dealIds": "={{ $json.dealId }}\n",
            "contactIds": "={{$node[\"Create or Update Contact\"].json.properties.hs_object_id.value}}\n"
          }
        }
      },
      "credentials": {
        "hubspotAppToken": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "980f3f23-a396-4f94-a12c-1c6f58f25988",
      "name": "AI Extraction",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        592,
        -1152
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini",
          "cachedResultName": "GPT-4.1-MINI"
        },
        "options": {},
        "responses": {
          "values": [
            {
              "role": "system",
              "content": "You are a sales operations assistant.\n\nExtract CRM-ready structured data from meeting summaries.\n\nRules:\n- Email may be missing. If missing, set email = null.\n- If no contact email exists, extract company name instead.\n- Return ONLY valid JSON.\n- Do not use markdown or code fences.\n\nRequired keys:\ncompany,\nemail,\nproblem,\nbudget,\ndecision_maker,\ntiming,\ncompetitors,\nnext_actions\n"
            },
            {
              "content": "=Meeting summary:\n{{ $json.summary }}\n"
            }
          ]
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "587f24da-f3c2-4686-af6f-904dc3d7e817",
      "name": "Update Deal",
      "type": "n8n-nodes-base.hubspot",
      "position": [
        1344,
        -1152
      ],
      "parameters": {
        "stage": "closedwon",
        "authentication": "appToken",
        "additionalFields": {
          "amount": "={{ $('Parse AI JSON Output').item.json.budget }}",
          "dealName": "={{ $('Parse AI JSON Output').item.json.company }}",
          "pipeline": "default",
          "description": "={{ $('Parse AI JSON Output').item.json.problem }}"
        }
      },
      "credentials": {
        "hubspotAppToken": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "bc47d572-c59f-4bdd-bd14-9921339f9cf8",
      "name": "Create or Update Contact",
      "type": "n8n-nodes-base.hubspot",
      "position": [
        1152,
        -1152
      ],
      "parameters": {
        "email": "=",
        "resource": "contact",
        "authentication": "appToken",
        "additionalFields": {}
      },
      "credentials": {
        "hubspotAppToken": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "14e6b21d-4dd2-4bf6-adb1-46e53573b3e1",
  "connections": {
    "Update Deal": {
      "main": [
        [
          {
            "node": "Create Meeting Engagement",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Extraction": {
      "main": [
        [
          {
            "node": "Parse AI JSON Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gmail Trigger": {
      "main": [
        [
          {
            "node": "Prepare Meeting Summary",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse AI JSON Output": {
      "main": [
        [
          {
            "node": "Create or Update Contact",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Meeting Summary": {
      "main": [
        [
          {
            "node": "AI Extraction",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create or Update Contact": {
      "main": [
        [
          {
            "node": "Update Deal",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow listens for incoming meeting summary emails in Gmail and processes them automatically. The email content is cleaned and sent to an AI model that extracts CRM-ready sales data in a structured format. The parsed data is then used to create or update contacts, deals,…

Source: https://n8n.io/workflows/12476/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This workflow converts emailed timesheets into structured invoice rows in Google Sheets and stores them in the correct Google Drive folder structure.

Gmail Trigger, OpenAI, Google Sheets +2
AI & RAG

Complete AI-powered sales system Automates lead capture, qualification, and follow-up from multiple channels. AI INTELLIGENCE:

Gmail Trigger, Google Sheets, OpenAI +3
AI & RAG

An automated quote generation system that monitors your inbox, classifies quote requests using AI, calculates intelligent pricing based on historical data, and provides a professional dashboard for re

Gmail Trigger, OpenAI, Supabase +2
AI & RAG

This n8n workflow — HRMate — streamlines your entire recruitment process by automatically parsing incoming job applications, evaluating candidate fit using AI, and sending personalized acceptance or r

HTTP Request, Gmail Trigger, OpenAI +2
AI & RAG

Overview

Gmail Trigger, Google Drive, OpenAI +4