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…
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.
Hi {{name}}, this is Sam from Acme. You recently submitted an enquiry about {{howWeCanHelp}}. Is now a good time?Contact form
It starts when someone sends the Contact form with:
A logged lead in your sheet, and a call from your Vapi assistant moments after the form is sent
What you need before you start.
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
Web search
Searches for the lead’s LinkedIn profile by name and returns the first result’s address and text.
NeedsTavily API key
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
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
Checked by Mindket on 13 Nov 2026
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.
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.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| AI and automation agencies | Founders who sell builds | Call each enquiry while the visitor is still on the site | An agency’s assistant rings a shop owner a minute after they ask about a chatbot. |
| Web and marketing studios | Account directors | Brief the assistant with the prospect’s site before it speaks | A studio’s assistant opens by naming what the lead’s company sells. |
| Home and local services | Owners of trades businesses | Return every quote request at once, evenings and weekends too | A roofer’s assistant calls back a Sunday evening enquiry and asks when to visit. |
| B2B software | Sales development teams | Qualify demo requests by phone and keep each one in the sheet | A 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.
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.
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.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| OpenAI | An API key, used by three nodes |
| Tavily | An API key, for the LinkedIn search |
| An account that can edit the spreadsheet, for a Google Sheets OAuth2 credential | |
| Vapi | An API key, an assistant and a phone number to call from |
| A spreadsheet | Seven columns in row 1 of its first tab: Name, Phone number, Website URL, Status, Notes, Linkedin URL, Lead summary |
workflow.json.Append row in sheet and replace YOUR_SHEET_ID with the spreadsheet’s ID, the part of its address between /d/ and /edit.OpenAI Chat Model, Simplify enquiry and Format phone number.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.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.{{name}}, {{howWeCanHelp}} and {{BusinessInfo}} into the assistant’s first message and prompt.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.
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.
| To change | Where |
|---|---|
| Summary length and focus | The system message of Lead summary Agent, capped at 100 words |
| The search | The query in the body of Find Linkedin URL, which uses the name alone |
| Country code | The prompt of Format phone number. Name your own country there |
| What the assistant says | Its first message and prompt in Vapi |
| Form fields | On form submission. Other nodes read the fields by their labels |
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.
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.
| Step | Model | What to know |
|---|---|---|
Lead summary Agent | gpt-4.1-mini-2025-04-14, through OpenAI Chat Model | Reads the first search result’s text and the whole page as Markdown, which can run long |
Simplify enquiry | gpt-4.1-mini-2025-04-14 | Swaps I and my for you, so the phrase reads right when the assistant says it |
Format phone number | gpt-4.1-mini-2025-04-14 | Told to answer with the number alone |
| The call | Your Vapi assistant | Its 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.
Every lead costs a call’s minutes, and the form decides who gets called.
Scrape website URL needs it, so the run stops there with no row and no call. Make the field requiredAn 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.
workflow.json: the workflow as n8n exports it, 11 nodes, one of them a sticky note. It holds no credential and noneREADME.md: these notes.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.
workflow.json./d/ and /edit.Append row in sheet and replace YOUR_SHEET_ID with the ID.OpenAI Chat Model, Simplify enquiry and Format phone number.Find Linkedin URL, replace <YOUR_TAVILY_API_KEY> in the Authorization header with your Tavily key. TheHTTP Request, do the same with your Vapi private API key. Then put your assistant's ID in place ofYOUR_ASSISTANT_ID and your Vapi phone number's ID in place of YOUR_PHONE_NUMBER_ID, both in the JSON body.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 tohttps://api.vapi.ai/call/phone. If Vapi answers the old address with an error, change the URL in HTTP Request.
| 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.
Lead summary Agent, which caps it at 100 words.query in the body of Find Linkedin URL. It searches the name alone, and adding the company'sFormat phone number. Name your home country there, so a local number gets its code.On form submission. Other nodes read them by label, so rename them there too.Scrape website URL needs it. A lead who leaves it empty stops the run atHTTP Request carries on after an error, so a refused call still ends the run as a success. Look at its output underREADME.md 6 KB workflow.json 12 KB
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…
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…
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…
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…
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…
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…