Jotform to Vapi, call new leads while they care
Your lead submits a form, and then… nothing. Or worse, you see it two hours later, the number is typed weird, and the moment is gone. Jotform Vapi calls automation fixes that gap.
This hits marketing managers hardest when campaigns spike, but founders and agency owners feel it too. You want a real conversation while intent is still warm, not another stale “just checking in” email.
This workflow turns every Jotform submission into an immediate, personalized outbound call from a Vapi AI voice assistant. You’ll see what it does, what you need, and how the flow actually behaves in the real world.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Jotform to Vapi, call new leads while they care
flowchart LR
subgraph sg0["JotForm Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Start outbound Vapi call"]
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set fields", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/jotform.dark.svg' width='40' height='40' /></div><br/>JotForm Trigger"]
n3@{ icon: "mdi:robot", form: "rounded", label: "Information Extractor", pos: "b", h: 48 }
n4@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n1 --> n0
n2 --> n3
n4 -.-> n3
n3 --> n1
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n2 trigger
class n3 ai
class n4 aiModel
class n0 api
classDef customIcon fill:none,stroke:none
class n0,n2 customIcon
The Challenge: Fast follow-up without messy manual work
Leads don’t wait. Someone fills out your Jotform because they’re curious right now, and the longer your follow-up takes, the more likely they forget why they reached out in the first place. The frustrating part is that the delay usually isn’t strategy, it’s logistics: checking for new submissions, copying phone numbers, cleaning formatting, deciding who should call, and then actually placing the call. You end up spending attention on tiny steps, and those steps are exactly where mistakes happen.
It adds up fast. Here’s where it breaks down in day-to-day work.
- New submissions sit in a queue until someone notices them, which turns “hot” leads into “maybe later” leads.
- Phone numbers come in inconsistent formats, so calls fail or reps waste time correcting them.
- Follow-up quality varies because the “context” from the form rarely makes it into the first outreach.
- When volume rises, you either miss people or you rush, and neither one feels good.
The Fix: Instant Vapi outbound calls triggered by Jotform
This workflow listens for a new Jotform submission and reacts immediately. As soon as someone hits “Submit,” n8n grabs the submission data, extracts the contact details, and normalizes the phone number into a clean international format (including the + and country code) so Vapi accepts it without complaining. Then it prepares a call payload that includes your Vapi phone number ID, your assistant ID, and any extra context you want the assistant to use, like the lead’s name or what they asked for. Finally, n8n sends a POST request to Vapi’s /call endpoint and the AI voice assistant starts the outbound call while the lead still cares. Honestly, it feels like hiring a fast SDR without the calendar juggling.
The workflow starts with the Jotform trigger. It cleans and structures the key fields (especially the phone number), then it hands off to Vapi via an HTTP request to place the call. If you want deeper personalization, the OpenAI chat model can help shape what context gets passed into the call.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you get 20 Jotform leads a day. Manually, it’s easy to spend about 5 minutes per lead opening the submission, copying the number, fixing the format, and dialing, which is roughly 100 minutes daily (and that’s before you even talk). With this workflow, the “work” is basically zero: the trigger fires instantly, the workflow formats the phone number in seconds, and Vapi starts the outbound call within a couple minutes. You get back about an hour a day, and leads get a response while they’re still paying attention.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Jotform to capture leads and trigger submissions.
- Vapi to place AI-assisted outbound calls.
- Jotform API credentials (get them from Jotform settings/API).
- Vapi API key (get it from your Vapi dashboard).
Skill level: Intermediate. You’ll connect accounts, paste API keys, and map a few fields like phone number, assistant_id, and phone_number_id.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
A new Jotform submission comes in. The workflow begins the moment a visitor submits your published form (make sure a phone number field is included).
Contact details are extracted and cleaned. The automation formats the phone number into a Vapi-friendly international version, because a missing “+” can be the difference between “call placed” and “call failed.”
Call settings are assigned. n8n fills in your Vapi assistant_id, your Vapi phone_number_id, and the API key, plus any extra form fields you want to pass along for personalization.
Vapi places the outbound call. An HTTP request hits https://api.vapi.ai/call, and your AI voice assistant starts the conversation immediately.
You can easily modify what data gets sent to Vapi (like “service interest” or “budget”) to match your lead qualification process. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Trigger Type
Set up the form submission trigger so the workflow starts whenever a Jotform response is received.
- Add and open Jotform Submission Hook.
- Set Form to
252102909108349. - Credential Required: Connect your jotFormApi credentials.
- Ensure the node is connected to Extract Contact Details as shown in the execution flow.
Step 2: Connect Jotform Data to Contact Extraction
Extract an internationally formatted phone number from the Jotform submission using AI extraction.
- Add and open Extract Contact Details.
- Set Text to
=- country: {{ $json['Phone Number'].country }} - area code: {{ $json['Phone Number'].area }} - phone: {{ $json['Phone Number'].phone }}. - Under Attributes, ensure internationalPhone is required and described as the international phone format.
- Confirm Jotform Submission Hook outputs to Extract Contact Details.
Credential Required: The AI language model for Extract Contact Details is OpenAI Chat Engine — connect your openAiApi credentials on OpenAI Chat Engine, not on the extractor node.
Step 3: Set Up Processing/AI Node
Configure the OpenAI model that powers the extraction process.
- Open OpenAI Chat Engine.
- Set Model to
gpt-4.1. - Credential Required: Connect your openAiApi credentials.
- Verify OpenAI Chat Engine is connected as the language model to Extract Contact Details.
Step 4: Configure Output/Action Nodes
Populate Vapi identifiers and trigger the voice call with the extracted phone number.
- Open Assign Vapi Fields and set the following values: vapiPhoneNumberId to
[YOUR_ID], vapiAssistantId to[YOUR_ID], and vapiApi to[CONFIGURE_YOUR_API_KEY]. - Open Initiate Vapi Call and set URL to
https://api.vapi.ai/calland Method toPOST. - Set Specify Body to
jsonand JSON Body to={ "assistantId": "{{ $json.vapiAssistantId }}", "phoneNumberId": "{{ $json.vapiPhoneNumberId }}", "customer": { "number": "{{ $('Extract Contact Details').item.json.output.internationalPhone }}" } }. - Add a header in Initiate Vapi Call with Name
Authorizationand Value=Bearer {{ $json.vapiApi }}. - Confirm the execution flow: Extract Contact Details → Assign Vapi Fields → Initiate Vapi Call.
⚠️ Common Pitfall: Leaving the placeholder values in Assign Vapi Fields will cause authentication errors in Initiate Vapi Call. Replace them with real Vapi IDs and API key.
Step 5: Test and Activate Your Workflow
Run a manual test to confirm the call is initiated and then activate the workflow for live submissions.
- Click Execute Workflow and submit a test response to the Jotform linked in Jotform Submission Hook.
- Confirm Extract Contact Details outputs an
internationalPhonevalue. - Verify Initiate Vapi Call returns a successful API response from Vapi.
- Toggle the workflow to Active to enable automatic execution for new form submissions.
Watch Out For
- Jotform credentials can expire or need specific permissions. If things break, check your Jotform API settings and the connected account in n8n first.
- If Vapi takes longer to respond during high volume, processing times vary. Bump up any wait duration you add, or handle retries so downstream steps don’t fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early (greeting, compliance language, disqualification rules) or you will be editing outputs forever.
Common Questions
Usually in about 30 minutes once your keys and IDs are ready.
Yes. You won’t write code, but you will need to copy API keys and map a few fields from the form into the Vapi call payload.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Vapi usage (you’ll need credit) and OpenAI API costs for the chat model if you keep that node enabled.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
You can pass more Jotform fields into the “Assign Vapi Fields” step and include them in the HTTP request payload to Vapi. Common tweaks include sending name and timezone, routing to a different assistant_id based on a form answer, and using an If/Switch condition to skip calls for low-intent submissions (like “student” or “support request”). If you’d rather text first, you can keep the same trigger and swap the call step for a messaging action.
Most of the time it’s an invalid API key or a wrong phone_number_id/assistant_id getting sent in the request. The next most common issue is phone formatting, so check the extracted number includes a “+” and country code before the HTTP request runs. Also confirm your Vapi account has credit and an outbound-capable number connected.
On self-hosted n8n there’s no fixed execution cap; it mostly depends on your server and Vapi limits.
Often, yes, especially when you care about controlling formatting, branching logic, and what data gets sent into the call. n8n is comfortable handling “messy” inputs like phone numbers, and you can expand the workflow without paying extra for every filter. Zapier and Make can still work if you want a simple “form submission → webhook” flow and you’re fine with limited logic. The bigger difference is flexibility: adding conditions, retries, logging, or multiple assistant routes is straightforward in n8n. If you’re torn, Talk to an automation expert and describe your lead volume and process.
Fast follow-up is a compounding advantage. Set this up once, and your pipeline stops depending on someone remembering to check the inbox.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.