> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ada.cx/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ada.cx/_mcp/server.

# Handoff management

## Overview

For situations that your AI Agent can't handle, you can configure procedures for handing end users off to live agents. Configure different Handoffs to suit different situations for your end users, and build your handoff content using modular blocks to ensure a smooth experience.

## Limitations

Handoff management has the following constraints:

* **Maximum active handoffs**: You can have up to five active handoffs at a time.
* **Variable scope**: Variables used in handoff blocks only work within structured content and are separate from information collected through [Actions](/docs/automation/tools/api-tools/api-tool-control).

## Use cases

Handoffs help you route end users to human agents when your AI Agent can't resolve an inquiry.

* **Live agent escalation**: Transfer end users to human agents in real-time via chat or call transfer.
* **Asynchronous follow-up**: Create tickets or cases for agent follow-up via email.
* **Off-hours handling**: Provide alternative paths when human agents are unavailable.
* **Error recovery**: Define fallback behavior when handoff attempts fail.
* **Context-based routing**: Route end users to different handoffs based on conversation context or variables.

## Capabilities & configuration\[#situations]

Handoffs provide flexible options for routing end users to human agents across different channels and platforms.

### Just choosing the right handoff method?

Use this table to choose the right platform-specific handoff block based on the channel and whether the handoff should result in real-time or asynchronous agent follow-up. The table focuses on supported handoff blocks for Zendesk and Salesforce. For other platforms, the methods reflect common patterns that assume support for email-based interactions.

