← Back to Blog
AI Voice Agents9 min read·2,200 words

How to Build an AI Voice Receptionist Using Vapi and n8n (Step by Step)

A step-by-step guide to building an AI voice receptionist using Vapi and n8n — covering assistant setup, webhook integration, calendar booking, CRM logging, and notifications.

D

Digitallyfied

Founder-led studio · SaaS, AI & Automation

If you have been following AI voice agent tools for any length of time, you have probably heard of Vapi. It handles the hard part of building phone-based AI agents: the telephony layer, the speech-to-text, the real-time LLM calls, the text-to-speech, and the turn-taking logic that makes conversations feel natural.

What Vapi does not do on its own is the backend logic — what happens after the call ends. Who gets notified? Where does the call summary go? How does the appointment actually get booked into a calendar? That is where n8n comes in. Connecting Vapi to n8n gives you a production-ready AI voice receptionist built on Vapi and n8n that handles real workflows, not just phone conversations.

This is a practical walkthrough of how the full system is built.

What You Are Building

A voice AI receptionist that:

  • Answers inbound phone calls with a natural-sounding AI voice
  • Conducts a qualifying conversation — collects name, reason for calling, contact details
  • Books appointments into Google Calendar based on available slots
  • Sends a confirmation SMS or email to the caller after booking
  • Logs every call summary and contact details into a CRM or Google Sheets
  • Sends a Slack notification to the business owner when a new booking is made

The architecture: Vapi handles the phone call and conversation. Vapi calls your n8n webhook at key moments during and after the call. n8n executes the backend logic — calendar checks, booking, CRM updates, notifications.

Prerequisites

  • Vapi account with API access (vapi.ai)
  • n8n instance — either self-hosted or n8n Cloud
  • A phone number provisioned in Vapi
  • Google Calendar (or whichever calendar system you want to book into)
  • A CRM or Google Sheets for lead logging
  • Twilio, Vonage, or an SMS service for confirmation messages (optional)

Step 1 — Create the Vapi Assistant

In your Vapi dashboard, create a new assistant. The key configuration:

System prompt: This defines how the AI behaves on the call. Write it in plain language. Describe the business, the AI's name, what it should say when it answers, and what information it needs to collect. Keep the system prompt focused — detailed but not overwhelming.

Example system prompt structure:

  • You are [Name], the AI receptionist for [Business Name].
  • You answer calls professionally and helpfully.
  • Collect the caller's name, phone number, and reason for calling.
  • If they want to book an appointment, collect their preferred date and time.
  • Keep responses short and conversational — this is a phone call.

LLM: GPT-4o is the best choice for natural conversation quality. GPT-3.5 Turbo reduces cost but the conversation quality is noticeably lower on complex calls.

Voice: Choose a voice from ElevenLabs or PlayHT that fits the business tone. A dental clinic and a tech startup need different voices. Test several before deciding.

End call function: Configure Vapi to call your n8n webhook when the call ends. This is under the "Functions" or "Tools" section in the assistant configuration.

Step 2 — Set Up the n8n Webhook

In n8n, create a new workflow and add a Webhook node as the trigger. Set the method to POST. Copy the webhook URL — you will add this to your Vapi assistant configuration.

When a call ends, Vapi sends a POST request to this webhook containing:

  • The full call transcript
  • The call duration and phone numbers
  • Any structured data your assistant collected (name, booking details, etc.)
  • Call summary if you enabled it in the assistant settings

Add a Set node after the webhook to extract the specific fields you need from the payload. Map the caller name, phone number, appointment request details, and any other structured data your conversation was designed to collect.

Step 3 — Calendar Availability and Booking

The most valuable capability is actual appointment booking, not just logging intent. This requires two steps: checking availability and creating the event.

For Google Calendar, n8n has a built-in Google Calendar node. To check availability, use the Free/Busy query — pass the requested time slot and get back whether it is free. If free, create the event directly. If not, you have two options: the Vapi assistant can use tool calling during the conversation to check availability in real time (more complex), or you can send an alternative time suggestion via SMS or email after the call.

