AutomationFlowsCRM & Sales › Zoho CRM Conversation Intelligence Analyzer

Zoho CRM Conversation Intelligence Analyzer

Original n8n title: Zoho CRM - Conversation Intelligence Analyzer

Zoho CRM - Conversation Intelligence Analyzer. Uses openAi, informationExtractor, lmChatOpenAi, zohoCrm. Webhook trigger; 16 nodes.

Webhook trigger★★★★☆ complexityAI-powered16 nodesOpenAIInformation ExtractorOpenAI ChatZoho Crm
CRM & Sales Trigger: Webhook Nodes: 16 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Informationextractor → OpenAI Chat 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": "kvGcRPdqhfv1DyEi",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Zoho CRM - Conversation Intelligence Analyzer",
  "tags": [
    {
      "id": "MrPLV9qP4N9aNfVu",
      "name": "Submit",
      "createdAt": "2025-11-14T06:55:53.666Z",
      "updatedAt": "2025-11-14T06:55:53.666Z"
    }
  ],
  "nodes": [
    {
      "id": "96603a8b-915a-4292-9efa-6e922412ba49",
      "name": "Workflow Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        336,
        432
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "sentimentThreshold",
              "type": "number",
              "value": 0.7
            },
            {
              "id": "id-2",
              "name": "minCommitmentConfidence",
              "type": "number",
              "value": 0.8
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "e9f391eb-04f7-43c5-9966-d1d5ab064161",
      "name": "Transcribe Call Recording",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        688,
        432
      ],
      "parameters": {
        "options": {},
        "resource": "audio",
        "operation": "transcribe"
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "aecfaa59-5281-4a6d-99e3-93684325dada",
      "name": "Extract Key Topics",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        864,
        432
      ],
      "parameters": {
        "text": "={{ $json.text }}",
        "options": {},
        "attributes": {
          "attributes": [
            {
              "name": "topics",
              "description": "List of key topics discussed in the conversation"
            },
            {
              "name": "mainSubject",
              "description": "Primary subject or purpose of the call"
            },
            {
              "name": "actionItems",
              "description": "Specific action items mentioned"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "c929f6da-6054-4ead-af9f-69ce7da196a2",
      "name": "OpenAI Model for Topics",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        856,
        656
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "cdee9d00-4703-4c5d-aadf-cb53c5485f04",
      "name": "Analyze Sentiment",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        1168,
        432
      ],
      "parameters": {
        "text": "={{ $('Transcribe Call Recording').item.json.text }}",
        "options": {},
        "attributes": {
          "attributes": [
            {
              "name": "overallSentiment",
              "description": "Overall sentiment: positive, negative, or neutral"
            },
            {
              "name": "sentimentScore",
              "type": "number",
              "description": "Sentiment score from -1 (very negative) to 1 (very positive)"
            },
            {
              "name": "customerMood",
              "description": "Customer emotional state during the call"
            },
            {
              "name": "salesRepTone",
              "description": "Sales representative tone and approach"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "6265c67a-dc7e-4f9f-bd08-de801de90b81",
      "name": "OpenAI Model for Sentiment",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1208,
        656
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "309e685d-a4d0-495f-b576-abcd0133495e",
      "name": "Extract Commitments",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        1472,
        432
      ],
      "parameters": {
        "text": "={{ $('Transcribe Call Recording').item.json.text }}",
        "options": {},
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"commitments\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"description\": \"List of commitments made during the call\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"object\",\n\t\t\t\t\"properties\": {\n\t\t\t\t\t\"party\": {\n\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\"description\": \"Who made the commitment: customer or sales rep\"\n\t\t\t\t\t},\n\t\t\t\t\t\"commitment\": {\n\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\"description\": \"Description of the commitment\"\n\t\t\t\t\t},\n\t\t\t\t\t\"deadline\": {\n\t\t\t\t\t\t\"type\": \"string\",\n\t\t\t\t\t\t\"description\": \"Deadline or timeframe for the commitment\"\n\t\t\t\t\t},\n\t\t\t\t\t\"confidence\": {\n\t\t\t\t\t\t\"type\": \"number\",\n\t\t\t\t\t\t\"description\": \"Confidence level of this being a real commitment (0-1)\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "2a577168-db07-4dc7-9164-96cc56235c77",
      "name": "OpenAI Model for Commitments",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1560,
        656
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {},
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "3871b8f9-7265-4024-b1b0-4390e38ca356",
      "name": "Generate Follow-up Suggestions",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1792,
        432
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "GPT-4O-MINI"
        },
        "options": {},
        "responses": {
          "values": [
            {
              "content": "=As an AI Conversation Analyst, your task is to review the following sales call transcript and the identified commitments. Based ONLY on this information, generate a numbered list of 3-5 clear, actionable **Follow-Up Suggestions** for the Sales Representative.\n\nFocus on next steps, scheduling, and ensuring commitments are met.\n\n---\n[CONTEXT]\n1. Full Call Transcript:\n{{ $('Transcribe Call Recording').item.json.text }}\n2. Extracted Commitments (from previous node):\n{{ $json.output.commitments }}\n---\n\nOutput only the numbered list of suggestions."
            }
          ]
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "9e0bc5a8-a245-48d3-91f3-64b3acfdb092",
      "name": "Combine Analysis Results",
      "type": "n8n-nodes-base.set",
      "position": [
        2192,
        432
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "transcription",
              "type": "string",
              "value": "={{ $('Transcribe Call Recording').item.json.text }}"
            },
            {
              "id": "id-2",
              "name": "keyTopics",
              "type": "string",
              "value": "={{ $('Extract Key Topics').item.json.output.topics }}"
            },
            {
              "id": "id-3",
              "name": "mainSubject",
              "type": "string",
              "value": "={{ $('Extract Key Topics').item.json.output.mainSubject }}"
            },
            {
              "id": "id-4",
              "name": "sentiment",
              "type": "string",
              "value": "={{ $('Analyze Sentiment').item.json.output.overallSentiment }}"
            },
            {
              "id": "id-5",
              "name": "sentimentScore",
              "type": "number",
              "value": "={{ $('Analyze Sentiment').item.json.output.sentimentScore }}"
            },
            {
              "id": "id-6",
              "name": "customerMood",
              "type": "string",
              "value": "={{ $('Analyze Sentiment').item.json.output.customerMood }}"
            },
            {
              "id": "id-8",
              "name": "followUpSuggestions",
              "type": "string",
              "value": "={{ $json.output[0].content[0].text }}"
            },
            {
              "id": "id-9",
              "name": "analysisTimestamp",
              "type": "string",
              "value": "={{ $now.toISO() }}"
            },
            {
              "id": "6b851fff-6136-4f45-ad73-d44fb780e4c1",
              "name": "commitment",
              "type": "string",
              "value": "={{ $('Extract Commitments').item.json.output.commitments }}"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "4190ac70-7099-4343-8f2f-9bf6a95fe053",
      "name": "Update CRM with Analysis",
      "type": "n8n-nodes-base.zohoCrm",
      "position": [
        2416,
        432
      ],
      "parameters": {
        "leadId": "",
        "resource": "lead",
        "operation": "update",
        "updateFields": {
          "customFields": {
            "customFields": [
              {
                "value": "={{ $('Extract Key Topics').item.json.output.topics }}",
                "fieldId": "Topic"
              },
              {
                "value": "={{ $('Extract Key Topics').item.json.output.mainSubject }}",
                "fieldId": "Main_Subject"
              },
              {
                "value": "={{ $('Extract Key Topics').item.json.output.actionItems }}",
                "fieldId": "Action_Items"
              },
              {
                "value": "={{ $('Analyze Sentiment').item.json.output.customerMood }}",
                "fieldId": "Customer_Mood"
              },
              {
                "value": "={{ $('Analyze Sentiment').item.json.output.sentimentScore }}",
                "fieldId": "Sentiment_Scores"
              },
              {
                "value": "={{ $('Analyze Sentiment').item.json.output.overallSentiment }}",
                "fieldId": "Sentiment"
              },
              {
                "value": "={{ $('Generate Follow-up Suggestions').item.json.output[0].content[0].text }}",
                "fieldId": "FollowUp_Text"
              }
            ]
          }
        }
      },
      "credentials": {
        "zohoOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "344d73a0-8ba8-434a-8a4c-b0cebe32463b",
      "name": "Webhook Trigger",
      "type": "n8n-nodes-base.webhook",
      "position": [
        48,
        432
      ],
      "parameters": {
        "path": "call-recording-upload",
        "options": {},
        "httpMethod": "POST",
        "responseMode": "lastNode"
      },
      "typeVersion": 2.1
    },
    {
      "id": "7ef8cda8-48f8-41ce-911c-4a062d5ab489",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -480,
        -144
      ],
      "parameters": {
        "width": 448,
        "height": 640,
        "content": "## How it works\nThis workflow automatically processes every call recording uploaded to your webhook and enriches the corresponding Lead in Zoho CRM. When a recording is received, the system transcribes the audio using OpenAI Whisper, extracts the key topics, identifies action items, and analyzes both customer sentiment and sales-rep tone. It also detects any commitments mentioned on the call and generates clear follow-up suggestions for the sales team. All insights are pushed into the lead record in Zoho CRM.\nThis automation removes the need for manual note-taking or call reviews, giving your team AI-generated clarity within seconds.\n\n## Setup Steps\n\n1.Import the workflow JSON file into n8n.\n2.Add your Zoho CRM OAuth2 credentials and your OpenA I API key.\n3.Copy the webhook URL from n8n and configure your telephony system or app to POST the call recording file to that URL.\n4.Map the required Zoho custom fields (topics, sentiment, commitments, follow-up actions).\n5.Run a test by uploading a sample call recording.\n6.Verify the extracted insights and confirm that the correct Lead record is updated.\n7.Activate the workflow and begin processing real calls automatically."
      },
      "typeVersion": 1
    },
    {
      "id": "672c46e7-e0cb-47da-83fc-d4598098c78b",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        240,
        208
      ],
      "parameters": {
        "color": 7,
        "width": 304,
        "height": 592,
        "content": "### Configuration\nThis step defines all static values needed across the workflow, such as sentimentThreshold, minCommitmentConfidence, and any other reusable parameters. It ensures consistent logic, easy updates, and avoids hard-coding values inside individual nodes."
      },
      "typeVersion": 1
    },
    {
      "id": "126c7145-6e59-409f-a0d2-c4188a1111f0",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        624,
        208
      ],
      "parameters": {
        "color": 7,
        "width": 1456,
        "height": 592,
        "content": "### Transcription and Data Extraction using OpenAi\nWhen a call recording is received, it is first transcribed using OpenAI. The transcript is then analyzed to extract key topics, identify commitments, evaluate sentiment, and generate follow-up actions."
      },
      "typeVersion": 1
    },
    {
      "id": "6cb2f2d6-1508-4794-a310-e46ea87e0184",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2128,
        208
      ],
      "parameters": {
        "color": 7,
        "width": 480,
        "height": 592,
        "content": "### Combine result\nMerge all previous output and updated in the Zoho leads."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "19b0e96c-fefa-4a0c-8b52-5b118b903baf",
  "connections": {
    "Webhook Trigger": {
      "main": [
        [
          {
            "node": "Workflow Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyze Sentiment": {
      "main": [
        [
          {
            "node": "Extract Commitments",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Key Topics": {
      "main": [
        [
          {
            "node": "Analyze Sentiment",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Commitments": {
      "main": [
        [
          {
            "node": "Generate Follow-up Suggestions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Workflow Configuration": {
      "main": [
        [
          {
            "node": "Transcribe Call Recording",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model for Topics": {
      "ai_languageModel": [
        [
          {
            "node": "Extract Key Topics",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Combine Analysis Results": {
      "main": [
        [
          {
            "node": "Update CRM with Analysis",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transcribe Call Recording": {
      "main": [
        [
          {
            "node": "Extract Key Topics",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model for Sentiment": {
      "ai_languageModel": [
        [
          {
            "node": "Analyze Sentiment",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Model for Commitments": {
      "ai_languageModel": [
        [
          {
            "node": "Extract Commitments",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Generate Follow-up Suggestions": {
      "main": [
        [
          {
            "node": "Combine Analysis Results",
            "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

Zoho CRM - Conversation Intelligence Analyzer. Uses openAi, informationExtractor, lmChatOpenAi, zohoCrm. Webhook trigger; 16 nodes.

Source: https://github.com/weblineindia/n8n-Analyze-call-recordings-with-OpenAI-and-update-Zoho-CRM-leads-automatically/blob/main/main.json — original creator credit. Request a take-down →

More CRM & Sales workflows → · Browse all categories →

Related workflows

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

CRM & Sales

v25.1.1. Uses httpRequest, mySql, n8n-nodes-zohozeptomail. Webhook trigger; 80 nodes.

HTTP Request, MySQL, N8N Nodes Zohozeptomail
CRM & Sales

This is ideal for agencies, freelancers, SaaS founders, and small sales teams who want every lead recorded and followed up automatically within seconds. The workflow supports two storage options: HubS

HTTP Request, Google Sheets, Slack +1
CRM & Sales

This template enriches HubSpot company records using real-time data from the Bedrijfsdata.nl API. It listens for changes to company properties (e.g., ) and updates records with verified information su

HubSpot, @Bedrijfsdatanl/N8N Nodes Bedrijfsdata
CRM & Sales

Real-Time Lead Processing - Captures and processes leads instantly from website forms with zero delay Intelligent Fit Scoring - Automatically scores leads 0-100 based on company size, seniority, and r

Clearbit, HubSpot, HTTP Request +3
CRM & Sales

Job offers are a goldmine of information.

Lemlist, HubSpot, Dropcontact +1