Build a Chatbot Survey: Reinvent Feedback Collection


Are your attempts to collect customer feedback a bit of a sore spot? Well… a survey chatbot might just be the remedy you are looking for.

There’s no need to emphasize that customer experiences and opinions of your company or product are important. If you are running a business, measuring customer satisfaction is your second nature.

The issue is, people rarely care that you need their opinions.

They are busy!

How dare you sully their inbox and disturb their day with an annoying survey? 🤨☝️

Your humble requests for a few answers often go unopened or end up floating in the wasteland that is the JUNK folder.

Yet, we have to do it. We need to ask.

Otherwise, it’s impossible to improve.

Hence, you are here, looking for a better way to collect feelings, thoughts, and impressions and turn them into actionable data – a much better way than online surveys & questionnaires.

Fortunately, there is a better way: survey bots.

Not to undermine the king of rock n’ roll, but sometimes a little MORE conversation is the way towards “satisfactioning” you🕺🏻. Something as simple as twisting the concept into conversational surveys can make a significant difference.

Start reading or jump directly to the section that interests you:


What is a Survey Chatbot?

A Chatbot survey or “conversational survey” is traditional survey presented to the audience in the form of conversation. Instead of answering static questions, the surveyees are invited to engage in a conversational exchange with a bot persona.

Why Use Survey Bots: The Unspoken Truth

There are several reasons why you should abandon feedback forms and go for a bot instead. Let’s have a look.

Chatbots free you from the inbox 🚀

Typical customer feedback survey email typically asks users to navigate away from their inboxes and complete a generic, multiple-choice questionnaire.

On the other hand, bots can connect with users and ask for feedback directly on your website, Facebook Messenger or even WhatsApp. This way, you can make your surveys part of the browsing/social experience.

Chatbots make giving feedback more fun 🙋‍♂️

Customer feedback bots transform the survey experience. What was once an act of filling out a boring form is now a conversation. A conversation you load with your brand personality. And users appreciate this shift!

Leaving feedback through conversation makes it all the more enjoyable which increases the chances that your customers will take the time to provide you with the information you need. Caring about a pleasant experience not just before but also DURING a survey is an extra mile down the differentiation lane.

Chatbots are the champions of survey response rates 🏆

Multiple marketing research studies confirm that chatbot surveys (whether presented as part of a popular platform such as Facebook messenger or exist on your website) can, in some cases, double or even triple conversions.

For instance, CONVRG company noticed a 70-80% response rate on their chatbot surveys which was 3x higher than with their usual email surveys.

Chatbots let you react in real-time 🤹‍♀️

Bots let you take your customers down different conversation threads based on their answers. Hence, you have a chance to react to particular problems there and then.

For instance, if a customer complains about a problem you are aware of, you can have the bot offer them a discount voucher in the middle of the survey.

Chatbots let you analyze conversation flow 📊

This is perhaps one of the most unique attributes of using a bot to collect customer feedback!

With a traditional survey, you can see how many people accessed the form and how many people submitted it. However, you have no idea what happened to those who didn’t make it all the way to the end.

Bot analytics are more thorough and let you follow customer behavior throughout the questionnaire. You have the opportunity to identify points of friction and improve your conversion flow.

How to Build a Survey Bot Without Coding

If you’re new to chatbot surveys, building one yourself may seem like an overwhelming task.

But, honestly, it’s easier than you ever imagined.

To prove my point, I put together a simple guide to creating a chatbot survey from scratch BUT without coding! Naturally, I am using the Landbot builder for this demonstration, so, if you want to build along the tutorial be sure to sign up – it’s free!
See what we are about to create:

1. Choose a Channel & Access the Builder

Click “Build a Chatbot”. You will be offered three options to choose your channel: Website, Messenger/Whatsapp, or API integration.

We are going to create a survey for the website but you can very easily create one for WhatsApp and Messenger as well.

Note: In case you choose WhatsApp as your chatbot surrey channel, keep in mind the app does not offer rich interface features such as buttons or carousels that are available for web and messenger. Yet, it’s still possible if you follow these WhatsApp dialog design tips.

Once you select the channel, you will be redirected to Landbot’s template database. You can find a couple of survey and feedback templates. The templates provide you with a basic survey framework that is easily customizable. It’s perfect in case you are in a rush and need the bot up and running very fast.

