AutomationFlowsAI & RAG › Summarize Sales Calls and Update CRM with WayinVideo

Summarize Sales Calls and Update CRM with WayinVideo

Original n8n title: Summarize Sales Calls and Update CRM Using Wayinvideo and Gpt-4o-mini

ByisaWOW @isawow on n8n.io

Paste any sales call recording URL into a form — this n8n workflow automatically transcribes the call using WayinVideo, extracts structured CRM data with AI, and saves a complete report directly to your shared Google Doc.** No manual note-taking, no missed action items, no…

Event trigger★★★★☆ complexityAI-powered13 nodesForm TriggerHTTP RequestOpenAI ChatAgent
AI & RAG Trigger: Event Nodes: 13 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the Agent → Form 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 →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "a988d437-77e0-4a64-a6d0-af5311e6ef10",
      "name": "Main \u2014 Overview & Setup",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -544,
        -192
      ],
      "parameters": {
        "width": 400,
        "height": 748,
        "content": "## Sales Call Auto-Summarizer & CRM Updater\n\n### How it works\nSalesperson pastes a Zoom or Google Meet recording URL into a form along with client details. The workflow sends the recording to WayinVideo for transcription, waits for processing, then uses GPT-4o-mini to extract structured CRM data \u2014 including deal status, action items, objections, and buying signals \u2014 and saves the full report to a shared Google Doc automatically.\n\n### Setup\n1. Replace **YOUR_WAYIN_API_KEY** in nodes 2 and 4 with your WayinVideo bearer token\n2. Connect your **OpenAI** account in node 6 (OpenAI Chat Model)\n3. Replace **YOUR_GOOGLE_DOC_URL_OR_ID** in node 7 with your actual Google Doc ID or URL\n4. Connect your **Google Docs OAuth2** credential in node 7\n5. Activate the workflow and share the form URL with your sales team\n\n### Customization tips\n- Swap GPT-4o-mini for GPT-4o for higher accuracy on complex calls\n- Add a Slack or email node after step 7 to notify the team when a new report is saved\n- Extend the IF loop retry limit by adding a counter variable to avoid infinite loops on failed transcriptions"
      },
      "typeVersion": 1
    },
    {
      "id": "86fb351e-179d-4c2f-8d48-9dc2f773cf36",
      "name": "Section \u2014 Input Form",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -112,
        -112
      ],
      "parameters": {
        "color": 5,
        "width": 296,
        "height": 116,
        "content": "## Section 1 \u2014 Input\nSalesperson fills a form with the recording URL and call details. This triggers the entire automation pipeline."
      },
      "typeVersion": 1
    },
    {
      "id": "d1cb65d3-f900-4fba-9929-b78e2e24e72d",
      "name": "Section \u2014 Transcription",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        -112
      ],
      "parameters": {
        "color": 5,
        "width": 520,
        "height": 116,
        "content": "## Section 2 \u2014 Transcription\nRecording URL is submitted to WayinVideo. The workflow waits 45 seconds then polls for the completed speaker-labeled transcript."
      },
      "typeVersion": 1
    },
    {
      "id": "fa6fc0f8-3fbd-48ec-b67b-16562e3f58a2",
      "name": "Section \u2014 Readiness Check",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        752,
        -112
      ],
      "parameters": {
        "color": 5,
        "width": 344,
        "height": 116,
        "content": "## Section 3 \u2014 Readiness Check\nIF node checks whether the transcript array is non-empty. If not ready, loops back to wait another 45 seconds and retries."
      },
      "typeVersion": 1
    },
    {
      "id": "f5f61c59-5246-4217-8b5e-dc744a443365",
      "name": "Section \u2014 AI Report & Save",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1104,
        -112
      ],
      "parameters": {
        "color": 5,
        "width": 396,
        "height": 132,
        "content": "## Section 4 \u2014 AI Report & Save\nGPT-4o-mini analyzes the transcript and generates a structured CRM report. The report is appended to the shared Google Doc with a timestamp."
      },
      "typeVersion": 1
    },
    {
      "id": "075a3a16-2865-480c-b354-d99bf9949a0a",
      "name": "Warning \u2014 Infinite Loop Risk",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        400,
        288
      ],
      "parameters": {
        "color": 3,
        "width": 648,
        "height": 140,
        "content": "## \u26a0\ufe0f WARNING \u2014 Infinite Loop Risk\nIf WayinVideo never returns a transcript (e.g. invalid URL, unsupported format), the IF node will loop indefinitely between Wait and Get Transcript. Add a counter or max-retry limit to prevent runaway executions."
      },
      "typeVersion": 1
    },
    {
      "id": "3e7dbb0f-32a1-418e-b14e-34ac1041b25e",
      "name": "1. Form \u2014 Call Recording + Details",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -64,
        48
      ],
      "parameters": {
        "options": {},
        "formTitle": "\ud83d\udcde Sales Call Auto-Summarizer & CRM Updater",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Call Recording URL",
              "placeholder": "https://zoom.us/rec/xxxxxxx or Google Meet recording link",
              "requiredField": true
            },
            {
              "fieldLabel": "Client / Company Name",
              "placeholder": "e.g. Rahul Sharma / ABC Digital Solutions",
              "requiredField": true
            },
            {
              "fieldLabel": "Salesperson Name",
              "placeholder": "e.g. Deepak Verma",
              "requiredField": true
            },
            {
              "fieldLabel": "Product / Service Discussed",
              "placeholder": "e.g. SEO Package, GEO Services, Social Media Management",
              "requiredField": true
            }
          ]
        },
        "formDescription": "Paste your sales call recording URL \u2014 AI will extract CRM notes, action items, deal status and next steps automatically."
      },
      "typeVersion": 2.2
    },
    {
      "id": "806f5ab9-f206-420b-a3d2-2a9e7e58a5c7",
      "name": "2. WayinVideo \u2014 Submit Transcript",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        208,
        48
      ],
      "parameters": {
        "url": "https://wayinvideo-api.wayin.ai/api/v2/transcripts",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"video_url\": \"{{ $json['Call Recording URL'] }}\",\n  \"target_lang\": \"en\"\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_TOKEN_HERE"
            },
            {
              "name": "x-wayinvideo-api-version",
              "value": "v2"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "c0a3115c-3a9e-4ff0-abda-e7510736d952",
      "name": "3. Wait \u2014 45 Seconds",
      "type": "n8n-nodes-base.wait",
      "position": [
        448,
        48
      ],
      "parameters": {
        "amount": 45
      },
      "typeVersion": 1.1
    },
    {
      "id": "b20f63a3-d04d-4038-94a5-e47e16db1b0c",
      "name": "4. WayinVideo \u2014 Get Transcript",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        688,
        48
      ],
      "parameters": {
        "url": "=https://wayinvideo-api.wayin.ai/api/v2/transcripts/results/{{ $('2. WayinVideo \u2014 Submit Transcript').item.json.data.id }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_TOKEN_HERE"
            },
            {
              "name": "x-wayinvideo-api-version",
              "value": "v2"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "ce977fdc-6cfa-4d7e-97fd-1ab786a2bee5",
      "name": "OpenAI Chat Model \u2014 GPT-4o-mini",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1104,
        256
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "typeVersion": 1.3
    },
    {
      "id": "53ff6e69-aa7f-491c-84a9-c309c1dcc442",
      "name": "5. IF \u2014 Transcript Ready?1",
      "type": "n8n-nodes-base.if",
      "position": [
        896,
        48
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "4b631170-4d78-411e-956c-3bc98966bfed",
              "operator": {
                "type": "array",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.data.transcript }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "80d1240d-1c73-4e6f-a5dd-e04ab2d77595",
      "name": "6. AI Agent \u2014 Generate CRM Report1",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1104,
        32
      ],
      "parameters": {
        "text": "=You are a CRM specialist. Your job is to analyze a sales call transcript and extract structured CRM data.\n\nIMPORTANT: Speaker 1 is the salesperson. Speaker 2 is the client.\n\nCall Details:\n- Salesperson: {{ $('1. Form \u2014 Call Recording + Details').item.json['Salesperson Name'] }}\n- Client / Company: {{ $('1. Form \u2014 Call Recording + Details').item.json['Client / Company Name'] }}\n- Product / Service Discussed: {{ $('1. Form \u2014 Call Recording + Details').item.json['Product / Service Discussed'] }}\n- Recording URL: {{ $('1. Form \u2014 Call Recording + Details').item.json['Call Recording URL'] }}\n\nFull Call Transcript:\n{{ $('4. WayinVideo \u2014 Get Transcript').item.json.data.transcript.map(s => '[' + s.speaker + ' | ' + Math.floor(s.start/1000) + 's] ' + s.text).join('\\n') }}\n\nExtract the CRM data and write a structured report using this exact format. Do not skip any section.\n\n=== SALES CALL CRM REPORT ===\n\nDATE: [Today's date]\nSALESPERSON: [Salesperson name from above]\nCLIENT: [Client name from above]\nPRODUCT DISCUSSED: [Product name from above]\nCALL RECORDING: [Recording URL from above]\n\n---\n\nCALL SUMMARY:\n[Write 3 to 4 sentences about what was discussed in the call. Include the main topic, what the client asked, and how the conversation ended.]\n\n---\n\nACTION ITEMS:\n[List every task the salesperson must do after this call. One action per line starting with a dash.]\n- \n- \n- \n\n---\n\nDEAL STATUS:\n[Choose exactly one: Hot Lead / Warm Lead / Cold Lead / Negotiating / Closed Won / Closed Lost]\nReason: [Write 1 sentence explaining why you chose this status]\n\n---\n\nCLIENT OBJECTIONS:\n[List every concern or problem the client raised. One per line starting with a dash. If none, write: None raised.]\n- \n\n---\n\nBUYING SIGNALS:\n[List every positive statement or sign of interest from the client. One per line starting with a dash. If none, write: None detected.]\n- \n\n---\n\nPRICING DISCUSSED:\n[Write any price, budget, or discount mentioned during the call. If nothing was discussed, write: Not discussed.]\n\n---\n\nNEXT FOLLOW-UP:\n[Write the exact date or timeline mentioned for the next step. If nothing was mentioned, write: Not specified.]\n\n---\n\nOVERALL CALL SENTIMENT: [Choose one: Positive / Neutral / Negative]\n\n=== END OF REPORT ===",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 3.1
    }
  ],
  "connections": {
    "3. Wait \u2014 45 Seconds": {
      "main": [
        [
          {
            "node": "4. WayinVideo \u2014 Get Transcript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5. IF \u2014 Transcript Ready?1": {
      "main": [
        [
          {
            "node": "6. AI Agent \u2014 Generate CRM Report1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "3. Wait \u2014 45 Seconds",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4. WayinVideo \u2014 Get Transcript": {
      "main": [
        [
          {
            "node": "5. IF \u2014 Transcript Ready?1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model \u2014 GPT-4o-mini": {
      "ai_languageModel": [
        [
          {
            "node": "6. AI Agent \u2014 Generate CRM Report1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "2. WayinVideo \u2014 Submit Transcript": {
      "main": [
        [
          {
            "node": "3. Wait \u2014 45 Seconds",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1. Form \u2014 Call Recording + Details": {
      "main": [
        [
          {
            "node": "2. WayinVideo \u2014 Submit Transcript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6. AI Agent \u2014 Generate CRM Report1": {
      "main": [
        []
      ]
    }
  }
}
Pro

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

About this workflow

Paste any sales call recording URL into a form — this n8n workflow automatically transcribes the call using WayinVideo, extracts structured CRM data with AI, and saves a complete report directly to your shared Google Doc.** No manual note-taking, no missed action items, no…

Source: https://n8n.io/workflows/14588/ — 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

🎯 Create viral TikToks, Shorts, Reels, podcasts, and ASMR videos in minutes — all on autopilot.

OpenAI, HTTP Request, Form Trigger +7
AI & RAG

Digistars - Scrape & Crawl. Uses httpRequest, n8n-nodes-firecrawl-scraper, googleSheets, lmChatOpenAi. Event-driven trigger; 63 nodes.

HTTP Request, N8N Nodes Firecrawl Scraper, Google Sheets +5
AI & RAG

PixelSensei(ZH). Uses agent, outputParserStructured, formTrigger, lmChatOpenAi. Event-driven trigger; 55 nodes.

Agent, Output Parser Structured, Form Trigger +4
AI & RAG

🧠 Automate end-to-end SEO blog creation and WordPress publishing using a GPT-5 multi-agent workflow with real-time research, metadata generation, and optional featured images.

Output Parser Structured, HTTP Request, OpenAI +10
AI & RAG

Lection 9 main. Uses formTrigger, chatTrigger, agent, lmChatOpenAi. Event-driven trigger; 55 nodes.

Form Trigger, Chat Trigger, Agent +7