Skip to content

Template Language

Also called: Template translation · Template locale · Template language code

The language code a WhatsApp template is created in. One name can hold many translations, and each send must name an approved one exactly.

Reviewed

What is template language?

Every WhatsApp message template is created in one language, identified by a code from Meta's supported list — en, en_US, en_IN, hi, ta, bn and many more. Template names are not unique: you can create several templates with the same name in different languages, and together they act as translations of one message. Meta translates nothing; you write and submit every language version yourself, with example values in that language.

Each translation is a separate template in every way that matters. It has its own template ID, goes through review on its own, carries its own status and quality rating, and counts separately against the WABA's template limit. One name can therefore be approved in English, rejected in Tamil and still in review in Hindi at the same time.

When you send, the language object in the request picks the translation: "language": { "code": "hi" }. The match is exact — deterministic is the only language policy — so there is no automatic fallback to English or to a related locale. If no approved template exists under that name in that language, the send fails with error 132001 (the template does not exist in the specified language or has not been approved). en and en_US are different codes, and so are bn and bn_IN.

Template language is about localising within one WABA. It is different from template migration, which copies approved templates from one WABA to another, and from language detection, which works out what language a customer writes in so your system can choose the right code to send.

Key takeaways

  • Template language is the code a WhatsApp template is created in; one name can hold many translations, each its own template.
  • Each translation has its own ID, review, status and quality rating, and counts separately against the template limit.
  • Sends match template.language.code exactly: there is no fallback, and a missing or unapproved translation fails with 132001.
  • Meta's list has 111 codes, including en_IN, hi, bn, gu, kn, ml, mr, pa, ta, te and ur; Odia and Assamese are not on it.
  • en and en_US are different codes, so create and send with the same one or the send fails.

See InfiQ pricing

Interactive stop

Which translation does each send land on?

8 / 8

Only agents with the required skill are eligible; the least busy of them wins.

Incoming · 0 left

  1. All 8 conversations have been routed.

Conversation 8 of 8 · Skills-based

Imran · en_IN(needs en_IN)goes toEnglish · en_IN

Skills: needs en_IN, and only English · en_IN has it.

  • English · en_IN

    2 of 4 open

    • en_IN
    1. Arjun · en_INneeds en_IN
    2. Imran · en_INneeds en_IN
  • Tamil · ta

    2 of 4 open

    • ta
    1. Lakshmi · taneeds ta
    2. Kavya · taneeds ta
  • Hindi · hi

    2 of 4 open

    • hi
    1. Farah · hineeds hi
    2. Meera · hineeds hi

Waiting · 2

  1. Suresh · teneeds te
  2. Rohan · enneeds en
Same 8 conversations, each strategy
StrategyRoutedWaitingSkill mismatches
Skills-based620
Round-robin806
Each send asks for a language code. Skills-based routing matches it to an approved translation exactly; te and en (not en_IN) find no match and wait, where the API returns 132001. Switch to round-robin to see sends that ignore the code.

Conversation 8 of 8, Imran · en_IN: Skills: needs en_IN, and only English · en_IN has it.

How does template language work?

  1. Pick exact codes

    Choose codes from Meta's supported-languages list and settle on one per language. For English alone, en, en_US, en_GB and en_IN are separate codes.

  2. Create each translation under the same name

    Submit one template per language with the same name, its own language code, and body text and samples written in that language. Keeping the same variables and buttons in every version lets one send payload shape serve them all.

  3. Track status per language

    Each translation is reviewed and rated separately. List templates with fields=name,language,status and treat only rows that are APPROVED as sendable.

  4. Resolve the language before sending

    Map each customer's preference — from your CRM, their first message or an explicit choice — to a code you have approved, with a deliberate, logged default such as en_IN when there is no match.

  5. Send with that exact code

    Put the code in template.language.code. A code with no approved translation fails with 132001; WhatsApp never substitutes another language for you.

Template language in code

