Mindket

Instant AI phone call to new contact-form leads

Newversion 1 · updated

Overview

An n8n workflow that phones each new contact-form lead moments after they write. It reads their website, has Tavily look for their LinkedIn profile and logs a short summary in Google Sheets. Then a Vapi voice assistant calls them, briefed on who they are.

Instant AI phone call to new contact-form leads is an n8n workflow in the Business category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

At a glance

Runs in
  • n8n Cloud or your own server: import the file and publish it, so the form’s production address works
  • Your website: point the contact button at the form’s address
  • Google Sheets: the lead list, one row each, the summary beside the number
  • Vapi: the call itself, and its log in your Vapi dashboard
Start with
Hi {{name}}, this is Sam from Acme. You recently submitted an enquiry about {{howWeCanHelp}}. Is now a good time?

Platform

Connects 4 apps

How it works

Trigger

Contact form

It starts when someone sends the Contact form with:

  • Name
  • Phone number
  • An enquiry, in How can we help you
  • Website URL, which the run needs

Actions

  1. Fetches the page at the lead’s website address and turns it into Markdown
  2. Tavily searches for the person’s LinkedIn profile and keeps the first result
  3. gpt-4.1-mini writes a lead summary of up to 100 words, and the lead is added to Google Sheets
  4. Two OpenAI calls shorten the enquiry into a phrase and add a country code to the number
  5. Vapi calls the lead with an assistant briefed on the name, the enquiry and the summary

Result

A logged lead in your sheet, and a call from your Vapi assistant moments after the form is sent

Integrations

What you need before you start.

OpenAI

Language model

Runs gpt-4.1-mini three times: for the lead summary, the short enquiry phrase and the phone number’s country code.

NeedsOpenAI API key

Tavily

Web search

Searches for the lead’s LinkedIn profile by name and returns the first result’s address and text.

NeedsTavily API key

Google Sheets

Spreadsheet

Keeps one row per lead with the number, website, enquiry, profile address and summary.

NeedsA Google account with Sheets access, and a sheet with the seven columns

Vapi

Voice calls

Places the call from your Vapi number and fills the assistant’s script with the lead’s name, enquiry and summary.

NeedsVapi API key, an assistant ID and a phone number ID

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
9 steps, starting on a form
AI
3 steps call an AI model: Lead summary Agent, Simplify enquiry and Format phone number
Sign-ins
Signs in to: Google Sheets, OpenAI, Vapi and Tavily
API keys
No API key is left in the file; 2 blanks in it for your own key
Step types
Mindket’s checker reads all 6 of its step types

Read from the workflow’s file, not from a run.

About

What it is

This n8n workflow phones a new lead within moments of their contact-form message, and the voice assistant on the line already knows who they are. Nine nodes run in one row, beside a chat model and a sticky note. The form takes a name, a phone number, the enquiry and a website. n8n fetches that website’s page, Tavily looks for the person’s LinkedIn profile, and gpt-4.1-mini writes a summary of up to 100 words. The lead goes into Google Sheets. Two more OpenAI calls shorten the enquiry into a phrase and add a country code to the number. Then Vapi dials.

  1. A lead sends the contact form
  2. n8n reads their website and Tavily finds a LinkedIn profile
  3. gpt-4.1-mini writes a short summary, saved to Google Sheets
  4. The enquiry and the phone number are tidied for the call
  5. Vapi phones the lead with the summary in hand

Who it suits

Agencies, consultants and service businesses whose leads arrive through a website form and cool off while they wait for a call back. It suits a team that has, or will build, a Vapi assistant for that first call. Skip it if your leads expect a person on the line.

Who uses it, and how
IndustryWho uses itHow they use itExample
AI and automation agenciesFounders who sell buildsCall each enquiry while the visitor is still on the siteAn agency’s assistant rings a shop owner a minute after they ask about a chatbot.
Web and marketing studiosAccount directorsBrief the assistant with the prospect’s site before it speaksA studio’s assistant opens by naming what the lead’s company sells.
Home and local servicesOwners of trades businessesReturn every quote request at once, evenings and weekends tooA roofer’s assistant calls back a Sunday evening enquiry and asks when to visit.
B2B softwareSales development teamsQualify demo requests by phone and keep each one in the sheetA rep reads the summary column before the human follow-up call.

