
Answers are the building blocks for your conversation bot. An answer consists of a sequence of steps that are created and configured by you in bot builder, or that are part of a bot's out-of-the-box behavior. Each step represents a message the bot is able to show to your customer during a conversation.
This article discusses the following step types:
- Send message
- Present options
- Show help center articles
- Add carousel
- Ask for details
- Ask if question resolved
- Make API call
- Transfer to agent
- Branch by condition
- Add business hours condition
After getting to know the elements here, you can create a bot and begin building it using answers.
Send message
The Send message step displays a piece of text to the customer during a conversation.
Usage
The Send message step inserts a predefined piece of text into the conversation. It can be a greeting, useful information about your business, or an automated direct reply in response to end user free-text messages and quick reply option selection.
Configuration rules
Send message steps can be added anywhere in your answer. After they're displayed, they move the conversation immediately to the next step in the answer's flow.
You can add the following content elements to the bot message in this step:
Bot builder view | Customer view |
---|---|
![]() |
![]() |
Example
In the example below, the customer entered “Receiving error ‘unsupported platform’” which triggered the automated reply about supported platforms. That reply was configured in the bot builder as a Send message step; the conversation bot assessed the customer's free-text entry, identified that preconfigured message as the most likely to address the customer's needs, and moved the conversation to that step:

Present options
The Present options step displays up to 10 preconfigured quick replies that the customer can interact with during a conversation.
Usage
This step displays up to 10 preconfigured quick reply options that can be offered to your customers during a conversation, allowing them to select a likely response rather than typing it in.
These options can be used to represent commonly-asked questions, branch the conversation, or help your customers navigate through a conversation with your bot. You can drag-and-drop options in the Configuration panel to reorder them.
Configuration rules
You cannot end an answer flow with a Present options step. It must be followed by one of the other step types, which must also be configured before you can publish and move on to another step. In the example below, three options are followed by a Show help center article step, and one by a Transfer to agent step.
You can add the following content elements to the bot message in this step:
Bot builder view | Customer view |
---|---|
![]() |
![]() |
Example
In the example below, a customer is contacting a scooter sales and rental company. Because the company knows that most customers want information on buying, selling, or renting a scooter, after the initial greeting they immediately offer three options:
Note that as a result of conversational shortcuts, typing the message “I want to buy a scooter” in the example above will have the same effect as clicking the quick reply.
Show help center articles
The Show help center articles step presents up to six help center articles to the customer during a conversation. If you have public and restricted articles (articles requiring end users to sign in), you can configure which articles to show anonymous (unauthenticated) end users and which to show for authenticated end users. See Suggesting restricted help center articles in a bot answer for more information.
Usage
Configuration rules
Example
In the example below, the customer selected a quick reply option, "I want to buy a scooter", and received a specific article recommendation in response, which also included the text responses prior to the recommendation:
Add carousel
The Add carousel step displays up to 10 informational panels the customer can scroll through, each with a link to an external URL.
Usage
The Add carousel step inserts an array of panels into an answer step. Each panel displays configurable text and an interactive link. After the carousel is displayed, it moves the conversation immediately to the next step in the answer. The customer interacts with the carousel using the right and left arrow icons to scroll through the panel array. They can interact with the carousel at any time during the messaging conversation, after the step is reached.
Configuration rules
Carousels can be added anywhere in an answer flow.
A carousel must a minimum of 2 and a maximum of 10 panels.
Each panel must include:
- A title
- A complete URL
- Text for the button link
You can add the following rich content elements to the bot message in this step:
Bot builder view | Customer view |
---|---|
![]() |
![]() |
Ask for details
The Ask for details step collects information from an end user during the conversation.
Usage
Customer responses are automatically saved as variables. See the example below for how you can configure order tracking using this step.
Configuration rules
Ask for details can be added anywhere in your answer. The step must include:
- A name to identify the step. This won’t be visible to your customer but will help your team to identify the step.
- Ticket fields (text or dropdown types) to capture customer data
such as name, email, and any other information that can be helpful to
collect to power the rest of the conversation.
- Custom ticket fields must be created in Admin Center before you can add them to the step.
- Permissions for ticket fields must be set to Editable for end users, and will be Required to submit a request by end users, regardless of the requirement configuration on the permissions page.
- Nested dropdown fields are not supported.
Bot builder view | Customer view |
---|---|
![]() |
![]() |
Example
In the following example, the bot captures order information for the customer and displays the shipment status of the order.
Ask if question resolved
The Ask if question resolved step type asks your end users whether an answer resolves their support issue, and offers response options they can choose from.
Usage
The Ask if question resolved step provides a way to capture end user data to measure how well each answer is performing, and indicates which answers can be refined and optimized.Note: Explore reports capturing the number of sent feedback requests, as well as the number and types of responses left by end users, will be available later this year.
The step type inserts a piece of text into the conversation, followed by two quick response-style options, which are in turn each followed by a message or additional step.
Configuration rules
This step cannot be the first step in an answer, and cannot be added after a Transfer to agent step.
By default, when you insert this step into an answer the following text appears in each element:
- “Was this helpful?” (Question resolved bot message)
- “Yes, problem solved” (Resolved response)
- “No, I still need help” (Unresolved response)
- “Great. Knowledge is power. You can ask me another question at any time.” (Follow-up message to resolved response)
- ”Got it. Try rephrasing your question.” (follow-up message to unresolved response)
These elements must be present in the step for the answer to be published successfully.
The text above can be customized as needed. Additionally, the follow-up messages can be deleted and replaced by other step types.
While the text in the Question resolved and response messages is customizable, the resolution status by end user’s responses is fixed. That is, when the end user selects the first/left hand option (“Yes, problem solved”) it is considered a positive, or resolved response. The second/right hand option is captured as a negative, or unresolved response (for example, “No, I still need help”).
Bot builder view | Customer view |
---|---|
![]() |
![]() |
Make API call
The Make API call step can be used to push conversation details out to your CRM, or pull product information into your bot messages, and more.
Usage
This step is used when you want the bot to present external data in its response such as retrieving movie reviews from IMDB’s API or push data into an external end-point such as Amazon Event Bridge or Google Analytics. It is especially useful when a customer requests information that may be updated regularly or is particular to them, such as system status or current wait time for assistance. It can also be used to send events for analytics or tracking purposes, for example emitting events to Google Analytics or Pendo.
Configuration rules
API call steps can be added anywhere in your answer flow. Adding this step splits the flow into two branches:
- If success, which appears when the external source is queried and supported information is returned.
- If failed, which appears when the API call fails, due to a client or server error, or if the response is not supported by the bot builder.
Information returned from the queried source must be in JSON format, and be less than 2MB.
Admins must include the following information in the step configuration:
- Supported HTTP request method. Supported HTTP request
methods are GET, POST, PUT, PATCH, DELETE
- POST, PATCH and PUT must include a Body field sent with request
- GET and DELETE operations do not have a Body field.
- Endpoint URL, the URL of the external source.
Admins must add step type after each branch before publishing the flow.
Admins can create variables during the configuration of this step that can be used when creating bot messages subsequent to this step. Only the first 280 characters of a variable's value appear in the response displayed in the messaging conversation.
The Add an API call step has a number of configuration options that may require assistance from a developer on your team. See Using the Make API call step for more information.
Example
Let's say the customer selects the quick reply option “Zendesk office location” which triggers the Make API call step. The API call is configured to get the information from Google’s Places API.
If the external system returns a response, the Success branch is triggered, and the information is inserted into the response framework created by the admin, and presented to the end user.
If a response is not returned, or the response is not supported by the bot builder, the Failed path is taken, and fallback behavior defined by the admin is presented to the end user.
You can use the following URL as an endpoint to test the Make API call step:
https://run.mocky.io/v3/19e020de-4ee1-47f7-94ea-d68df3c4df71
For an example answer using the Make API call step, see Messaging recipe: Getting external data with a conversation bot.
Transfer to agent
The Transfer to agent step escalates the conversation to an agent.
Usage
Add this step to hand off the conversation to a human agent.
Configuration rules
In this step, you can configure:
- A final message to send before transferring a customer to an agent.
- Tags that are added to the ticket created when the conversation is
transferred. They can be used in ticket routing and other business rules.
See About tags.
- You can add up to 10 tags to each Transfer to agent step in an answer.
- Each tag can be up to 80 characters.
- Spaces and special characters such as #, @, and ! aren't allowed in tags.
You can add the following content elements to the bot message in this step:
Transfer to an agent is an end step, which means it is the last step in the conversation, and you cannot add any more steps after it. As part of this step – unseen by the customer – a ticket is created, which includes their conversation history to help the agent address the issue.
Bot builder view | Customer view |
---|---|
![]() |
![]() |
Example
The customer has chosen a quick reply option that indicates they need assistance with upgrading their plan, which requires agent involvement.
Branch by condition
The Branch by condition step adds conditional logic to an answer flow. You can use the logic to personalize a conversation based on an end user's data.
Usage
A Branch by condition step consists of two or more branches. A branch can have one or more conditions. When run, the step compares the conversation's variables to the conditions for each branch. If a branch's conditions are met, the conversation follows the branch's steps.
Configuration rules
You can add a Branch by condition step anywhere in an answer flow.
-
If this: If the branch's conditions are met, the conversation follows the branch's steps
- Else: If the conversation doesn't match the conditions of any other branch, the conversation follows this branch's steps. You can't remove this branch.
You can add up to four additional branches, to a maximum of six branches.
Each condition includes a variable, an operator, and a value. You can also nest conditions to create more complex conditional logic.
Admins can’t create or update variables in a Branch by condition step.
Branches are checked in the order they're included in the step. If conditions for more than one branch are met, the answer flow follows the first matching branch.
For more information, see Understanding the Branch by condition step in bot builder.
Example use cases
- You can use an Ask for details step to collect data from an end user as variables. You can then check this data against conditions in a Branch by condition step. The Branch by condition step determines whether the user is sent to a Transfer to agent step or a Show help center articles step.
- You can use a Make API call step to get a package's delivery status from an external API. You can then use the Branch by condition step to display different messages based on the status.
- You can use the Branch by condition step to send different responses based on an end user's VIP or membership status.
Add business hours condition
The Add business hours condition step lets you use your schedule to branch the conversation.
Usage
This step can be used to configure the bot to respond differently based on your business availability. Adding this step will split the answer flow into two branches:
- when open, which appears to the end user during scheduled business hours
- when closed, which appears to the end user outside of scheduled business hours
Configuration rules
You must set a schedule in order to include a business hours condition step. Once you have set a schedule, you will see a preview of your business hours in the configuration panel, to indicate when customers would be sent down the open or closed branch depending on the time of day. Note that holidays are not shown in the preview, but will be respected by the condition.
If you have set multiple schedules (available on Enterprise plans only), a dropdown will appear in the configuration panel to select the appropriate schedule.
You cannot end an answer flow with a business hours condition step. It must be followed by one of the other step types, which must be configured before you can publish. In the example below, the business hours condition step is followed by a Transfer to agent step in both the open and closed branch. The message content is configured differently in each branch.
Bot builder view | Customer view (When open) | Customer view (When closed) |
---|---|---|
![]() |
![]() |
![]() |
Example
In the example below, the agent transfer step is configured differently when open and closed to explain what will happen next in each context:
End user experience during business hours | End user experience outside of business hours |
---|---|
![]() |
![]() |
77 Comments
Hi there,
Are there any plans to add an additional button that is similar to the carousel but only presents a singular option? Within our flow, there are options where we'd prefer the users submit a ticket to our support team instead of resolving a case through chat.
Currently, the only ability to provide the user with a clickable button to take them to the ticket submission form is using the carousel. However, since it requires two options that isn't a viable option for us. The ability to make a single clickable button would be very beneficial to us.
Thanks!
Hi Ruben,
You can use a button link to do that.
https://support.zendesk.com/hc/en-us/articles/5133127616282#topic_ewh_2nm_nwb
Hi I hope all is well. I would like to ask is there way or formula where I can exclude the ticket that has been created by the chatbot, and count the number of tickets generated only by the agents ?
For the branch by condition you state that
"You can use the Branch by condition step to send different responses based on an end user's VIP or membership status."
How does that work? Because I can't select a custom field as a variable. Most likely the customer should be authenticated, but then the only metadata you can use as a variable are:
- Provided email
- Provided name
- Authenticated external ID
- Authenticated status
(as mentioned in https://support.zendesk.com/hc/en-us/articles/5314129059482)
I have created a basic answer bot and i have issue in last step the transfer to agent step is not working and no ticket is created in the agent workspace
Hi
Is it expected behaviour that the "Show help center articles" step, when the user clicks on "View article" this opens a new tab with the article and the bot opens and the conversation so far does not transfer across to the new tab (ie. the bot starts afresh)? If so, how can I change it so that the bot remembers the user across tabs or that the article opens in the current tab and the bot remembers the user?
Thanks
Fiona
Thank you for commenting.
To calculate the number of tickets coming from the BOT, you can add a tag to the Transfer to Agent step to track those tickets in Explore. The to count the number of tickets created by the agents, will be the same, you can have in place a trigger when the ticket is created by an agent, add X tag, then use that tag to filter tickets in Explore.
For more information: Reporting with tags
I hope it helps!
Can anyone help with the following?
In our answer bot flow, we are asking the user to type their query in a few words (free text field) and then submitting this query, using the "Make API call" step, to the Article recommendations API https://developer.zendesk.com/api-reference/answer-bot/answer-bot-api/article_recommendations/. We're doing this mainly because there is no built-in step, in the answer bot flow, to allow the user to search articles. This works fine, and we're storing some of the variables in the API response to then use in future steps.
However, there are so many steps in which we can't use these placeholder variables. For example, we want to show a carousel with the variables of the returned Article Title and URL stored variables, but it doesn't allow you to use the {{ }} tags.
How can we use the placeholder variables in the following steps:
Present options - placeholder variables can be used in the Bot message area, but not the Options.
Carousel - placeholder variables can only be used in the Title and Description, and not the button link, button text, image link or image description. In my example above, I want a carousel where I can display the Article title as the Title, and the Article URL as the button link:
Transfer to agent - I want to be able to add tags to the ticket with the placeholder variables.
Why can't these be used in these places to offer a more dynamic experience?
Thanks
Placeholder value is currently a limitation for carousel. However, it's already in the roadmap but we can't provide a tentative date yet. Thank you for understanding.
Hi Dane
What about the Present options and Transfer to agent steps too?
As an aside, is there a built-in way to ask the user to type in their query and have the bot / flow search for articles automatically instead of having to do it the way I am or using the static Show articles step? I know there is a "Fallback" option which will search the articles if the user types something that isn't matched, but that then messes up the rest of the flow and you can't continue.
Thanks
What some of our customers do is that they designate the most common intent on the fallback option just in case there are customers that are always using free text on the flow.
Dane It looks like all roads lead to transferring to an agent. Is there any flow that allows for an end user to create a ticket or send an email? Also, what happens if an agent is not available?
If an agent is not available it will still be routed to the views. However, you can utilize the "Add business hours" condition to notify your customer about your schedule and when they can expect an update.
Transferring to agent steps, will automatically create a Messaging ticket. This ticket also has the capability to switch channels to email.
I put a comment on this post too (https://support.zendesk.com/hc/en-us/community/posts/5013655314970/comments/5910400610586), but it'd be awesome if there was a way to de-activate/disable the text input box when asking for field forms to be filled out sometimes.
Ironically I notice that Zendesk messaging actually does this when I raised a ticket with support about this functionality - but there doesn't look to be a way to do this with flow builder currently.
We see quite a few customers mistakenly typing in their responses to the free-text box, rather than the field box.... which just makes the experience a little more frustrating for them.
Is it possible to get the customer to upload a file as a necessary step before transferring to agent?
Unfortunately, this feature is not available at the moment. This would be a good feature request though. You may create a new post in the General Product Feedback to submit this as a feature request. Thank you.
Best,
Paolo | Technical Support Engineer | Zendesk
When "asking for details" we should be able to set if the field is required or not, some times you just want to provide a dump field asking for "anything else" but it should not be forced as required.
Please sign in to leave a comment.