curl -X POST "https://graph.facebook.com/v26.0/{PHONE_NUMBER_ID}/messages" \
-H "Authorization: Bearer {ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"messaging_product": "whatsapp",
"to": "919812345678",
"type": "template",
"template": {
"name": "policy_renewal_due",
"language": { "code": "hi", "policy": "deterministic" },
"components": [
{ "type": "body", "parameters": [
{ "type": "text", "text": "Farah" },
{ "type": "text", "text": "24 October" }
] }
]
}
}'

The code must match an approved translation exactly; `policy` is optional and deterministic is its only value.

Example: Four languages and a resolver at a Chennai insurance broker

A Chennai insurance broker sends renewal reminders as policy_renewal_due in en_IN, ta, te and hi. Its CRM stores each customer's preferred language, and a small resolver maps it to an approved code, falls back to en_IN when the preferred translation is not approved, and logs every fallback. When the Telugu version was rejected for a weak sample, the resolver routed Telugu-speaking customers to English overnight instead of letting about 4,000 sends fail with 132001. The team fixed the sample and resubmitted the translation the next morning, and Telugu sends resumed once it was approved.

— Four languages and a resolver at a Chennai insurance broker

Common mistakes with template language

  • Assuming WhatsApp falls back to English

    It does not. A send names one language and either finds an approved template in exactly that code or fails with 132001. Build any fallback into your own code.

  • Mixing near-identical codes

    en and en_US, or bn and bn_IN, are different templates. Creating in one and sending with the other fails, so standardise on one code per language.

  • Deleting by name to fix one translation

    A delete by name removes every language version. Pass the translation's hsm_id with the name, or edit that translation instead.

  • Careless translation and samples

    Meta expects the text and example values in the template's own language. Hindi body text with English samples, or a machine translation nobody has read, invites rejection; have a native speaker check each version.

  • Forgetting the template limit

    Ten languages of one template use ten slots. On an unverified portfolio's 250-template cap, translations run out fast.

Template language: key facts and limits

Supported codes
111 language codes on Meta's list (October 2026)
Indian languages
hi, bn, gu, kn, ml, mr, pa, ta, te, ur, plus en_IN
Unit of review
Each language version separately
Template limit
Each translation counts as one template
Send field
template.language.code (exact match)
Language policy
deterministic only — no fallback
Missing or unapproved translation
Error 132001

Why does template language matter?

Customers in India read WhatsApp in a dozen scripts, and a template in the right language is read more and misread less. But every extra language multiplies the review work, the template count and the chances of a send going out with a code that has no approved version. Treating each translation as its own template — and resolving the code before you send — is what keeps a multilingual programme from turning into a stream of 132001 errors.

Best practices for template language

  • Keep a table of template name × language × status and alert on any row that is not APPROVED.
  • Store each customer's language as a Meta code, not a free-text label, so the send never has to guess.
  • Translate your highest-volume utility templates first; long-tail marketing copy can follow.
  • Check Meta's supported list before planning regional copy — Odia and Assamese were not on it when this page was reviewed.

Template Language FAQs

Do I need a separate template for every language?+
Yes. Each language is its own template under the same name, with its own review, status and template ID, and each counts toward your template limit.
What happens if I send a template in a language that isn't approved?+
The message is not sent and the API returns error 132001. There is no automatic fallback, so choose a code you know is approved.
Does Meta translate templates automatically?+
No. You supply the text and example values for every language yourself, and each version is reviewed on its own, so a careless translation can be rejected while the original stays approved.
Which Indian languages can WhatsApp templates use?+
Meta's list includes Hindi (hi), Bengali (bn, bn_IN), Gujarati (gu), Kannada (kn), Malayalam (ml), Marathi (mr), Punjabi (pa), Tamil (ta), Telugu (te) and Urdu (ur), plus English variants including en_IN.

Talk to InfiQ

From definition to your first message

InfiQ is an official Meta Business Partner. Start a 7-day free trial — no card needed — and see this running on your own number.