This workflow corresponds to n8n.io template #6324 — we link there as the canonical source.
This workflow follows the Gmail → Gmail Trigger 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 →
{
"name": "Meeting Assets: Summary, Next Steps & Recording",
"nodes": [
{
"name": "Note: Gmail Creds",
"type": "n8n-nodes-base.stickyNote",
"position": [
200,
100
],
"parameters": {
"notesInFlow": "\ud83d\udcd2 Configure your Gmail OAuth2 credentials in n8n before activating this workflow."
},
"typeVersion": 1
},
{
"name": "Gmail Trigger",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
200,
250
],
"parameters": {
"filters": {
"string": [
{
"value1": "Meeting assets",
"operation": "contains"
}
]
},
"triggerTimes": {
"item": [
{
"unit": "minutes",
"every": 1
}
]
}
},
"typeVersion": 1
},
{
"name": "Extract Fields",
"type": "n8n-nodes-base.function",
"position": [
400,
250
],
"parameters": {
"functionCode": "// Extract fields from email\nconst html = item.json.text || '';\nconst match = (re) => { const m = html.match(re); return m ? m[1].trim() : '' };\nitem.json.clientName = match(/Meeting assets for [\\s\\S]*?\\(([^)]+)\\)\\s+with/);\nitem.json.sessionType = match(/\\b(\\d+\\s*hora(?:s)?|exploratory call)\\b/i);\nconst dt = html.match(/GMT(\\d{4})(\\d{2})(\\d{2})-(\\d{2})(\\d{2})(\\d{2})/);\nif (dt) {\n item.json.dateTimeUTC = `${dt[1]}-${dt[2]}-${dt[3]}T${dt[4]}:${dt[5]}:${dt[6]}Z`;\n}\nitem.json.duration = match(/Duration:\\s*([0-9]{1,2}:[0-9]{2}:[0-9]{2})/i);\nitem.json.recordingLink = match(/(https:\\/\\/us02web\\.zoom\\.us\\/recording\\/detail\\?[^)\\s]+)/);\nitem.json.quickSummary = match(/RESUMEN R\u00c1PIDO[\\s\\S]*?\\n([\\s\\S]*?)\\nPR\u00d3XIMOS PASOS/);\nitem.json.nextSteps = match(/PR\u00d3XIMOS PASOS[\\s\\S]*?\\n([\\s\\S]*?)\\nRESUMEN/);\nitem.json.detailedSummary = match(/RESUMEN(?!\\s*R\u00c1PIDO)\\s*([\\s\\S]*?)(?=\\s*(?:PR\u00d3XIMOS PASOS|AI can make mistakes))/i);\nreturn item;"
},
"typeVersion": 1
},
{
"name": "If Exploratory",
"type": "n8n-nodes-base.if",
"position": [
600,
250
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json.sessionType }}",
"value2": "exploratory call",
"operation": "notContains"
}
]
}
},
"typeVersion": 1
},
{
"name": "Airtable: Search People",
"type": "n8n-nodes-base.httpRequest",
"position": [
800,
200
],
"parameters": {
"qs": {
"filterByFormula": "={Full Name} = '{{ $json.clientName }}'"
},
"url": "https://api.airtable.com/v0/{{$env.AIRTABLE_BASE_ID}}/People",
"headerAuth": {
"name": "Authorization",
"value": "Bearer {{$credentials.airtableApi.token}}"
},
"requestMethod": "GET",
"authentication": "headerAuth"
},
"typeVersion": 1
},
{
"name": "Send Email",
"type": "n8n-nodes-base.gmail",
"position": [
1000,
200
],
"parameters": {
"html": "<p>Hi {{$json.clientName}},</p>\n<p>Here\u2019s your session details:</p>\n<ul>\n <li>Type: {{$json.sessionType}}</li>\n <li>Date & Time: {{$json.dateTimeUTC}}</li>\n <li>Duration: {{$json.duration}}</li>\n <li><a href=\"{{$json.recordingLink}}\">Watch Recording</a></li>\n</ul>\n<h3>Quick Summary</h3>\n<p>{{$json.quickSummary}}</p>\n<h3>Next Steps</h3>\n<p>{{$json.nextSteps}}</p>\n<h3>Detailed Summary</h3>\n<p>{{$json.detailedSummary}}</p>",
"subject": "Your Session Summary & Recording",
"toEmail": "={{ $node[\"Airtable: Search People\"].json.records[0].fields.Email }}"
},
"typeVersion": 1
},
{
"name": "Airtable: Create Session",
"type": "n8n-nodes-base.httpRequest",
"position": [
1200,
200
],
"parameters": {
"url": "https://api.airtable.com/v0/{{$env.AIRTABLE_BASE_ID}}/Sessions",
"requestMethod": "POST",
"jsonParameters": true,
"bodyParametersJson": "{\n \"fields\": {\n \"Date & Time\": \"{{$json.dateTimeUTC}}\",\n \"Duration\": \"{{$json.duration}}\",\n \"Quick Summary\": \"{{$json.quickSummary}}\",\n \"Detailed Summary\": \"{{$json.detailedSummary}}\",\n \"Next Steps\": \"{{$json.nextSteps}}\",\n \"Client\": [\"{{$node[\"Airtable: Search People\"].json.records[0].id}}\"]\n }\n}",
"headerParametersJson": "{\"Authorization\":\"Bearer {{$credentials.airtableApi.token}}\",\"Content-Type\":\"application/json\"}"
},
"typeVersion": 1
},
{
"name": "Note: Airtable Creds",
"type": "n8n-nodes-base.stickyNote",
"position": [
1000,
350
],
"parameters": {
"notesInFlow": "\ud83d\udd10 Store your Airtable API token securely in n8n Credentials (airtableApi.token)."
},
"typeVersion": 1
}
],
"active": false,
"connections": {
"Gmail Trigger": {
"main": [
[
{
"node": "Extract Fields",
"type": "main",
"index": 0
}
]
]
},
"Extract Fields": {
"main": [
[
{
"node": "If Exploratory",
"type": "main",
"index": 0
}
]
]
},
"If Exploratory": {
"main": [
[
{
"node": "Airtable: Search People",
"type": "main",
"index": 0
}
]
]
},
"Airtable: Search People": {
"main": [
[
{
"node": "Send Email",
"type": "main",
"index": 0
},
{
"node": "Airtable: Create Session",
"type": "main",
"index": 0
}
]
]
}
},
"description": "## Description\n\nWhenever a Zoom **Meeting assets** email arrives in your Gmail inbox, this workflow:\n\n1. **Triggers** on new Gmail messages filtered by \u201cMeeting assets.\u201d\n2. **Extracts** from the email:\n - Session type (e.g.\u00a0\u201c1 hour\u201d, \u201c2 hours\u201d, \u201cexploratory call\u201d).\n - Client\u2019s full name.\n - Session date\u00a0&\u00a0time (from the `GMT\u2026` timestamp).\n - Duration (`HH:MM:SS`).\n - Recording link.\n - Quick summary, detailed summary & next steps.\n3. **Looks up** the client in Airtable \u201cPeople\u201d by full name via HTTP Request.\n4. **Sends** a personalized Gmail to the client.\n5. **Creates** a new record in Airtable \u201cSessions\u201d linking back to that client.\n\n> \ud83d\udcd2 Sticky notes guide credential setup.\n> \ud83d\udd10 No API keys are hard\u2011coded\u2014use n8n credentials."
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Whenever a Zoom “Meeting assets” email arrives in your Gmail inbox, this workflow will:
Source: https://n8n.io/workflows/6324/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
AICARE Email Blast System. Uses googleDrive, httpRequest, googleSheets, gmail. Event-driven trigger; 39 nodes.
Client Form → Draft → Approve → Sign → Deliver, fully automated
ResultAnalyser. Uses gmailTrigger, executeCommand, httpRequest, gmail. Event-driven trigger; 23 nodes.
An automated n8n workflow that monitors your Gmail inbox, classifies job application emails using a local AI (Ollama), and logs every application — with company, role, and status — to a Google Sheet i
Automatically transform resume submissions into comprehensive candidate profiles with AI-powered parsing, GitHub analysis, and instant team notifications. Monitors Gmail for incoming resume attachment