To further refine your flow—such as routing based on variables, updating existing tickets, or triggering fallback logic—add supporting blocks like conditionals, HTTP requests, or custom routing logic as needed. For a complete list of all available handoff blocks, see [Implementation & usage](#edit).

| Platform                                                                            | Channel                       | Handoff block                                                                                                                                                                      | Email sharing (AI Agent + Human)?                                          | Considerations                                                                                                                                                                     |
| ----------------------------------------------------------------------------------- | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **[Salesforce](/docs/handoffs/salesforce/salesforce-chat/ada-glass-configuration)** | [Chat](/docs/channels/chat)   | [Salesforce](/docs/handoffs/salesforce/salesforce-chat/salesforce-action-block)                                                                                                    | N/A                                                                        | Asynchronous email follow-up; creates a new case.                                                                                                                                  |
|                                                                                     | [Chat](/docs/channels/chat)   | [Salesforce Chat](/docs/handoffs/salesforce/salesforce-chat/salesforce-chat-block#salesforce-chat-block)                                                                           | N/A                                                                        | Real-time chat handoff to agent; creates a separate Salesforce Case.                                                                                                               |
|                                                                                     | [Chat](/docs/channels/chat)   | [Salesforce Messaging Utils](/docs/handoffs/salesforce/salesforce-messaging/salesforce-messaging-handoff-setup)                                                                    | N/A                                                                        | Asynchronous conversations across web and in-app channels.                                                                                                                         |
|                                                                                     | [Voice](/docs/channels/voice) | Email follow-up → [Salesforce](/docs/handoffs/salesforce/salesforce-chat/salesforce-action-block)                                                                                  | No                                                                         | Asynchronous post-call follow-up; creates a new case.                                                                                                                              |
|                                                                                     | [Voice](/docs/channels/voice) | Call transfer → [Transfer Call](/docs/channels/voice/voice-configuration/greetings-and-handoffs#UUID-a5baa6c5-e3da-e273-08e3-2da0b460c955_section-idm4516056577880033652597058235) | N/A                                                                        | Synchronous call transfer to a human agent.                                                                                                                                        |
|                                                                                     | [Email](/docs/channels/email) | [Salesforce](/docs/channels/email/email-configuration/email-handoffs#salesforce)                                                                                                   | No                                                                         | Asynchronous email follow-up; creates a new case.                                                                                                                                  |
| **[Zendesk](/docs/handoffs/zendesk)**                                               | [Chat](/docs/channels/chat)   | [Zendesk Chat](/docs/handoffs/zendesk/zendesk-chat/zendesk-chat-handoff-setup#add-the-zendesk-live-agent-block-to-an-answer)                                                       | N/A                                                                        | Real-time chat experience; agent replies in widget with full transcript.                                                                                                           |
|                                                                                     | [Chat](/docs/channels/chat)   | [Zendesk Messaging](/docs/handoffs/zendesk/zendesk-messaging#use-the-zendesk-messaging-block)                                                                                      | N/A                                                                        | Real-time chat experience; incurs MAUs.                                                                                                                                            |
|                                                                                     | [Chat](/docs/channels/chat)   | [Zendesk Support](/docs/handoffs/zendesk/zendesk-support#step-5-configure-the-zendesk-support-block) (live chat, avoid MAUs)                                                       | Yes (native)                                                               | Used to avoid MAUs; requires separate flows for Email and Chat channels.                                                                                                           |
|                                                                                     | [Chat](/docs/channels/chat)   | [Zendesk Ticketing](/docs/handoffs/zendesk/zendesk-ticketing#use-the-zendesk-ticketing-app) (non-live chat)                                                                        | Yes (with [SMTP Connector](/docs/handoffs/zendesk/zendesk-smtp-connector)) | Asynchronous email follow-up; creates a new ticket in Zendesk.                                                                                                                     |
|                                                                                     | [Voice](/docs/channels/voice) | Email follow-up → [Zendesk Ticketing](/docs/handoffs/zendesk/zendesk-ticketing#use-the-zendesk-ticketing-app)                                                                      | Yes (with [SMTP Connector](/docs/handoffs/zendesk/zendesk-smtp-connector)) | Post-call email escalation; creates a new ticket in a new thread.                                                                                                                  |
|                                                                                     | [Voice](/docs/channels/voice) | Call transfer → [Transfer Call](/docs/channels/voice/voice-configuration/greetings-and-handoffs#UUID-a5baa6c5-e3da-e273-08e3-2da0b460c955_section-idm4516056577880033652597058235) | N/A                                                                        | Synchronous call transfer to a human agent.                                                                                                                                        |
|                                                                                     | [Email](/docs/channels/email) | [Zendesk Support](/docs/channels/email/email-configuration/email-handoffs#zendesk-support)                                                                                         | Yes (native)                                                               | Same thread and address; supports auto-CC handling.                                                                                                                                |
|                                                                                     | [Email](/docs/channels/email) | [Zendesk Ticketing](/docs/channels/email/email-configuration/email-handoffs#zendesk-ticketing)                                                                                     | Yes (with [SMTP Connector](/docs/handoffs/zendesk/zendesk-smtp-connector)) | With SMTP Connector, replies continue in same thread; without it, creates a new ticket in a separate thread and human agents need a different email address. CCs handled manually. |
| **Other**                                                                           | [Chat](/docs/channels/chat)   | [Email](/docs/handoffs/handoff-management/blocks/email-block)                                                                                                                      | No                                                                         | Asynchronous email escalation; platform must support email ingestion.                                                                                                              |
|                                                                                     | [Chat](/docs/channels/chat)   | Custom integration                                                                                                                                                                 | N/A                                                                        | N/A                                                                                                                                                                                |
|                                                                                     | [Voice](/docs/channels/voice) | Email follow-up → [Email](/docs/handoffs/handoff-management/blocks/email-block)                                                                                                    | No                                                                         | Post-call email handoff; same behavior as chat-to-email handoff.                                                                                                                   |
|                                                                                     | [Voice](/docs/channels/voice) | Call transfer → [Transfer Call](/docs/channels/voice/voice-configuration/greetings-and-handoffs#UUID-a5baa6c5-e3da-e273-08e3-2da0b460c955_section-idm4516056577880033652597058235) | N/A                                                                        | Synchronous call transfer to a human agent.                                                                                                                                        |
|                                                                                     | [Email](/docs/channels/email) | [Email](/docs/channels/email/email-configuration/email-handoffs#email)                                                                                                             | No                                                                         | Asynchronous email handoff; receiving platform must support email-to-ticket intake.                                                                                                |

### Handoff types

Your AI Agent handles different situations that might require handoffs differently:

* **Handoffs to live agents**

  On the Ada dashboard, when you go to **Config > AI AGENT > Handoffs**, on the **Handoffs** tab, you can view and modify handoffs to live agents.

  When your AI Agent detects it needs to hand an end user off to a live agent, it chooses from these configured handoffs based on the name and description you provide (e.g., you might use one handoff for subscription renewals and another for returns).

* **Fallback handoffs**

  Fallbacks are used when a handoff can't proceed as expected. There are two main types:

  * **Off-Hours**: Used when an end user requests a synchronous handoff (like live chat or Messaging with Zendesk Chat or Salesforce Chat handoffs) but no human agents are online. This is configured in the handoff platform (e.g., Zendesk Chat operating hours). Off-hours typically don't apply to asynchronous handoffs like ticket creation, and they aren't relevant for [Email](/docs/channels/email). In channels with asynchronous handoffs — for example, [Voice](/docs/channels/voice), or [Chat](/docs/channels/chat) with Zendesk Messaging handoffs — customers can simulate on-hours vs. off-hours behavior by combining the [Scheduled block](/docs/handoffs/handoff-management/blocks/scheduled-block) with conditionals.
  * **Error Fallback**: Used when an error occurs during a handoff attempt, such as when your AI Agent tries to transfer to a live agent or make an API request and something goes wrong. Error fallbacks apply across all channels, including Voice and Email.

  Depending on the features your organization has enabled, you may see more preconfigured handoff types in your dashboard. For more information, reach out to your Ada team.

### Variables in Handoffs\[#variables]

You can create [Variables](/docs/automation/variables) to capture or set a piece of information, so you can use the value saved in the variable later. Variables are useful for:

* Referring to basic pieces of information in a conversation (e.g., get the end user's name so you can refer back to it later)
* Passing metavariables through handoffs to provide human agents with information about the end user (e.g., their email address)
* Dynamically collecting information with auto-capture variables (e.g., if you create an auto-capture variable for the end user's account number, your AI Agent will check to see if it has that information, and if not, it will ask the end user autonomously)

You can use the same variable in other places where you can use blocks in your AI Agent, too—your AI Agent will know not to ask for the same piece of information twice, and if you do want it to ask twice, it will know to always use the newest value.

As a best practice, when you're using a variable to repeat a piece of information in text (e.g., if you're repeating the end user's name), make sure you set fallback values so that if the variable is not set, your AI Agent can still have something to say.

## Quick start

Create a Handoff in a few steps.

On the Ada dashboard, go to **Config > AI AGENT > Handoffs**, then open the **Handoffs** tab.

Click **New Handoff**.

Under **Identify this Handoff**, enter a **Name** and **Description**.

Use blocks to build your handoff content, then click **Save**.

For detailed instructions, see [Implementation & usage](#edit).

## Implementation & usage

Create and manage Handoffs and their content.

### Create or edit a Handoff\[#edit]

Every piece of Handoff content contains default content. You can edit that content directly, or you can edit it by adding or removing blocks.

**To create or edit a Handoff:**

1. On the Ada dashboard, go to **Config > AI AGENT > Handoffs**.

2. Choose the type of handoff you want to configure.

   * To create or edit a regular handoff, go to the **Handoffs** tab. Then, click **New Handoff**, or click an existing handoff type to edit it.

     1. Under **Identify this Handoff**, fill in information about the handoff under **Name** and **Description**.

        Your AI Agent will use the information you enter here when it's reasoning through when it's appropriate to trigger this handoff.
     2. If required, you can restrict Handoffs to certain users, based on information your AI Agent collects about your users and saves in variables.
     You can only use variables your AI Agent can collect through your browser, or that you collect in a block and allow to be available outside of the structured content the block is in. You can't use variables your AI Agent collects using Actions.
     * To make the handoff available to all users, select **Everyone**.

     * To restrict the handoff to certain users, select **Based on the following rules**. A section expands where you can enter the logic your AI Agent will use to decide whether to serve the handoff.

       1. Under **Where**, in the **Choose a variable** list, select a variable.
       2. In the next dropdown, select an operator so you can define a relationship between the variable and the value you want to target.
       #### Understand comparison operators
       Comparison operators are logic statements that tell your AI Agent to match end user information that's captured in the variable you're using. The available operators vary based on the variable type you're using:
       | **Operator**                                                                                                            | **Variable types**                                                                   | **Description**                                                                                  |
       | :---------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------- |
       | ![Begins With icon](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/e8b9c807586a4238654793da51b49ec15e7045c0691d461567178070e57a1840/versions/assets/image/uuid-a2a98e3d-9b57-9aef-9015-811511180acc.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=9c97eefe2dc8a1f7867f1050d5be1b92560669e53cf366c1d9134190b0b6520f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) **Begins With**           | - All text variables (including phone and email)                                     | Match information in the variable that begins with certain text (partial match).                 |
       | ![Ends With icon](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/9bc404d3db5ea684a901bf8426485894bb62abb8369e498b98dc4e4f3807a5ec/versions/assets/image/uuid-4c3f70e3-9921-9b1a-bcf2-fff04c0c389c.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=b8ba8a6114237a69e8efb790a060be9f3f1faada6b705050717adf54edfaf598&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) **Ends With**               | - All text variables (including phone and email)                                     | Match information in the variable that ends with certain text (partial match).                   |
       | ![Contains icon](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/a4f0225811b1ecde2f125de907c2ad1b084268805cd89a00f465649ddbf8eaa2/versions/assets/image/uuid-b0ca4ac7-18c4-d71d-9ff7-a56de57685bf.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=c074fd333e95fefb1a29d45a048ff8677a6ad07ffffdef7326e02dda310431c2&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) **Contains**                 | - All text variables (including phone and email)- List variables                     | Match information in the variable that contains certain text in any position (partial match).    |
       | ![Is icon](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/7266dedcf2da1af5c496469379bd4fb68d5e65492c190e9567c75edbbbf7e260/versions/assets/image/uuid-ed7679a6-76c6-f8b3-d8cd-1323e8d98e0a.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=69f82688019fa2fa689582609aa49b94d614b155b69d7952c331a8337c364863&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) **Is**                             | - All text variables (including phone and email) - Number variables                  | Match information in the variable that equals specific text exactly (exact match).               |
       | ![Is Not icon](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/d94952ab65e9f266413c582390a1d702ebb32c7a2023709ee96741b6df1b17e4/versions/assets/image/uuid-52c3ace1-f490-92df-8e17-aaa08418541b.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=4b8b569fff29aee33b3b93602766ea8bf3f73a0601eb6f44108f0c2a32a92d78&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) **Is Not**                     | - All text variables (including phone and email) - Number variables                  | Match information in the variable that doesn't equal specific text exactly (exact match).        |
       | ![Is Not Set icon](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/283cad3d89c7d92f279d722592cd958630a40527266a47d316ab3b3b2051b71f/versions/assets/image/uuid-498cb9b2-2d9e-40ef-9ed1-3cf51dc4a1d4.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=7fbc6d1b83ff49bad67e0bec7966a29aff31ed32b39ee47a236ffebd0db93688&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) **Is Not Set**             | - All text variables (including phone and email) - Number variables - List variables | Match if there is no information contained in the variable.                                      |
       | ![Is Set icon](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/8c1019797a0482018682d52622c9e2fe56ddc5aef8925dc3e3db678c121c6869/versions/assets/image/uuid-dc59d677-9ded-d825-48e9-0fb7f5c48439.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=4d7989342ee90a3017296ae305b8cb5101cddc6f7f1fe0b015dbcbd3a19c47ec&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) **Is Set**                     | - All text variables (including phone and email) - Number variables - List variables | Match if there is any information contained in the variable.                                     |
       | ![Greater Than icon](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/45636711dfe933087353da3923c6865b6816ea671ad6e9db4739aeea4c80a697/versions/assets/image/uuid-ea44ef37-6ef9-3b44-c1f6-86b4315c160c.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=cb84d91fffadc42bba76fd567453483e7e58eaffea7a12c65cb46cf53fdde42f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) **Greater Than**         | - Number variables                                                                   | Match if the information in the variable is greater than a specific value.                       |
       | ![Less Than icon](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/f2448b33a8931270e63ea8daab74e67ade1fdfdf1f8853529c2fb0a3e5abda55/versions/assets/image/uuid-6ad2273c-89e8-79b7-92ba-dd766b493b5f.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=bf51d9cf9127ecbf515e943b7e90aaf045f9b4168a0bcd243f9791015e20d831&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) **Less Than**               | - Number variables - List variables                                                  | Match if the information in the variable is less than a specific value.                          |
       | ![Is True icon](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/fcf3fe21099df957ee22609d5a5c211601d3e402fcc8402c12115f4680a692b0/versions/assets/image/uuid-b75658a2-623f-1317-139d-469254aca9cd.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=4f40f05746ee483d71582a3b7eb44274eb2c18d906f29682e9c48bffedd0810b&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) **Is True**                   | - Yes/No variables                                                                   | Match if the information in a variable is Yes (or True).                                         |
       | ![Is False icon](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/2b5c661e7e4445f1ea8f7736ee5b58b14f72283faf2dbd4f01220a26d621b238/versions/assets/image/uuid-83141cb5-fee0-686e-fb7e-5848842bd2af.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=02c1ed7baedf553f1b292c42b90820b09c10e151ab9633e99c3d03fe98d574b2&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) **Is False**                 | - Yes/No variables                                                                   | Match if the information in a variable is No (or False).                                         |
       | ![Does Not Contain icon](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/2a459cf7a992abeb5cbdf8438f9f1be356bb5fcf915f55f7f1c2cdc3173b101d/versions/assets/image/uuid-a84f6c2f-dedb-70d5-7265-a0d7073bd683.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=66004400fdc733f3e55c90ac90aab5e9357b9f6c63d2f56893a5598948d16f12&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) **Does Not Contain** | - List variables                                                                     | Match if none of the selected items contains this value.                                         |
       | ![Is Equal To icon](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/7266dedcf2da1af5c496469379bd4fb68d5e65492c190e9567c75edbbbf7e260/versions/assets/image/uuid-ed7679a6-76c6-f8b3-d8cd-1323e8d98e0a.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=69f82688019fa2fa689582609aa49b94d614b155b69d7952c331a8337c364863&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) **Is Equal To**           | - List variables                                                                     | Match if the end user selected a particular number of options in a List Option block.            |
       | ![Is Greater Than icon](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/45636711dfe933087353da3923c6865b6816ea671ad6e9db4739aeea4c80a697/versions/assets/image/uuid-ea44ef37-6ef9-3b44-c1f6-86b4315c160c.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=cb84d91fffadc42bba76fd567453483e7e58eaffea7a12c65cb46cf53fdde42f&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) **Is Greater Than**   | - List variables                                                                     | Match if the end user selected more than a particular number of options in a List Option block.  |
       | ![Is Less Than icon](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/f2448b33a8931270e63ea8daab74e67ade1fdfdf1f8853529c2fb0a3e5abda55/versions/assets/image/uuid-6ad2273c-89e8-79b7-92ba-dd766b493b5f.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=bf51d9cf9127ecbf515e943b7e90aaf045f9b4168a0bcd243f9791015e20d831&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) **Is Less Than**         | - List variables                                                                     | Match if the end user selected fewer than a particular number of options in a List Option block. |
       6. In the **Value** field, enter or select a value for the variable that you want to use to target users.
       7. If required, add additional conditions.
       * To add a new **top-level** condition, click **Add** ![](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/b0aa6bd9ade574c33763556b72bedb3fb7ba2384bf0c25ef6cc5401eab220757/versions/assets/image/button-add.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=35d99fd5401eb1ade830a501315264a41049317f0fec7b95a722115428f5d953&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject).

         If you're adding your first additional top-level condition, in the dropdown that appears, choose **And** or **Or** as the operator for all of your top-level conditions.

       * To create or add to a **group** of conditions, click the **Add to group** icon ![](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/881a5902ee010bd99b16914b2ac663810ad93cade88c2fddc273b4c3bc508b28/versions/assets/image/icon-add.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=fc735b126b5eac6d4006f675270d77dff0d70cb24a83d27e7c462bff141279de&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) beside a condition you want to include in the group.

         If you're creating a group, in the dropdown that appears, choose **And** or **Or** as the operator for all of the conditions in that group.
     5. Under **Acknowledgment (Optional)**, control what your AI Agent says immediately before it starts this Handoff.

        Leave the field blank to let the AI Agent word the acknowledgment itself. Enter an instruction of up to 500 characters to guide what it says.

        To fix the exact wording, make the whole instruction `say exactly "your text"`. The AI Agent then says your text word for word. Exact wording is never translated. If your AI Agent serves multiple languages, use a regular instruction instead.

        Voice conversations always send acknowledgment messages. Messaging conversations follow the **Send acknowledgement messages** setting in [personality settings](/docs/setup/persona/personality-setup). If that setting is off, select **Always acknowledge on Chat for this Handoff** to send acknowledgments for this Handoff only.
   * To edit an off-hours handoff, go to the Off hours tab. Then, click a handoff situation to edit it.

3. Use blocks to build your handoff content. You can:

   * Drag blocks from the block drawer on the right side of your screen into your handoff content, then add content in them
   * Edit content in existing blocks directly
   * Click the **Delete** icon ![](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/0a157919e7d474dfc5dd172698eb0e3c0c25ee947f5d6bf8e8fe6a1dfa68048e/versions/assets/image/uuid-613b06b6-97f7-2ef4-65d7-501f7b6ef99c.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=1786a8f16e6d27999f286d26e7db5cd3fb30257e78ffafeb71525bc3145ba907&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) on a block to remove it

   Depending on the way your AI Agent is configured, the blocks available to you may vary:

   | Block                                                                                               | Description                                                                                  |
   | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
   | [Text block](/docs/handoffs/handoff-management/blocks/text-block)                                   | Delivers simple text messages to customers. Each block appears as a single chat bubble.      |
   | [Link block](/docs/handoffs/handoff-management/blocks/link-block)                                   | Adds links to direct customers to websites or communication methods.                         |
   | [Capture block](/docs/handoffs/handoff-management/blocks/capture-block)                             | Prompts customers for information and saves it as a variable for use in other blocks.        |
   | [Set Variable block](/docs/handoffs/handoff-management/blocks/set-variable-block)                   | Automatically defines variables that you can use in other blocks.                            |
   | [Conditional block](/docs/handoffs/handoff-management/blocks/conditional-block)                     | Targets specific content to different customers depending on variables associated with them. |
   | [Request block](/docs/handoffs/handoff-management/blocks/request-block)                             | Makes an API call and saves all or part of the response as a variable.                       |
   | [List Option block](/docs/handoffs/handoff-management/blocks/list-option-block)                     | Offers customers a list of selectable items and saves their selection as a variable.         |
   | [Sign In and Sign Out blocks](/docs/handoffs/handoff-management/blocks/sign-in-and-sign-out-blocks) | Authorizes customers by asking them to sign in to their account.                             |
   | [Fetch Chat Metadata block](/docs/handoffs/handoff-management/blocks/fetch-chat-metadata-block)     | Adds the chat transcript and/or customer information from a conversation as variables.       |
   | [Email block](/docs/handoffs/handoff-management/blocks/email-block)                                 | Hands customers off via email with customizable fields.                                      |
   | [Scheduled block](/docs/handoffs/handoff-management/blocks/scheduled-block)                         | Sets days of the week and time ranges for different responses based on your schedule.        |
   | [File Upload block](/docs/handoffs/handoff-management/blocks/file-upload-block)                     | Allows customers to upload files directly. The uploaded file attaches to the support ticket. |

   **Integration-based handoffs**

   You can also hand off customers using third-party integrations:

   | Integration                                      | Description                                                                |
   | ------------------------------------------------ | -------------------------------------------------------------------------- |
   | [Salesforce handoffs](/docs/handoffs/salesforce) | Hands off customers using Salesforce Chat or Salesforce Messaging.         |
   | [Zendesk handoffs](/docs/handoffs/zendesk)       | Hands off customers using Zendesk Chat, email tickets, or Zendesk Support. |

4. At the bottom of the screen, click **Save**. Your AI Agent saves your changes.

### Manage Handoff versions\[#versions]

Your AI Agent saves a history of all edits you have made to your Handoff content over the last 30 days. You can revert your changes to your Handoff content back to any of these saved versions.

**To view and manage Handoff versions:**

1. On the Ada dashboard, go to **Config > AI AGENT > Handoffs**, then on the **Handoff** tab, open the handoff content you want to manage versions for.
2. At the top of the page, you can see when the handoff content was last edited. Click that text to open a pane that contains a list of versions of the handoff content over the last 30 days. You can click a version to see the handoff content at that time.
3. Optionally, for significant versions, you can add a name and description for future edits. To do this, hover over the version, click the **More options** button ![](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/ada.docs.buildwithfern.com/92f471415d4d83cfacae59466c84e0bf868d9e4c6ac35dea1211ad64140bcd87/versions/assets/image/uuid-8e6a9b2e-93ba-5da9-0a5c-a8ac75d9d5cb.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260921%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260921T040005Z&X-Amz-Expires=604800&X-Amz-Signature=de959a0fd84098effc05e7e636518c77f85d958daf8694f57aadf63ae101ea90&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject) that appears, filling in the **Version Title** and **Description** fields as required, then clicking **Save**.
4. To revert to a previous version of your handoff content, select the version you want to go back to. Then, at the top of the page, click **Restore Version**. Review your changes to ensure you're not reverting anything you want to keep, then click **Save** to save your reverted changes.

## Related features

* **Handoffs**: Learn about [Handoff](/docs/handoffs) concepts and architecture.
* **Zendesk integration**: Configure handoffs to [Zendesk](/docs/handoffs/zendesk).
* **Salesforce integration**: Configure Handoffs to [Salesforce Chat](/docs/handoffs/salesforce/salesforce-chat/ada-glass-configuration) and [Salesforce Messaging](/docs/handoffs/salesforce/salesforce-messaging/ada-salesforce-messaging-configuration).
* **Actions**: Automate tasks within conversations using [Actions](/docs/automation/tools/api-tools).
* **Variables**: Capture and use information across conversations using [Variables](/docs/automation/variables/using-variables).

---

Have any questions? Contact your Ada team, or email us at [](mailto:help@ada.cx?subject=Help%20Docs%20inquiry).