Automate Outbound VAPI Voice Calls from New Google Sheets Rows
This n8n automation connects your Google Sheets to **[Vapi](https://vapi.ai/?aff=onenode)**, enabling you to automatically **call new contacts** as soon as their information is added to your spreadsheet. Instantly reach out with a personalized voice call from a Vapi AI assistant, based on any event that adds a new row to your sheet. ## Requirements ### Google Sheets - **Google Sheets credentials** enabled and tested in n8n. - A table in your Google Sheet formatted as follows: #### Required Columns & Data Types | Column Name | Example Value | Data Type | Notes | |---------------|---------------|-----------|-------| | phone_number | +11234567890 | Text (String) | Must include the `+` and country code, no spaces or dashes. Mandatory for workflow. | | *(optional)* | first_name | John | Text (String) | For call personalization. | | *(optional)* | email | test@email.com | Text (String) | For follow-ups or records. | | *(additional)*| Any extra info | | | Can be used for advanced customization. | - Ensure all columns contain data in plain text format. - Phone number field **must never be empty** and follow the E.164 international format: `+` + country code + phone number. ---- ### Vapi - A [**Vapi**](https://vapi.ai/?aff=onenode) account with credit. - A connected **phone number** (to originate calls). - An **assistant** (AI voice agent) created and ready to make calls. - Your **Vapi API key**. ### 🔗 Useful Link - [Vapi Docs](https://docs.vapi.ai/) --- ## 📝 Comprehensive Setup Instructions ### 1. **Prepare Your Google Sheet** - Create a Google Sheet with the required column names as listed above. - Ensure your `phone_number` column is correctly formatted (international format, no spaces). - Optionally, add columns such as `first_name`, `email`, or any field your workflow should use. ### 2. **Set Up Google Sheets Credentials in n8n** - In n8n, go to Credentials and create Google Sheets credentials. - Authenticate with your Google account and test the connection. ### 3. **Configure the n8n Workflow** - Add a **Google Sheets Trigger** node: - Set trigger mode to New Row. - Select your Google Sheet and worksheet. - Add a **Wait** node: - Configure a wait time (e.g., 4 minutes) between trigger and next action. ### 4. **Map & Set Vapi Fields** - Add a **Set** node: - Create fields required by the Vapi API: - `phone_number_id`: Copy from your Vapi dashboard. - `assistant_id`: Use the ID of your AI assistant. - `api_key`: Store securely (see n8n secret management). - `to`: Set as the Google Sheets `phone_number` value. Example: `{{ $json["phone_number"] }}` - (Optional) Map extra fields from Sheet (e.g., `first_name`, `email`) for personalized calls. ### 5. **Add the HTTP Request to Vapi** - Add an **HTTP Request** node: - Method: `POST` - URL: `https://api.vapi.ai/call` - Body parameters: Use all mapped fields from the previous step. ### 6. **Test the Workflow** - Add a new row to your Google Sheet. - Verify that, after the wait period, Vapi attempts the call and uses personalized information. --- ## Customization Options - **Personalize Calls Further:** Add additional columns like `first_name`, `product`, or `appointment_time` in Google Sheets. Map these into the API call so Vapi can use them for dynamic greetings or contextual responses. - **Conditional Flows:** Insert n8n logic nodes (IF, Switch) before making the Vapi call. For example, only call if a Consent column is TRUE, or select different assistants based on region or product interest. - **Multiple Assistants/Numbers:** Store different assistant IDs or phone number IDs in columns, and dynamically route calls based on sheet data (e.g., region-specific assistants). - **Advanced Field Mapping:** Pass any relevant sheet fields into the API payload and configure your Vapi assistant scripts to utilize these variables for high-touch, customized user interactions. --- ## 📊 Example Google Sheet Setup | phone_number | first_name | email | product | consent | |--------------|------------|--------------|----------|---------| | +11234567890 | John | j@email.com | Widget A | TRUE | | +44207123456 | Maria | maria@x.co.uk | Widget B | FALSE | - In n8n, map only those rows where `consent`=TRUE. --- ## 📞📚 Need Help? Feel free to contact us at [**1 Node**](https://1node.ai). Get instant access to a library of [**free resources**](https://1node.ai/resources) we created.
- Platform
- n8n
- Category
- Communication
- Price
- $4.99
- Creator
- Aitor | 1Node
- set
- wait
- stickyNote
- httpRequest
- googleSheetsTrigger
How to import this workflow into n8n
- 1Purchase or download the workflow to get the n8n workflow JSON file.
- 2In your n8n instance, open Workflows and choose "Import from File" (or paste the JSON with Ctrl+V on the canvas).
- 3Open each node marked with a credential warning and connect your own accounts and API keys.
- 4Run the workflow once manually to verify the data flow, then toggle it to Active.
Related Communication workflows
- Automate Outbound Calls with Ultravox AI and Twilio$4.99
- Automate Intelligent Email Classification with AI in Gmail$4.99
- Generate AI videos and carousels with Blotato for Instagram and TikTok$9.99
- Automating WhatsApp Replies Using GoHighLevel with Redis and Anthropic$24.99
- Automate Gmail Email Labeling with AI for Enhanced Organization$14.99
- Automate Email Summarization and Logging with AI and Google Sheets$9.99
More from Aitor | 1Node
Need this deployed? We'll set it up for you.
Our automation experts deploy this workflow in your stack, connect your accounts, and verify it works — or build a custom solution from scratch.