Template migration | Developer Documentation
Template migration
Updated: Nov 14, 2025
This document describes how to migrate templates from one WhatsApp Business Account (WABA) to another. Note that migration doesn’t move templates, it recreates them in the destination WABA.
Limitations
APPROVED and a quality_score of either GREEN or UNKNOWN are eligible for migration.Request syntax
Use the WhatsApp Business Account > Migrate Message Templates endpoint to migrate templates from one WABA to another.
curl -X POST "https://graph.facebook.com/<API_VERSION>/<DESTINATION_WABA_ID>/migrate_message_templates" \
-H "Authorization: Bearer <ACCESS_TOKEN>" \
-H "Content-Type: application/json" \
-d '
{
"source_waba_id": "<SOURCE_WABA_ID>",
"page_number": <PAGE_NUMBER>,
"count": <COUNT>
<!-- only if migrating specific templates that failed to migrate -->
"template_ids": [<TEMPLATE_IDS>]
}'Parameters
| Placeholder | Description | Example Value |
|---|---|---|
<ACCESS_TOKEN>String | Required. | |
<API_VERSION>String | Optional. Graph API version. | v25.0 |
<COUNT>Integer | Optional. Overrides the default batch size with a maximum count of 500. If the request takes longer than 30 seconds to execute and times out, reduce the count number. | 200 |
<DESTINATION_WABA_ID>WhatsApp Business Account ID | Required. Destination WhatsApp Business Account ID. | 104996122399160 |
<PAGE_NUMBER>Integer | Optional. Indicates amount of templates to migrate as sets of 500. Zero-indexed. For example, to migrate 1000 templates, send one request with this value set to 0 and another request with this value set to 1, in parallel. | 0 |
<TEMPLATE_IDS>Array of strings | Optional. Only use to migrate specific template IDs with a max array length of 500. For example, to migrate failed template IDs, add the specific template ID to the array. | ["35002248699842","351234565148","54382248699842"] |
<SOURCE_WABA_ID>WhatsApp Business Account ID | Required. Source WhatsApp Business Account ID. | 102290129340398 |
Response
{
"migrated_templates": [<MIGRATED_TEMPLATES>],
"failed_templates": [<FAILED_TEMPLATES>]
}Response properties
| Placeholder | Description | Example Value |
|---|---|---|
<MIGRATED_TEMPLATES>List | List of template IDs that were successfully duplicated in the destination WhatsApp Business Account. | "1473688840035974","6162904357082268","6147830171896170" |
<FAILED_TEMPLATES>Map | Map identifying templates that were not duplicated in the destination WhatsApp Business Account. Keys are template IDs and values are failure reasons. | "1019496902803242":"Incorrect category","259672276895259":"Formatting error - dangling parameter","572279198452421":"Incorrect category" |
Example request
curl -X POST 'https://graph.facebook.com/v25.0/104996122399160/migrate_message_templates?source_waba_id=102290129340398&page_number=0' \
-H 'Authorization: Bearer EAAJB...'
Example response
{
"migrated_templates": [
"1473688840035974",
"6162904357082268",
"6147830171896170"
],
"failed_templates": {
"1019496902803242": "Incorrect category",
"259672276895259": "Formatting error - dangling parameter",
"572279198452421": "Incorrect category"
}
}
No comments to display
No comments to display