You need to be at ease in two dashboards, n8n’s and Vapi’s. The assistant’s script lives in Vapi, and the file only hands it three values. Its author puts setup at about 14 minutes, not counting the assistant.

Where to use it

Any n8n that can reach OpenAI, Tavily, Google and Vapi will run it. The form is n8n’s own page, so your site links to it.

  • n8n Cloud or your own server: import the file and publish it, so the form’s production address works
  • Your website: point the contact button at the form’s address
  • Google Sheets: the lead list, one row each, the summary beside the number
  • Vapi: the call itself, and its log in your Vapi dashboard

Setup

Get it saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Make the spreadsheet and the Vapi assistant first.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server of your own
OpenAIAn API key, used by three nodes
TavilyAn API key, for the LinkedIn search
GoogleAn account that can edit the spreadsheet, for a Google Sheets OAuth2 credential
VapiAn API key, an assistant and a phone number to call from
A spreadsheetSeven columns in row 1 of its first tab: Name, Phone number, Website URL, Status, Notes, Linkedin URL, Lead summary
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. Add a Google Sheets OAuth2 credential, select it in Append row in sheet and replace YOUR_SHEET_ID with the spreadsheet’s ID, the part of its address between /d/ and /edit.
  3. Add an OpenAI credential and select it in OpenAI Chat Model, Simplify enquiry and Format phone number.
  4. In Find Linkedin URL, replace <YOUR_TAVILY_API_KEY> in the Authorization header with your key, brackets included, so it reads Bearer, a space and the key.
  5. In HTTP Request, do the same with your Vapi private key, then put your IDs in place of YOUR_ASSISTANT_ID and YOUR_PHONE_NUMBER_ID.
  6. In Vapi, write {{name}}, {{howWeCanHelp}} and {{BusinessInfo}} into the assistant’s first message and prompt.
  7. Save, send the form once from its test address with your own number, then press Publish.

Vapi’s API reference, read on 2 November 2026, says the three values fill the assistant’s text with LiquidJS. So {{name}} becomes the lead’s name. A first message like this one fits the phrase that Simplify enquiry writes:

Hi {{name}}, this is Sam from Acme. You recently submitted an enquiry about {{howWeCanHelp}}. Is now a good time?

The same reference lists the endpoint as POST https://api.vapi.ai/call, while the file posts to /call/phone. If Vapi refuses the old path, change the URL in HTTP Request.

How to use it

Nothing to press once it is published. A lead sends the form, the form thanks them at once, and the run goes on behind it: page, search, summary, row, call. Read the lead in the sheet and the call in Vapi.

What to change for a different result
To changeWhere
Summary length and focusThe system message of Lead summary Agent, capped at 100 words
The searchThe query in the body of Find Linkedin URL, which uses the name alone
Country codeThe prompt of Format phone number. Name your own country there
What the assistant saysIts first message and prompt in Vapi
Form fieldsOn form submission. Other nodes read the fields by their labels

Example

Priya Shah sends the form with a mobile number written without its country code, her bakery’s website and this enquiry:

I want an online ordering system for my bakery so people can pre-order cakes

Simplify enquiry turns it into a phrase such as an online ordering system for your bakery. Format phone number adds a country code, and Vapi gets this body, trimmed:

{
  "assistantId": "YOUR_ASSISTANT_ID",
  "customer": { "number": "+44…" },
  "phoneNumberId": "YOUR_PHONE_NUMBER_ID",
  "assistantOverrides": {
    "variableValues": {
      "name": "Priya Shah",
      "howWeCanHelp": "an online ordering system for your bakery",
      "BusinessInfo": "…"
    }
  }
}

Her row in the sheet has Status New Lead, the profile address Tavily found and the summary.

For newcomers and experts

If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. Here they run in one row, left to right, and the last one hands the call to Vapi. A credential is a key n8n keeps for you, though two keys here are typed into node headers instead. Test with your own number first. Every node then shows what it received and sent.

For experts. Three OpenAI calls share one model. The voice belongs to Vapi.

