This post is for you if your end goal is to use CallFluent to do outbound calling to a list of leads with phone numbers available.

We will use Google Sheets (that will have our data/leads) and then send this data/leads to CallFluent for outbound calling using Zapier’s Zaps.

Imagine if you have a business leads list that you accumulated or simply bought from a reputable vendor; here is how to send that list to CallFluent step-by-step.

Prepare the list

Sign in to your Google Sheets and click on Blank spreadsheet to open up a new spreadsheet.

A new spreadsheet titled Untitled spreadsheet will open up.


You can name it as you like, but for demo purposes, let’s call it a Demo spreadsheet. At this point, you can, of course, populate the spreadsheet manually with the names and phone numbers of people/prospects you want to make outbound calls to using CallFluent.

ℹ️ It’s good to know that giving your spreadsheets the appropriate headers, like Name and Phone Numbers, at the top row is always a good practice. It keeps things organized and tidy. It will also come in handy when we work with Zapier later on.

⚠️ If you have been paying close attention to the spreadsheet in the screenshot (and, by implication, this article), you will notice that the numbers are missing +1 (US country code). 

It is crucial to have +1 (country code) before all the numbers, or else CallFluent won’t be able to make a call.

Fortunately, this one is easier to fix. You can either manually adjust the Google sheet or we can get some help from Zapier later on.

Once everything is set up, you will just have to insert more leads, just like in the screenshot above. As soon as a row is updated (rows are horizontal), Zapier will forward the new rows to CallFluent to make an outbound call to each of the leads in the new rows. This is sort of the helicopter’s view of how things are going to work with such automation.

You might say, “That sounds like a lot of work, and I didn’t sign up for that.” – manually filling up the spreadsheet with names and phone numbers and every time filling the spreadsheet up again when you get your hands on more leads and guess what, your argument would be absolutely right.

To make your life easier, conveniently forget the above and just create a new spreadsheet. This time, we will upload a list of leads to Google Sheets.

Go to File > Import.

Go to the label Upload.

Then, just drag and drop the leads list you have gathered from a lead source, such as a lead finder or business list providers, onto the white space.

I have uploaded a leads list titled Demo leads, which was available to me in a CSV format, but you can also drop your list in other formats.

Once the leads file is uploaded, you will see the following window. Just click on Import data.

Once you click on Import data, it will process it, and after a second, you may see the following window (or the leads file may open up automatically, once processed, in a new tab). Just click on Open now in blue text to proceed.

As you can see, this is a pretty extensive list with lots of data (just like the real-world leads lists you get from vendors or a lead finder of your choice).



You will also notice that this has only three rows of leads (the first horizontal row being just the headers’ names). Zapier actually checks for the last three rows when fetching the data from this sheet (from the last to the first one in the order) and then lets you decide from which row it should get triggered (or start).

You can also have just one row with a lead entry, and that is fine, too.

But the main thing to remember is that any more leads you add after Brian’s row (after the 4th row – the last row) will trigger (start) the Zapier, which will then send the newly updated rows to CallFluent one by one.

You can also notice that this particular list already has +1 in the phone numbers field, so unlike our plain-jain leads list, which we created manually at the start, there’s one less thing to worry about.

For now, we are done with Google Sheets, so you can take a break. Make sure it’s short because we now need to set up Zapier.

Setting up Zapier

Let’s head over to Zapier and log into it.

Inside Zapier, click on Create > Zaps on the top left side.

At the top, we will rename it from Untitled Zap to Demo Zap (near Draft) (this Demo Zap name will be replaced automatically after the suggested Zap is implemented, so you can rename it after, and so even Untitled Zap is fine). Inside the CoPilot Beta (which is their AI), just type in “Send data from a Google Sheet to a webhook” and then hit Send.

After hitting Send, it will work some magic, and an outline for a Zap will be suggested. Just click on Replace all steps to Zap.




Once you click on Replace all steps to Zap, it will work some more magic. After it is done, click on the Open step.


Note that I already authorized my Google account with Zapier, so if you don’t have one, once you click on the first item in the outline (Google Sheets), you can proceed to authorize your Google account and integrate it with Zapier easily.

Once you click on the Google Sheets (the first item in the Zap outline), you may see the following window.



Go to the first label, App & Event, and in the Event, choose New or Updated Spreadsheet Row Instant (this is a trigger of your Zap, meaning this Zap will get triggered (or start) when a new row is added or modified in a spreadsheet) and click on the Continue button.

You can change your account on the next page. Just click Continue to move on to the Trigger label.



