A Google Sheet is the simplest "CRM" most teams already have — a list of names and numbers. With n8n and a voice agent API, that sheet becomes an outbound calling campaign: read the contacts, place AI voice calls, and write the outcome back to the sheet automatically. No code.
Here's the ready n8n template and how to set it up.
What the template does
The Google Sheets Campaign template wires up this flow in n8n:
- Schedule trigger — runs the workflow on an interval (e.g. hourly during calling hours).
- Read contacts — pulls rows from your Google Sheet.
- Filter — selects only the rows that still need a call (e.g. status is blank).
- Batch — processes contacts in controlled batches so you don't dial everyone at once.
- Initiate call — calls the voice agent API for each contact.
- Update the sheet — writes the call result back to the row.
Before you start
You'll need:
- An n8n instance (cloud or self-hosted)
- A Google account connected to n8n
- A voice agent and an API key from your dashboard (Settings → API Keys, format
vp_live_...)
Setup
1. Add your API key as an n8n credential
In n8n: Settings → Credentials → Add Credential → Header Auth. Set the header name to Authorization and the value to Bearer vp_live_your_api_key.
2. Connect Google Sheets
Add your Google Sheets credential in n8n and point the Read node at your campaign spreadsheet and sheet (e.g. a Contacts tab with name, phone, and a status column).
3. Place the call
The call is a single HTTP Request to the platform API:
POST https://voice-agent.edesy.in/api/initiate-call
Authorization: Bearer vp_live_your_api_key
Content-Type: application/json
{
"phone_number": "+919876543210",
"agent_id": 123,
"variables": { "customer_name": "Asha", "order_id": "ORD-12345" }
}The variables are passed into your agent's prompt, so each call is personalized from the sheet row.
4. Write the result back
The final Google Sheets node updates the contact's row so the next run skips it — that's what makes the campaign idempotent.
Why this is useful
- No CRM required — your sheet is the source of truth.
- Personalized at scale — every call uses that row's variables.
- Self-managing — the status write-back means you can leave it running on a schedule.
For triggering calls from a real CRM instead, see auto-call new HubSpot leads with a voice agent, and the broader voice AI + CRM integration guide. For the underlying API and webhooks, see the voice AI API & webhooks guide.
Get the template
Grab an API key and the n8n template on the voice agent API page, or build the whole campaign on the Edesy voice AI platform.