Home WhatsApp | Connection, templates and sending How to replicate WhatsApp templates between WABAs via API

How to replicate WhatsApp templates between WABAs via API

Last updated on Sep 23, 2026

When to use it?

When you need to move your WhatsApp templates from one WhatsApp Business Account (WABA) to another. For example: number migration, a company with more than one WABA that wants the same templates in all of them, or a change of portfolio in Meta Business. Meta has no "duplicate" button between accounts, but you can do it through Meta's API (Graph API) in a few steps.

This procedure requires someone familiar with API calls. If you prefer, contact our support team and we'll help.

There is no way to clone the approved status. Every template recreated in the destination WABA goes through Meta's approval again (usually minutes, but it can take up to 24h). Plan the switch with this in mind, so you're not left without approved templates in the new account.

What do I need beforehand?

  • The source WABA ID and the destination WABA ID
  • An access token with the whatsapp_business_management permission that has access to both WABAs (from a Business Manager system user, for example)

How do I do it, step by step?

1. List the approved templates in the source WABA

curl -G "https://graph.facebook.com/v{version}/{SOURCE_WABA_ID}/message_templates" \
  -d "status=APPROVED" \
  -d "fields=name,language,category,parameter_format,components" \
  -d "limit=100" \
  -H "Authorization: Bearer {TOKEN}"

The response includes the name, language, category and content (components) of each template. If there are more than 100, follow the paging.next link in the response until the end.

2. Create each template in the destination WABA

For each item in the list, send a POST with the same data. Remove the fields that belong to the source account (id, status, quality, etc.) and send only name, language, category, parameter_format (if present) and components.

curl -X POST "https://graph.facebook.com/v{version}/{DESTINATION_WABA_ID}/message_templates" \
  -H "Authorization: Bearer {TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "welcome",
    "language": "en_US",
    "category": "UTILITY",
    "components": [ ...copied from the source... ]
  }'

3. Track the approval

Run the GET again on the destination WABA and check the status field until all templates are APPROVED. Any that come back REJECTED need manual adjustment.

What should I watch out for?

  • Templates with media in the header (image, video, document): the sample file from the source doesn't work in the other account. Upload the media again through the Resumable Upload API, get the new handle and replace it in header_handle before the POST.
  • Variables: keep the examples (example) that come in the components. Without them, Meta rejects the template.
  • Creation limit: at most 100 templates created per hour in each WABA. If you have a lot, do it in batches.
  • Total limit: 250 templates per WABA if the portfolio is not verified (verified portfolios allow many more).
  • Category: Meta may reclassify the category during the new approval (e.g. from utility to marketing), which changes the sending cost.
  • Name: the same name + language can't already exist in the destination WABA.

Notes

Official reference: Message templates (Meta for Developers)