Under Trigger, click on the box titled * Spreadsheet Required (this will let you choose the spreadsheet where our data or the leads list is). Zapier is basically asking here where is the damn sheet? And by choosing from the drop-down menu, we can give Zapier exactly that!



In * Worksheet Required, choose the sheet within the spreadsheet; in our case, it is Sheet1 so we will select it.



Leave the Trigger column as it is and click on Continue.

In the next label, Test, click on the Test trigger (this is to test whether Zapier can successfully pull up the data from the Google Sheet).



After clicking on the Test trigger, we can see that our test was successful, and Zapier was indeed able to pull Brian Kennedy’s information from the fourth row of our spreadsheet.



Without touching anything else, simply click on Continue with the selected record (just to reiterate, any entry after Brian’s 4th row will trigger the Zap next time and when the Zap is published)

Clicking on Continue with the selected record will lead us to the next item in the Zap outline, Webhooks by Zapier. On this window, under App & event, in  * Event Required, select POST and click on Continue.



Now, you will see this screen labeled Action.



The* URL Required field in the Zap in the screenshot above requires a webhook endpoint, the point where we will send data. To get it, go to CallFluent, click on the outbound agent you want to send data to, go to API & forms, copy the webhook endpoint, and paste it inside the * URL Required field inside Zapier.

It’s good to know that a webhook endpoint is like a magic mailbox that can receive letters; in other words, you can send letters (or data) to this mailbox. In this step, we are putting the address of CallFluent’s mailbox (webhook endpoint) right into Zapier so it knows where to send the letters (data).

Under Payload Type, choose json (this is critical, or the entire setup will not work).

Without getting all too technical, CallFluent’s magic mailbox hates FedEx (forms) for some reason unknown to us and rather has a bright yellow sticker pasted on its head that says Just Send Our Nonsense (json).



Now, under Data, we need to map out the data so Zapier can understand exactly which fields and their values to send to CallFluent to make the call. 

Mapping out data is such a vague term, so let’s try to make it simpler. You can see (in the screenshot below) one empty rectangular box under Data. Let’s call it box 1. There is one more rectangular box below it that says Enter text or insert data…; that is box 2…they both are interconnected like it is a pair. (see the screenshot below)

For box 1, we need to put in some name, and with that name, the data will be sent out (to a mailbox/webhook endpoint). The box 2 that says Enter text or insert data…you can technically just paste some text like Brian, but in our case, we want Zapier to take the data from a file automatically, and that’s why when you click on it, it loads our spreadsheet and asks exactly what to send (first name, last name, city, any other details).

Keep in mind that the name that goes into box 1 at the top of the pair must be the same as it is in CallFluent. (Remember, CallFluent hates FedEx already and has some rules on how the data should be sent to it, so follow the rules, or else Return to Sender by Elvis Presley!) (Just kidding, CallFluent won’t playback anything—we ain’t a radio station.)



Since we are only interested in the Name and Phone number, first click Data’s box 1, take the field name of the name, which is a name from CallFluent’s API & forms right under the webhook endpoint, and paste it exactly inside your Zap.

Now, we will click on box 2 that says Enter text or insert data…and choose the First name. (Zapier is basically asking us, OK, I will send the data with the label that is in box 1, but what exactly do I send from the spreadsheet? That’s exactly what you specify here.)

Again, remember that CallFluent expects you to send this particular data under the label name, which is why you can not use a random or made-up name like first_name inside box 1.



We still need the phone number, so we need another data pair. Click on the positive or plus sign that says Add another item.

Now, take the phone field name (the exact one as it appears inside) in CallFluent and paste it into the second data pair’s first empty rectangular box (box 1).

From the dropdown in box 2, choose the phone number that is labeled as a corporate phone in our leads file.



Before continuing any further, remember the very first spreadsheet that we made manually with entries Frank, Sam, and John and that didn’t have +1 (country code) before the numbers? If you are using that sheet, you can just add +1 outside the number block on the left side (as in the screenshot below), and Zapier will basically append (add) +1 to every number automatically.




Now, let’s continue where we left off. Leave the rest of the fields as they are and click on Continue.



Under the Test, just check (to verify) if you are using JSON and if your name and phone number are there. You can either Skip the test or proceed to the Test step (which will make a live call to Brian – who might very well be sleeping).

In the step above, I clicked on Skip test. If I click on Publish instead (as shown below), my Zap will go live.

Now, all you have to do is paste the new leads into your spreadsheet. Any new entry you add after Brian will trigger the Zap, sending data to CallFluent one by one and thus making the calls.

That was simple, wasn’t it?