However, we’ll start from scratch to introduce you all the functionalities

2. Customize Your Welcome Message

A chatbot usually kicks off with a welcome message to initiate the interaction. Hence, when you access the builder, customizing it should be your first step.

It will be the first message your customers see!

You can keep it simple with just a text-focused intro or introduce an image or a gif to make things more interesting.

3. Hyper-Personalize the Experience with Hidden Fields

One of the key benefits of survey bots is their ability to hyper-personalize the experience instantly and for everyone by using their name.

Now, if you are creating a Messenger or WhatsApp chatbot survey, you’ll be able to simply use the variable @name to pull up the information as this data is associated with the customer user profile on these messaging apps.

However, you can achieve the same effect, when sending your web-based survey bot via email using hidden fields.

Hidden fields enable your chatbot to communicate with the Mailchimp’s (or a similar service’s) database. So, when your customer clicks on a “Give Feedback” button inside the email, it lands on a chatbot survey landing page where the bot already knows their name or other data such as location, content preferences, etc.

So, what exactly are hidden fields?

Hidden fields allow you to store user data in a URL.

So, when your customer clicks on the button in your feedback request email the bot pulls the data you have about this user from your email database (Mailchimp, SendinBlue, etc.) and uses it to personalize the conversation.

With Landbot, the process of setting up this connection is very simple. Just go to the Settings option on the top-bar menu and define the hidden fields (variables) you want the survey chatbot to know.


In the example, we are adding @name and @email to our URL but you can add as many variables/data as you find useful in personalizing the experience such as product preference, location, gender, etc.

Next, go to the “Share” section and copy the auto-generated URL and paste it to the BUTTON in the email campaign you designed on Mailchimp or another email service.

Now is the time to customize that URL with variables (hidden fields).

However, each platform has its own way to categorize and store data.

At Landbot, we use @format and call them variables while Mailchimp calls them “merge tags” and uses a format with capital letters: *|SAMEPLEFORMAT|*. (If you are using a different email provider, check their support docs.)

  1. Add a ? to customize your URL
  2. Enter Landbot variable name (without the @ sign) and indicate its Mailchimp counterpart by using equal sign followed by the designated merge tag.
  3. To add another variable/merge tag use & sign

In practice, the extended URL would look like this:*|FNAME|*&email=*|EMAIL|*

The result will be that the first thing your bot will be able to say is “Hi @name!” instead of the generic “Hey there!”
Check out this short video tutorial that explains it step by step. (The tutorial focuses on an email webinar sign up but the process of the hidden fields is the same and you can easily use it for your survey bot)

4. Build Your “Questionnaire”

Landbot builder offers a variety of question formats to work with and so create a functional bot (quite often) in a matter of minutes.

To build the flow just drag the green arrow from your welcome message and pick the question block you want to follow.

As said, there are several different question formats to choose from:

landbot builder question types

The most interesting ones for the purpose of a chatbot survey are blocks such as:

  • Scale
  • Rating
  • Buttons
  • Picture Choice
  • Text (Open Answer)

A. Rating

Let’s take a closer look at the “Rating” block.

When selected, it enables you to customize the question as well as the rating options which the user can see in the forms of stars or emoji.

Note: Ensure you create an easily recognizable variable- like @desing_site in the example – for each of the questions to store user answers – it will help you keep the data export organized and simple.

This is how the block looks from the users’ perspective:

Another great advantage is that each rating can be followed by a customized response when necessary.


However, if you want to keep it simple and provide the same survey for all, just draw the arrow from the purple “DEFAULT” button for all answers to be sent via the same flow.

B. Scale

Scale conversation block, enables customers to rate product or experience on a scale you yourself can define. It can be 1 to 10 or 1 to 5… whatever works for you. Plus, to make the user experience easier, you can also select the text that appears on each end of the scale:


The frontend experience will look something like this (although the design will be completely up to you):


C. Buttons

Buttons block is one of the most used blocks in the Landbot toolbox.

Quite simply, using this block you can provide your customer with a variety of button choices with the text of your choice.


Which translates to the following experience in the front-end:


Once again, each button response can lead down a different path or they can all lead to the same question. The level of optimization is up to you.

D. Picture Choice

Picture Choice block can bring a little more life into the survey-driven conversation.

While most questions and answers don’t need any additional graphics, from time to time it might come in handy. For instance, you might need user opinions on product or web design. In other words, some things are easier to show than explain.

Similarly to the Buttons block, you define a set of buttons. However, this time, you associate each button with an image:


The user will see these options in the form of a picture carousel:


E. Text Block (Open-ended questions)

Multiple-choice questions make for an effective start to any survey. However, they shouldn’t make up all of the questions.

While they are easier to analyze, multiple-choice questions limit your customers to a pre-written set of responses. Hence, there’s bound to be a certain margin of error.

That’s where open-ended questions become extremely important.

In the Landbot builder, use the “Text” block for any open-ended question you might have.

It’s extremely simple to set up.

Just type in the questions, choose if you want the answer field to appear bigger or smaller (to encourage shorter/longer answers) and create a variable under which you’ll store that answer:


These questions allow your customers to voice their opinions without limitations and provide the kinds of feedback you may not have even considered.

That’s essential if you’re looking to use your survey data to make the kinds of improvements your customers really want.

5. Export Collected Data

If reviewing the answers in Landbot analytics is not enough and you want to have an external document/database capturing all the survey answers, it’s not a problem.

There are quite a few ways you can go about exporting the collected data from Landbot by using one of the available integrations or your own webhooks.

Though, the easiest and most frequently used is via Landbot’s Google Sheets integration.

First, create a designated spreadsheet and name the columns to store the data:


Next, go back to the builder and select the “Google Spreadsheets” block from the block menu.

To set it up:

Yellow section:

  • Add your Google Drive account where the sheet is stored
  • Landbot will get access to your spreadsheets, so simply select the one you want to integrate from the list.
  • Choose the sheet of the spreadsheet where you want to export the information

Green section:

  • Select the type of action you want to perform from the drop-down list which gives you an option to insert new data, update existing data, or retrieve data. In terms of the survey choose “Insert a new row”

Pink section:

  • Associate column names with variables you want to store there (that’s why it was important to create a unique variable to store each answer)


And done.

Now, every time someone finishes filling out your survey, the information will appear on the sheet.

If you want to update the spreadsheet after every answer to ensure you collect data even if the customer doesn’t last till the end, just place the integration after every question block and configure it to save the answer just preceding it.

Tip: If you want to keep close tabs on the survey you can also arrange to send a Slack or email notification to your team every time someone fills out the survey!


6. Keep An Eye on Your Chatbot’s Metrics

Much like other digital marketing tools, many chatbot platforms now offer their users analytics dashboards for monitoring customer actions and responses.

Within the context of a survey, of course, the most important data you’ll collect is your customer responses. But beyond that, chatbot metrics can help you determine how effective your bot is in collecting that information.

After all, your survey chatbot is the most useful if it gets your visitors to make it all the way to the end and fully answer your questions.

And you can determine whether this is the case in the Metrics tab of the Landbot app. You can not only see how many people engaged with your survey but also examine flow analytics to find out at which point (if any) do people drop out.

This will give you a sense of how effective your bot is in collecting the information you need. Then, you can use this insight to adjust your questions and workflow to maximize the number of users who complete your survey — along with the value you get from your chatbot.

212 responses who interacted with the survey above, 177 answered all questions which resulted in an incredible 84% response rate.

7. Bonus: Survey Bot with Smart Rating & Airtable Integration

Just because Landbot is easy to use it doesn’t mean you can only achieve simple things. The variety of no-code features allows for a variety of sophisticated and smart solutions.

To give you an example, I will show you how to set up an Airtable webhook and a conversation flow that adjusts the flow to customer responses in real-time. Check the video for the sneak-peak into the final result:

So, in this survey, we asked our customers which Landbot features they use in their bot building and then rate those features.

I. Set Up Airtable


II. Define Your Questions

In essence, this survey will only contain 4 questions:

  • “Which features have you used to build your bots?” – Buttons (Multiple Choice)
  • “How would you rate the “feature”?” – Scale (1-5)
  • “Would you recommend Landbot to a friend or colleague?” – Scale (1-5)
  • “Please share your feedback about any of the mentioned features:” – Text Block (Free Input)

