Template migration
Updated: Jun 24, 2026
This document describes how to migrate templates from one WhatsApp Business account (WABA) to another. Migration doesn’t move templates; it recreates them in the destination WABA.
Limitations
- Templates can only be migrated between WABAs owned by the same Meta business.
- Only templates with a status of
APPROVEDand aquality_scoreof eitherGREENorUNKNOWNare eligible for migration.
Request syntax
Use the Migrate Message Templates API 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>, "template_ids": [<TEMPLATE_IDS>] }'
Parameters
| Placeholder | Description | Example value |
|---|---|---|
<ACCESS_TOKEN>String | Required. | EAAA... |
<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 the number 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
The following request migrates templates from the source WABA
102290129340398 to the destination WABA 104996122399160: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" } }