Meta no longer supports the Handover Protocol for Instagram. All businesses have been migrated to Conversation Routing. Conversation Routing is backwards compatible with most Handover Protocol APIs and functionalities, and is expected to function without interruption.
Conversation Routing enables businesses to utilize multiple connected applications to respond to user messages in a coordinated manner, designating which application should take responsibility for responding. This allows both businesses and users to have a rich conversation experience without having to manage complex business logic within each individual application when responding to user queries.
Businesses can connect various types of applications, each serving different roles, such as:
In some cases, a single application may fulfill multiple roles.
Use Conversation Routing when you have multiple messaging applications connected to your Instagram account and want Meta to automatically route messages to the appropriate application, based on how customers initiate conversations.
Some basic message routing features are available even without enabling Conversation Routing. For more details, see Default Message Routing Behavior.
To set up conversation routing for Instagram Ads, you’ll need to configure a message template as part of your ad creation process. For detailed steps, refer to the official Facebook Business Help article .
When creating your Instagram Ad, you’ll be prompted to select a Message template. You can either create a new template or use an existing one.
Within the message template, you can specify parameters such as the receiving_app_id and the thread window. This allows you to control which app receives the conversation and for how long it maintains control.
Here’s an example of how you might structure your message template in JSON:
{
"message": {
"attachment": {
"type": "template",
"payload": {
"template_type": "button",
"text": "Hi! Please let us know how we can help you",
"buttons": [
{
"title": "Show me the product!",
"type": "web_url",
"url": "http://www.facebook.com/"
},
{
"title": "Tell me more",
"type": "postback",
"payload": "USER_DEFINED_PAYLOAD"
}
]
}
},
"receiving_app_id": 1278416343931139,
"receiving_app_control_expiration": 4
}
}receiving_app_id: The ID of the app that will receive the conversation.receiving_app_control_expiration: The duration (in days) for which the app will maintain control of the thread. Valid values are from 1 to 30.receiving_app_control_expiration to a value between 1 and 30.
receiving_app_control_expiration, the thread control window will default to 1 day.
This section explains how to enable Conversation Routing, configure entry point routing, manage thread ownership, and use conversation control flows for Instagram messaging integrations.
To use Conversation Routing for Instagram, you need:

The default application is the primary app allowed to respond to a conversation when no other app is currently assigned or configured to do so.

Entry point routing lets you direct conversations to specific apps based on how users initiate contact. Configure these routes in the Conversation Routing tab of your Facebook Page settings.
There are three types of entry point routing:




The application responsible for responding to a user-business conversation is said to have Conversation Control or be the Thread Owner.
No active conversation between user and business(no user-to-business message in the last 24 hours), or after the current thread owner releases control. Only the default application can send messages in this state (within the messaging window).
There is an ongoing conversation between the user and a business application.
Conversation control flows allow applications to change message routing for subsequent customer messages. There are five types of control flows:
The current thread owner passes control to another application, making it the new thread owner.
Examples:
Marketing app passes control to Sales app to complete a transaction. AI support bot passes control to a human customer care agent.
The current thread owner releases control, setting the thread to idle once they are done with the conversation.
Examples:
The marketing app finishes answering queries and does not expect any further marketing queries from the customer, so it can release control for future queries. App cannot respond due to technical issues or unrelated queries and releases control to allow the default app to respond.
Applications which are allowed to Take control of conversations by the business are allowed to take thread control, which allows the application to set itself as the thread owner.
Apps with the Human Agent feature cannot take control via the Send API (with HA tag) unless allowed to Take control of conversations (configured in Page Settings → Page Setup → Advanced Messaging).

Example: Customer Care agent sees there is an issue with the Marketing bot application sending some invalid responses and can take thread control to continue conversation.
Thread control usually expires after 24 hours of inactivity, but in some cases businesses might not have enough time to respond to the user, so they can use this API to extend thread control up to 7 days.
Example:
In a non-default customer sales application, customer sales agents answering the customer queries may require more time to find the product details requested by the users. In such a case, agents need to extend the thread control time period until they find the details, which they can use to extend thread control.
It is used to request thread control from another application which has thread control already. In certain scenarios, you may not want to take the thread control directly but rather ask the application in control to pass the control to your application, and this can be used to inform them. If the current thread owner is done with the conversation, they can pass the thread control to your application.
Default behavior, also known as zero config behavior, allows applications to use certain conversation controls even without configuring a Conversation Routing default application. However, there are some limitations to be aware of.