When setting up your Buttons block, ensure you enable “Multiple Choice” and establish a variable to save the answer.

In fact, make sure each of your questions has a designated variable to save the user’s answer.


The variables we created are:

@features – to represent selected features in the multiple-choice
@feature_rating – to represent user rating of the selected features
@nps – to present the probability of the client recommending our products
@feedback – to represent the free input question

Now we need to ensure that:

  • The bot asks for the rating of the user-selected features before continuing to the next question
  • The collected data updates in Airtable

III. Airtable Webhook Integration

To create the Airtable webhook, draw an arrow from the multiple-choice question block and select “Webhooks” option from the features menu:


You must get the App ID in Airtable to build the Webhook’s URL.

The structure of it should look like the following:<app_id>/<nameofthebase>

To obtain this URL, go to Airtable, click Help in the upper right corner and then select API Documentation.


A new page will load. Select “AUTHENTICATION” and copy the URL under “EXAMPLE USING BEARER TOKEN (RECOMMENDED)”


In our case that would be:

  • <app_id> equals appwz4ws9b6VDg2sp
  • <nameofthebase> equals Survey%20Data (as based on the name of the Airtable sheet we created)


This is how it will look in the Webhook block:


Note: Keep the Webhook action on POST in this setup as at this stage we will be sending the user answer to the Airtable.

Next, active the “Customize Headers” section:


For the webhook to work, you need to obtain an authorization in the form of the API key.

If this is the first time you are setting up an Airtable webhook with your account you will need to generate your API key first:

  • Click “account” in the Authentication documentation


  • When a new page with your account information opens, click to generate the API Key


Now, if you reload your API Documentation page you will see a “Show API Key” box in the upper right corner:


Tick the box and the API key will appear in the place of YOUR_API_KEY”

Please copy the Key for from “Bearer” until the end of the text.

In the Webhook block, type “Authorization” in the first field of the header and paste the key in the second section:


Click the + sign to create another header field and fill it in as follows:


This header field lets Airtable know in which format it will receive the data (application/json).

Next, move on to optimize the “Body” section of the webhook.

At this point in our survey example, we want to create a record with one value.

For the field “Customer ID” we want to send the variable @id.

This is how this information will look in JSON:



Now it’s time to check if our setup has been correct using the test section.

To do so we need to build a “body” and give a test value to the variable @id.


Above, you can see I am testing the webhook by giving the @id variable value “12345”


When all is set up, press the TEST button.


In our case, the test status is 200 and according to the test response, it seems a new record was created successfully. To be sure just check your Airtable sheet.

The test should have created a new row with the test customer ID:


Now that the test was successful move on to the last section of the webhook – Save Response.

This section will capture the values from the response for later use.

POST action in webhook, let’s us create a new row (record) in Airtable. When it’s done, it automatically generates an Aritable ID, this will be the number we will use as a reference to update these rows later.

So, in the “Seve Response” section we will save the under a new variable @airtable_id:


The final set up will look as follows:


Next, continue to create another response. This time select “records” and associate it with a new variable in an array format.

An “array” is a programming term but don’t let that put you off. It describes a data structure, which stores “a collection of elements of the same data type”.

Simply put, it’s a collection of variables of the same type, much like the collection of feature choices our customers will select in the multiple-choice block.


Note: “Records” must be in the array format in order for the bot to work (Visit our knowledge base for more information).

Once both your responses are set up, click SAVE to guard the configuration of your webhook:


You did it!

IV. Process Selected Features

Now, that we have created a record of a new customer on our Airtable sheet, we need to process their feature selection.

Given the question is a multiple-choice, the user can select all, some or just one of the options.

We want to ensure that the bot asks them to rate only those features they said they had used previously.

For that, we need to use the Landbot feature called “Formulas”.

Formulas in Landbot are much like formulas in an Excel spreadsheet or Google sheets, they allow you to make simple or advanced calculations with the bot without coding.

Draw an arrow from your Webhook block and select Formulas block from the Menu.

The Formulas block has two main sections:

  • Output – the variable under which you want to save the result of the formula
  • Formula – the part where you define the action/calculation to be carried out