The model behind each step
StepModelWhat to know
Lead summary Agentgpt-4.1-mini-2025-04-14, through OpenAI Chat ModelReads the first search result’s text and the whole page as Markdown, which can run long
Simplify enquirygpt-4.1-mini-2025-04-14Swaps I and my for you, so the phrase reads right when the assistant says it
Format phone numbergpt-4.1-mini-2025-04-14Told to answer with the number alone
The callYour Vapi assistantIts voice, model and script are set in Vapi

Find Linkedin URL runs a basic Tavily search for one result, and the sheet keeps that result’s address. HTTP Request carries on after an error, so a refused call leaves a finished run with the error in that node’s output.

Good to know

Every lead costs a call’s minutes, and the form decides who gets called.

  • A missing website: the form lets a lead skip Website URL, but Scrape website URL needs it, so the run stops there with no row and no call. Make the field required
  • The wrong person: the search uses the name alone and keeps the first hit, so a common name can put a stranger’s profile in the summary
  • Country codes: the prompt’s only example is +44, and Vapi expects E.164 numbers such as +14155551234 by default, so name your country in the prompt
  • Quiet failures: the values enter the call’s JSON as they are, so a quote or a line break in the summary can break it while the run still ends green
  • Open form: anyone with its address can enter any number, and your Vapi account will call it
  • Calling rules: many countries ask for consent before an automated or AI voice call, so say on the form that you will phone back
  • Billing: three short gpt-4.1-mini calls, one Tavily search and the call’s minutes on Vapi for each lead
  • Where data goes: the page and the lead’s details go to OpenAI, the name to Tavily, and the number, name, enquiry and summary to Vapi
  • Credentials: the JSON holds none, and nothing from its author’s spreadsheet

README and files

README

Instant AI phone call to new contact-form leads

An n8n workflow. When someone sends your contact form, it reads their website, looks for their LinkedIn profile, logs
the lead in Google Sheets and has a Vapi voice assistant phone them, briefed on who they are.

What is inside

  • workflow.json: the workflow as n8n exports it, 11 nodes, one of them a sticky note. It holds no credential and none
    of its author's spreadsheet. The two API keys, the Vapi assistant and the Vapi phone number are placeholders.
  • README.md: these notes.

Before you start

  • An n8n instance, on n8n Cloud or your own server.
  • An OpenAI API key.
  • A Tavily API key.
  • A Google account and a spreadsheet for the leads (below).
  • A Vapi account with an API key, an assistant and a phone number to call from.

The spreadsheet

Write these seven column names in row 1 of the spreadsheet's first tab:

Name, Phone number, Website URL, Status, Notes, Linkedin URL, Lead summary

Append row in sheet adds one row per lead. Status is always New Lead, and Notes holds the enquiry as the lead
typed it.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. Copy the spreadsheet's ID: the long part of its address between /d/ and /edit.
  3. Add a Google Sheets OAuth2 credential, select it in Append row in sheet and replace YOUR_SHEET_ID with the ID.
    The node writes to the first tab.
  4. Add an OpenAI credential and select it in OpenAI Chat Model, Simplify enquiry and Format phone number.
  5. In Find Linkedin URL, replace <YOUR_TAVILY_API_KEY> in the Authorization header with your Tavily key. The
    brackets go too, so the value reads Bearer, a space and the key.
  6. In HTTP Request, do the same with your Vapi private API key. Then put your assistant's ID in place of
    YOUR_ASSISTANT_ID and your Vapi phone number's ID in place of YOUR_PHONE_NUMBER_ID, both in the JSON body.
  7. Set up the assistant in Vapi so it uses the three values the call sends (below).
  8. Save, send the form once from its test address with your own phone number, then press Publish and link your site's
    contact button to the form's production address.

The Vapi assistant

The file does not include the assistant: its voice, model and script live in your Vapi account. The call hands it three
values in assistantOverrides.variableValues:

| Variable | What it holds |
|---|---|
| name | The Name field of the form |
| howWeCanHelp | The enquiry, shortened by Simplify enquiry into a phrase that speaks to the lead as "you" |
| BusinessInfo | The summary from Lead summary Agent |

Vapi's API reference, read on 2 November 2026, says these values fill the assistant's text with LiquidJS syntax: {{name}}
in a first message becomes the lead's name. A first message like this one fits the phrase Simplify enquiry writes,
which is built to finish a sentence:

Hi {{name}}, this is Sam from Acme. You recently submitted an enquiry about {{howWeCanHelp}}. Is now a good time?

Put {{BusinessInfo}} in the assistant's system prompt, so it knows the company before it speaks.

The same reference lists the endpoint as POST https://api.vapi.ai/call with this body, while the file posts to
https://api.vapi.ai/call/phone. If Vapi answers the old address with an error, change the URL in HTTP Request.

What runs, in order

| Node | What it does |
|---|---|
| On form submission | Takes Name, Phone number, How can we help you and Website URL |
| Scrape website URL | Fetches the page at the address the lead gave |
| Markdown | Turns that page's HTML into Markdown |
| Find Linkedin URL | Asks Tavily for the name's LinkedIn profile and keeps the first result |
| Lead summary Agent | gpt-4.1-mini writes up to 100 words on the lead and the company, from the page and the search result |
| Append row in sheet | Adds the lead, the profile's address and the summary to the sheet |
| Simplify enquiry | Turns the enquiry into a short phrase for the call |
| Format phone number | Adds a country code when the number has none |
| HTTP Request | Asks Vapi to place the call |

Lead summary Agent reads only the page at the address given, usually the home page, not the whole site.

Change the result

  • The summary: the system message of Lead summary Agent, which caps it at 100 words.
  • The search: the query in the body of Find Linkedin URL. It searches the name alone, and adding the company's
    domain narrows it.
  • The country code: the prompt of Format phone number. Name your home country there, so a local number gets its code.
  • What the assistant says: its first message and prompt in Vapi, not in n8n.
  • The form: the four fields of On form submission. Other nodes read them by label, so rename them there too.

Good to know

  • Website URL is optional on the form, but Scrape website URL needs it. A lead who leaves it empty stops the run at
    that node, with no row and no call. Make the field required in the form node.
  • A common name can bring back someone else's profile, since the search uses the name alone and keeps the first hit.
    The summary then describes the wrong person.
  • The country code is the model's guess, and the prompt's only example is +44. Vapi expects numbers in E.164 form, such
    as +14155551234, unless you switch that check off.
  • HTTP Request carries on after an error, so a refused call still ends the run as a success. Look at its output under
    Executions. The three values go into the JSON body as they are, and a double quote or a line break in the summary can
    break it.
  • Open form: anyone with its address can type any number, and your Vapi account will call it.
  • Calling rules: many countries ask for consent before an automated or AI voice call. Say on the form that you will
    phone back, and check the rules where your leads live.
  • Costs: three short gpt-4.1-mini calls, one basic Tavily search and the call's minutes on Vapi for each lead.
  • Where the data goes: the website's page and the lead's details go to OpenAI, the name goes to Tavily, and the number,
    name, enquiry and summary go to Vapi.
Files
README.md  6 KB
workflow.json  12 KB

2 files, 19 KB, downloaded as a zip.

What’s new

  • Version 1 · 2026-11-03

Reviews

No ratings yet

Write a review

No reviews yet.

More from Mindket

See all from Mindket

Huashu Design

alchaincyf · Skill

Turns a one-line request in your AI agent into a finished design: a launch animation, a clickable app prototype, an editable slide deck, an infographic or a se…

New29.4k

Guizang PPT Skill

op7418 · Skill

Skill that makes single-file HTML slide decks, slide illustrations and platform covers in two visual styles, with a presenter mode for rehearsal. For speakers…

New29.8k

Claude Code Skills & Plugins

alirezarezvani · Skill

Adds 411 ready-made skills for Claude Code and other coding agents, grouped by role from engineering and product to marketing, finance and compliance. Installs…

New29.8k

Similar in Business

See all in Business

pplx-decider-v1.1-27b

perplexity-ai · Kit

Picks the best option for a decision from text and images, such as which team should handle a request, with a probability for each choice, for developers who b…

New

NuExtract3

numind · Kit

Reads documents as text or images and fills a JSON template with the fields you ask for, or converts the pages to Markdown. A 4B model for teams that process s…

New

Drex DLM

nace-ai · Kit

Scores yes or no, multiple choice and rating questions about a document in one pass, with a probability for every option. An 8B decision model from Nace.AI tha…

New