This workflow corresponds to n8n.io template #6695 — we link there as the canonical source.
This workflow follows the HTTP Request → Informationextractor 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 →
{
"id": "98aUzWGBxKfoUunX",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Trigger Outbound Vapi AI Voice Calls From New Jotform Submissions",
"tags": [],
"nodes": [
{
"id": "913a4a9a-6b53-4540-ac8f-16d4b5eaf028",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
318,
-156
],
"parameters": {
"width": 260,
"height": 396,
"content": "## Set Vapi fields\nYou must set the following fields that you can obtain inside your Vapi account \n- phone number id which will make the call\n- assistant id which will be enabled in the call\n- your Vapi api key"
},
"typeVersion": 1
},
{
"id": "77909286-b9fa-4013-b287-32e3681a7997",
"name": "Start outbound Vapi call",
"type": "n8n-nodes-base.httpRequest",
"position": [
624,
80
],
"parameters": {
"url": "https://api.vapi.ai/call",
"method": "POST",
"options": {},
"jsonBody": "={\n \"assistantId\": \"{{ $json.vapiAssistantId }}\",\n \"phoneNumberId\": \"{{ $json.vapiPhoneNumberId }}\",\n \"customer\": {\n \"number\": \"{{ $('Information Extractor').item.json.output.internationalPhone }}\"\n }\n}\n",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "=Bearer {{ $json.vapiApi }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "4c6ce81d-063e-4c20-99a9-5c1543768c66",
"name": "Set fields",
"type": "n8n-nodes-base.set",
"position": [
400,
80
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "f38947e1-c75a-44cc-88f9-c44fc80bada8",
"name": "vapiPhoneNumberId",
"type": "string",
"value": "insert-id"
},
{
"id": "463ed66e-e072-48dc-a75d-a3815fd07de0",
"name": "vapiAssistantId",
"type": "string",
"value": "insert-id"
},
{
"id": "93f058cd-e015-4b83-a16f-efceddafb128",
"name": "vapiApi",
"type": "string",
"value": "insert-api"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "4cdeccad-e186-4fb2-95e3-66b2256830aa",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-624,
-160
],
"parameters": {
"color": 4,
"width": 320,
"height": 440,
"content": "## Requirements \n### Jotform\n- [Jotform](https://www.jotform.com/?partner=https://1node.ai) account\n- Jotform API credentials enabled in n8n\n- A Jotform form published that includes a phone number field\n\n### Vapi\n- A [Vapi](https://vapi.ai/?aff=onenode) account with credit\n- A connected phone number which will make the calls\n- An assistant created and ready to make calls\n- Vapi api key \n\n### Useful link\n- [Vapi docs](https://docs.vapi.ai/api-reference/calls/create)\n"
},
"typeVersion": 1
},
{
"id": "5e756ae2-70d0-4fde-aa93-235815dded07",
"name": "JotForm Trigger",
"type": "n8n-nodes-base.jotFormTrigger",
"position": [
-224,
80
],
"parameters": {
"form": "252102909108349"
},
"credentials": {
"jotFormApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "29868797-41e8-44d7-afe5-13b3a56214e7",
"name": "Information Extractor",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
0,
80
],
"parameters": {
"text": "=- country: {{ $json['Phone Number'].country }} \n- area code: {{ $json['Phone Number'].area }}\n- phone: {{ $json['Phone Number'].phone }}",
"options": {},
"attributes": {
"attributes": [
{
"name": "internationalPhone",
"required": true,
"description": "international formatted phone number. Includes the + sign, followed by the country code and phone number, without spaces. Example: +1234567890"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "a1be9c8b-715a-49f2-a252-8da8642d9c98",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
96,
304
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1",
"cachedResultName": "gpt-4.1"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
}
],
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "8d0208e5-a730-4e86-992a-43a02118fc69",
"connections": {
"Set fields": {
"main": [
[
{
"node": "Start outbound Vapi call",
"type": "main",
"index": 0
}
]
]
},
"JotForm Trigger": {
"main": [
[
{
"node": "Information Extractor",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Information Extractor",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Information Extractor": {
"main": [
[
{
"node": "Set fields",
"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.
jotFormApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow connects JotForm submissions to Vapi AI, triggering a personalized outbound call via an AI voice assistant immediately after a user submits your form. A JotForm account JotForm API credentials enabled in n8n A published JotForm form with a phone number field A Vapi…
Source: https://n8n.io/workflows/6695/ — 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.
This workflow is ideal for HR professionals, recruiters, and small businesses looking to streamline resume screening with AI-powered analysis and CRM integration.
Episode 18 Scary Stories TikTok final. Uses httpRequest, lmChatOpenAi, lmChatOllama, lmChatDeepSeek. Event-driven trigger; 83 nodes.
Transform your Gmail sent folder into a comprehensive, enriched contact database automatically. This workflow processes hundreds or thousands of sent emails, extracting and enriching contact informati
Author: CSChin Example Source: https://www.ncl.ac.uk/singapore/staff/profile/chengchin.html#publications
1978. Uses informationExtractor, lmChatOpenAi, stopAndError, httpRequest. Event-driven trigger; 24 nodes.