So what do we need to do first?

When a user picks several different options the @feature variable value includes commas. E.g., Google Sheets, Webhook, Jump to, Code Block

Hence, our first point of order will be using the commas as separator indicators and use them to help us separate the individual features under @features variable using formulas.

To achieve this we will use:

  • an output variable in the form of an array
  • the “Split” formula which you can retrieve from a cheatsheet in the bottom section of the Formulas settings bar:


First, create a new variable so save this operation in an array format:


Next, configure the formula.

Example in the cheat sheet shows the following setup with a specific data point (the date)

  • Split(“2019/02/24”, “/”)

In the example, the “/” is the separator indicator and the elements to be separated are the number.

We want to split whatever is stored under the @features variable and our separation indicator is a comma. Hence, our formula will look like this:

Split(@features,", ")


Click save and let’s move on.

Now that the features are separated and stored in an array, we need to count how many the customer actually chose.

So we will use the Array Length formula (vid cheat-sheet) to count the number of elements in the previous formula output.


The setup will look as follows:

lenght-formula-setup-survey bot

Make sure you choose the right variable format (NUMBER) for the @number_of_features variable.

Now that we have separated and established a way to determine the number of selected features, we need to create a counter that will calculate if the bot asks the rating about all the features the user picked.

For instance, if the user selects two features the bot will know to ask for the rating two times and then continue to the next question.

V. Set up Index to Enable Counter Function

The first step to take is setting up a new variable that will act as a base value.

Draw an arrow from your last formula and select the “Set a Variable” block. Here, create a new numeric variable called @index and set its value at 0.


Click SAVE and create another Formulas block.

This Formula will tell the bot which of the features under @features_array variable it should ask about.

In an array, each of the features selected by the user has its position, e.g., Google Spreadsheets = 1, etc.

We will use the Array GetValue formula and @index variable to “retrieve” the right feature from the array and ask about it.

GetValue(@features_array, @index)

Set up your block as follows:


In essence, this formula will retrieve the feature from the array (collection of features) based on the value of the @index.

The starting value of @index is 0 but it will update each time the bot passes through the feature rating question.

VI. Export Rating Data to Airtable

Connect your sequence to the Feature rating question “Scale” block we set up at the start.

Here, instead of including a specific feature in the question, use our last formula output variable @feature_to_ask.

And create a variable to save the user’s response.

question-scale-customer feedback

After the customer submits their rating, you need to get this data to the Airtable sheet.

But before you send them there through the webhook, we need to transfer the format from array to JSON (once again using a formula).

Remember, when we were setting up the webhook, we defined that our data will be sent in “application/JSON” – well, that’s why we need to get this done.

Luckily there is a dedicated formula that takes care of putting data into JSON format – human-readable text to store and transmit data objects.

So, the data we want to send into the Airtable spreadsheet is the feature for which the bot requested rating and the rating itself. This translates into two variables:

  • @feature_to_ask

Draw a green arrow from the rating block and create a Formulas block and check the cheat sheet for the formula:


Our formula, since we are using variables and not hard data, will look as follows:


It basically pairs the feature with the selected rating.


Before moving on, set up the output variable in the array format. I decided to call it @fields since this information will be updating the Airtable fields.

Now it’s time for another Airtable webhook. But don’t worry, you don’t have to go through the whole thing again. Just create a copy of the webhook you already set up and let’s make some adjustments to it.


The first adjustment to make is changing the webhook action from POST to PATCH.

It’s because this time we will not be POSTING new information to create a new row but PATCHING information into an existing row.


Next, you need to update the webhook URL with the @airtable_id variable so the webhook knows which row to update. Simply add your variable to the existing webhook URL:

Since this time we are updating the fields, not the customer ID, scroll down and update your “Request Body” to:



To run a test, you need an actual Airtable ID.

There is a simple trick to obtaining it. Go back to your first Airtable webhook, delete the existing flow for a moment and link the webhook to a message block with @airtable_id variable


Go to preview and follow the bot flow. When the bot gets to the webhook, it will give you back the ID you need test your PATCH webhook:


Now if you check your Airtable, these will be a new row but the ID will have transformed into a numerical form – hence the reason you can’t just copy the ID from Airtable directly:


So copy the ID from the chat and let’s go!

ATTENTION: Do not forget to delete the message block and connect the webhook back to the original flow!

Go back to your second webhook and enter the ID – recNFd5JXPpaObZwW – into the sequence to test variable values:

"Google Spreadsheets":"66"

Click TEST!

We can see that our set up was successful as we got 200 status and the customer record has been updated:


Once again, if you check the spreadsheet, you will see the row updated with the correct information.


Now all is left is setting up the “Save Response” section. This time, quite simply, reuse the @response variable in an array format.

VII. Enable Counter

Drawing an arrow from your newly setup PATCH webhook, create a “Set a Variable” block. We are going to modify our @index variable by performing a calculation.


So, @index will start with a 0 value, but every time it passes through the feature rating block its value will increase by 1.

This will allow us to match the number of times the bot asks the user to rate a feature with the number of features the user selected.

Hence, now that we have a counter in place, we need a conditional block!

Our condition will be:

IF @index IS LESS THAN @number_of_features THEN

set-up-conditional-logic-blockNow if it’s TRUE and @index really is LESS then @number_of_features the user selected, draw an arrow from the green output, and connect it with the “GetValue” formula that precedes the rating question.

This time, since the value of @index has changed, the formula will retrieve the feature from the array that corresponds to the index number.

For instance, imagine a feature array with these selections:

[‘Google Spreadsheets’, ‘ Jump to’, ‘ Dynamic Data’, ‘ Code Block’, ‘ Custom CSS’]

After having the “length” variable to count the number of features, each of them corresponds to a number:

Google Spreadsheets – 0
Jump to – 1
Dynamic Data – 2
Code Block – 3
Custom CSS – 4

The GetValue formula tells us which of the values to retrieve as with each passing loop the value of @index increases… until it reaches the number when @index WILL NOT BE LESS THAN @number_of_features.

Then the bot will follow the PINK output to the next question:


VIII. Set up the rest of the questions

Now the hardest part is behind you… All you need to do is repeat this for every following question:

  • Use to ToJSON formula to convert the data into the right format
  • Copy the Airtable “PATCH” webhook to upload the data (no changes necessary)

For instance, for the question about recommending Landbot to a friend our set up would look like this:


The Formula set up will be the same and the output variable will be once again @fields. So, all you need to do is update the data inside the JSON to the variable you used to save the user’s answer.

As for the “Airtable” PATCH webhook, just copy the last one you set up and connect it to the flow. Still, always TEST the webhook to ensure everything is working correctly

The last of our four question blocks was a simple TEXT block asking for free user input. Since the answer is just plain text, you don’t need to use the “ToJSON” formula to format it and just go ahead straight to the webhook.

However! Make sure to update the “REQUEST BODY” of your copy of the PATCH webhook. We saved our free answer under @feedback instead of @fields.

airtable-webhook-adviceAnd there you have it!

A clever chatbot survey:

customer feedback survey-chatbot

Yes, the process is a bit longer and more complex but once you get a hang of it, it really isn’t much harder than setting up the simple flow.

IX. Troubleshooting

Setting up a number of format-sensitive fields does increase the margin for error.

If your bot is not working, and you are not sure why there is a simple way to find the culprit that’s causing the problem.

With formulas, you are dealing with a lot of “operational” @variables which content you don’t get to see in your spreadsheet or CRM. Visualizing them helps to catch the inconsistencies or errors. To see the contents of one of these “hidden” variables interrupt your flow just for a moment.

Draw a green arrow from the formulas, webhooks, or another block which variable you want to examine and select the “Send a Message” block. Inside, insert the variable in question.

See example below:


Click SAVE and complete a test conversation.

Next, go to SHARE ➡ Share with a Link ➡ Click to open the bot link in a new tab and go through the conversation. You will see the variable appear in the message and so be able to spot wrong formating or error reports.

feedback chatbot troubleshooting

Good luck!

Ready to get started?


Customer feedback surveys are an extremely valuable resource for any business. They help you make the kinds of changes to your products and services that your customers want to see.

Chatbot surveys simplify this process and make it both enjoyable for the customer and efficient for you.

👇 Register with Landbot for free and build your first feedback/survey bot 👇