Testing CallFluent AI in a playground

Like the impulse you get after you are given a brand-new shiny set of tools to go around looking for loose nuts to tighten up, you might be tempted to use CallFluent just now to call up good ol’ folks like Brian, waking him up in the middle of the night and doing your crazy testing on him with your AI agent, which might not be 100% perfect yet and end up talking some gibberish to him.

It’s always a good idea to tinker around in a playground. Instead of using CallFluent’s webhook endpoint and actually making live calls, you can use another testing webhook endpoint—all in a test environment—just to get comfortable with Zapier and using webhook endpoints.

Remember that a webhook endpoint is like a magic mailbox that can receive letters; in other words, you can send letters (or data) to this mailbox.

Go to Webhook.site, here Your unique URL is just a webhook endpoint (magic mailbox!), just like in CallFluent. So we can use this webhook endpoint to check if our Zap is correctly sending data. You can also notice on the left side where it says Waiting for the first request (data, in other words!)



So let’s go back to Zapier, and inside the second item in our Zap outline, inside Actions, use the Webhook.site’s webhook endpoint as a URL instead of CallFluent’s.



Now, click on Continue, and on the next screen, we will test it by clicking on the Test step.

You will get a message: A request was sent to Webhooks by Zapier about 0 seconds ago.




Head back to the Webhook.site, and now, where it was previously Waiting for a response, it has some sort of a POST response, and viola, you can see we got the name and phone number right.



To test things further, let’s add some new entries to our spreadsheet. I will add 5 new entries to the spreadsheet simply by copying and pasting.



Now, I will publish my Zap so it may run (remember, it was still in draft).



Once our Zap is published, it will start working. However, it may take 1-2 minutes before it starts sending data to the Webhook.site’s webhook endpoint.

Since we added 5 entries, you can see that we got 5 new responses after a minute (in the screenshot below).



Let’s check responses one by one (by clicking on blue-colored POST boxes), and here is where it gets interesting. The Meredith entry is missing a phone, so what happened?



Well, nothing (bad happened) because if you look up the 5 new entries (and again if you have been paying some attention), you will notice that Meredith’s entry is missing a phone number in Google Sheet, and this is why it wasn’t passed on to.

If we were sending these entries to CallFluent, CallFluent would also skip Meredith’s entry because it doesn’t have a phone number.

That said, once you are done with testing and you need a new webhook endpoint, just click on + New in Webhook.site, then click on Create to set up a new webhook endpoint. 

Now, go ahead and play with it. It will help you understand everything we discussed above.

Advanced personalized prospecting

One of the features that makes CallFluent extremely powerful is that you are not limited to names and phone numbers alone. Instead, you can send your agent information that goes far beyond just those.

You will pass this information to your outbound agent before they call, which is what makes outbound prospecting with CallFluent powerful, flexible, and highly personalized.

This is achieved by custom fields (located inside API & forms in CallFluent) under the label Optional fields.

With this option, you can create all sorts of custom fields and pass on to your agents a greater amount of information they can leverage during the call with a potential prospect.

Think of passing knowledge to your agents using custom fields as if some sort of hose is up your agent’s – come on, what are you thinking – ears! 

It’s like you are whispering things into your agent’s ears before it makes the calls.

If you check the Demo leads spreadsheet again, you will notice that it contains a lot of useful information that we can pass on to the CallFluent agent before the agent makes the call to these people/decision-makers. In the leads list, you can see the number of employees as well as the city where the lead/business is located.

Let’s pass Employees and City to our agent.

Go to API & forms and (under the label Optional fields) click on Add Custom Field.



This will pop up a window to let you add a custom field.

In the field name, put in employees. Basically, you are creating a rule for CallFluent that whenever this particular data comes in, it has to have a label of employees or else it will not accept the data.

The field description is highly important here. It will tell the agent what employees stand for and their purpose (if the agent were a human being, he would have asked what employees mean, not because he doesn’t know what it means, but because he doesn’t know what to do with it). So you want to tell the AI that this is the number of employees the caller’s company has.



(On a microscopic level, computers are the dumbest creatures on earth. If you are programming something and you ask the computer to move a cursor, your computer will actually yell in the form of different errors: Move? Where? Right? Left? Up? Down? How many steps? Where do I stop? This is why it is important to give CallFluent’s AI some context to what employees stand for.)

Let’s also add the city.

At this point, it’s critical that you also modify the behavior of your agent by tinkering with the instructions inside the behavior.

For instance, in the case of a city, there should be an instruction that tells the agent that after greetings, they should always ask how the weather is in the [city].

