Skip to main content
Two separate mechanisms make up the loop, and it is worth knowing which one is doing what:
  1. The lead webhook calls a person seconds after they submit your form. One person, one call, right away.
  2. A campaign watching a sheet calls whoever is on a contact list, and keeps re-reading that list as it grows.
The spreadsheet sits between them: the agent writes a row after every call, and a campaign can read a sheet as its contact list. Nothing connects the two automatically - you point the campaign at a sheet yourself, once.

What happens, in order

1

Someone submits your form

Your form posts to the agent’s webhook URL. The payload is read whatever shape it arrives in, the phone number is normalized, and a duplicate submission within 10 minutes is ignored. See Calling website form leads back.
2

The agent calls

Inside your calling hours the call goes out immediately; outside them the lead is held and called when the window opens. Everything the form sent is available to the agent as a variable.
3

The call is written to the spreadsheet

With Write every call to Google Sheets switched on, a row is appended after every call: date, time, phone, the details the agent collected, the summary, next steps, whether the goal was reached, the call outcome and a link to the recording.
4

A campaign works the list

Point a campaign at a spreadsheet and switch on Keep watching this sheet. It re-reads the sheet on your interval, queues the numbers it has not queued before, and calls them. See Campaigns.

Setting up the follow-up campaign

The campaign reads the first tab of the spreadsheet, columns A to Z, with the first row as headers. So do not point it at the agent’s own results sheet - put the people you want called into a spreadsheet of their own.
1

Make a spreadsheet for the follow-up list

In a new spreadsheet, pull in the rows worth calling again, for example:
Adjust the columns and the condition to your sheet. Keep the headers in the first row and the data on the first tab.
2

Let the Sheets connection open it

Signed in with Google: nothing to share - pick the spreadsheet with Choose spreadsheet in the next step. An older service account connection: share the spreadsheet with its service account e-mail, with at least read access.
3

Create the campaign

Campaigns → New campaign, source Google Sheet, choose or paste the spreadsheet, switch on Keep watching this sheet and pick an interval.

Which column holds the phone number

Any of them. The column is found by name (phone_number, Phone, Telefon, Mobile, Numer telefonu…) and, when the name is unusual, by the shape of its values. Numbers are normalized before dialling, so 600 123 456, +48 600-123-456 and 0048600123456 are the same person. Every other column is passed into the call as a variable under its own name - {{first_name}} in the prompt or the first message greets the person by name.

Who is called, and who is not

The webhook and the campaign do not know about each other. If you point a campaign at a sheet holding leads the agent already called, those people get a second call - from the campaign. That is fine when you meant it (a follow-up wave for everyone who did not answer), so filter the follow-up sheet down to the rows you actually want called.

When nothing happens