The simpler approach for most implementations: collect the preferred date and time on the call, check availability in n8n after the call ends, and send a confirmation or alternative via SMS within minutes. The caller gets a message quickly and the booking is confirmed without requiring real-time calendar access during the call.

The more advanced approach: configure Vapi tool calling so the AI can query an availability endpoint mid-conversation. The caller says "Wednesday at 2pm" and the AI checks and confirms or suggests an alternative in real time. This requires a separate API endpoint that n8n or a serverless function exposes, but produces a significantly better call experience.

Step 4 — CRM Logging

After the booking logic runs, add a CRM or spreadsheet node to log the contact. For a simple setup, Google Sheets works fine. For a real CRM, n8n has native nodes for HubSpot, Pipedrive, Salesforce, and others.

Fields to log at minimum: caller name, phone number, call date and time, reason for calling, appointment booked (yes/no), appointment details, and the call transcript or summary.

The transcript is valuable for quality review — you can check what the AI said, spot any conversation issues, and improve the system prompt over time. Store it.

Step 5 — Notifications

The last step in the workflow is notifying the business. Add a Slack node (or email, or SMS via Twilio) that fires when a new booking is made. The notification should include the caller name, phone number, appointment time, and a link to the CRM record.

Also configure the confirmation message to the caller: an SMS via Twilio with the appointment details, a reminder SMS the day before, and a cancellation link if they need to reschedule. This is all handled in n8n — Vapi's job ended when the call finished.

Testing the Full System

Test by calling your Vapi phone number and running through the conversation yourself. Check:

  • Does the AI answer and introduce itself correctly?
  • Does it collect all the required information naturally?
  • Does the n8n webhook receive the call data after the call ends?
  • Is the appointment being created in the calendar correctly?
  • Does the CRM record appear with the right data?
  • Does the Slack notification fire with the correct details?
  • Does the caller receive the confirmation SMS?

Run through 5 to 10 test calls with different scenarios — a simple booking, someone who wants information first, someone who calls but changes their mind, someone who is unclear about what they need. Each scenario may expose edge cases in the system prompt or workflow logic that need adjustment.

Common Issues and How to Fix Them

  • AI misses key information: The system prompt needs to be more explicit about what to collect and how to ask for it. Add specific instructions for situations where callers are vague.
  • n8n webhook receives empty or malformed data: Check the Vapi webhook configuration. Make sure the end-of-call webhook URL is set correctly and the assistant is configured to send structured data.
  • Calendar conflicts not handled: Add explicit conflict detection logic in n8n before creating the calendar event. If a conflict exists, trigger a different branch that sends an alternative time.
  • Calls ending too early: Adjust the end-of-turn detection settings in Vapi. Increase the silence threshold if the AI is cutting off callers who pause before finishing their sentence.

Frequently Asked Questions

Can I use Retell AI instead of Vapi for this?

Yes. Retell AI also supports end-of-call webhooks that you can point at n8n. The workflow in n8n is identical. The setup difference is in the Retell dashboard vs. Vapi's API/dashboard for configuring the assistant. Vapi has more community examples for n8n integrations, but Retell works the same way in principle.

Does this work for outbound calls too?

Yes. Vapi supports outbound calling via API. You can trigger an outbound call from n8n — for appointment reminders, lead follow-up, or any scenario where you want the AI to initiate the call. The same assistant and webhook architecture applies.

How much does running this system cost per month?

Costs depend on call volume. Vapi charges per minute of call time plus pass-through costs for the LLM and voice provider. For a business handling 100 calls per month averaging 3 minutes each, expect roughly $30 to $80 per month in Vapi costs depending on configuration. n8n Cloud adds around $20/month, or you can self-host for the cost of a small server.

Can I connect this to WhatsApp or SMS instead of phone?

n8n supports WhatsApp Business API and SMS via Twilio. The booking and CRM logic works identically. The conversational layer would use a chat-based AI agent rather than Vapi's voice system. The architecture is the same — different input channel, same backend workflow.

READY WHEN YOU ARE

Have a product, workflow, or integration you need shipped?

Send the rough idea. I will review the scope, flag risks, and suggest the simplest build path for your timeline and budget.

No pressure · Fixed quote · Clear next steps · Client-owned code