Or, in the case of employees, the agent must be instructed to say a casual one-liner. For example, since your company has this many [employees], your company could significantly benefit from our AI solutions to streamline communications and boost productivity. Can I share how we can help

You get the idea.

To use these new custom fields, return to Zapier, open the Zap, and click on View it in Editor.

On the next page, click on the relatively small purple-colored button Edit Zap at the top right corner.



Select the Webhooks by Zapier in the outline, go to Action, and click on the + sign to add another item (for the new custom fields we made in CallFluent).

We will make one for employees and map it out correctly as per our sheet.

Then, add another data field pair for the city.



Then click on Continue.

Immediately after clicking on Continue, our Zap pulled the right information in the Data In.

Now, click on the Restest step (while keeping in mind that we are using Webhook.site’s magic mailbox (the webhook endpoint).

The webhook.site confirms that Zap indeed sent the data  – exactly what we wanted.

Now, replacing just the webhook endpoint URL inside Actions in Zap will make this particular Zap send all the data to CallFluent, equipping our agent with the knowledge to make highly personalized and knowledgeable calls to prospects.

The sky is the limit here, folks.

Just think of what kind of data you can send your agent to (and how you can leverage it by modifying your agent’s behavior).

Imagine you run a reputation management agency, and you have some leads with Google ratings below 3; you can actually instruct your agents to say something along the lines of, Hi, I just checked your Google ratings, which is just [ratings], and some reputation management can definitely help you out.

Imagine setting up CallFluent for a florist with a custom field favorite that asks every caller about their favorite flower. Equipped with this knowledge, the agent can inform callers about some great deals on roses, jasmine, and so on in the future.

Or imagine you have an auto repair shop (and you are a partner with a tire company), and you have the records of every car that comes in your garage; you could train your agent to leverage the custom fields and make a call after a week of a car owner’s visit that the last time they visited us, you had this much [mileage], it’s time to replace your tires and we have some great deals going on. Now is the perfect time to replace those worn-out tires before they blow out.

Can you see the potential?

The sky is actually the limit – when it comes to CallFluent.

CRITICAL NOTE: An inbound agent doesn’t have a webhook endpoint inside API & forms. People will call this agent, so there is no need for it. Besides, your inbound agent isn’t a magician who can know who will call and where the caller will call from in advance. In the case of an outbound agent, however, we can do with some pep talk (whispering), and that’s why it comes with a webhook endpoint.

Turning the heat up by a notch

The good news is that it’s still just the tip of the iceberg—it’s sort of just a trailer of what you can potentially do with CallFluent.

There is so much to it.

Before we dive into some advanced things, it’s good to reiterate that CallFluent’s webhook (located inside API & forms) can be used to whisper things into the agent’s ear before it makes a call.

While Actions give you the tools that can help your agent PERFORM certain tasks during the calls.

This difference is worth keeping in mind—so repeat after me if you will—actions to make your agent do something during the call and a webhook endpoint to send it some data or context.

That said, one of the most powerful tools inside Action is the Data Collection.

In the example of a florist I gave above, you will use Data Collection along with the custom field “favorite” (ignore the commas; that’s just to put emphasis) to determine your customers’ favorite flowers.

In the example of an auto repair shop (that is in partnership with a tire company), when making outbound calls, you will encounter some prospects who are simply not interested.

So, how can you filter those leads? You will use Data Collection (again) while using a custom field like “interest” and then modify the behavior of your agent via instructions so it actually asks the callers if they would be interested.

If they are not, the agent will gather this information – which – you can also pass to another webhook endpoint (maybe that of your CRM, GoHighLevels, etc.) or even back to Zapier (and to some Google spreadsheet) – simply by stacking up actions. (using one action after another).

In the screenshot below, you can see that I am first doing data collection.

I can then send this data via Zapier to another program or update a Google spreadsheet with all the customers who are not interested so I can suppress them (and not call them again).



One critical thing to remember is that once you create custom fields inside APIs and forms, all your custom fields will be available to you not only in APIs and forms but also in actions. It is up to you to decide which ones to use to whisper things into your agent and which ones to use for data collection or any other action.

Essentially, we are doing something like this.



And that, my friends, brings me to the last point—have a plan in your head, identify your end goal, and then CallFluent has all the tools necessary to make that happen.

There is really a lot of what you can do with it.

That said, I hope you now know CallFluent’s true capabilities (or, at the very least, its outbound capabilities).

By the way, are you also thinking what I am thinking?

“I didn’t know I could also do that with CallFluent!”

Exactly!