Engineering
WhatsApp error 132000 (template parameter count mismatch): count every variable, not just the body
How to fix template sends rejected with 132000: header and button variables that were forgotten, empty CRM fields dropped by code, templates edited after the integration was written, and language versions with different variables.
By Broadchat teamPublished 7 min read
In short
WhatsApp error 132000 means "The number of variable parameter values included in the request did not match the number of variable parameters defined in the template." WhatsApp found your template but the values do not line up with its {{n}} placeholders. Count the variables in each component (header, body and each button) of the exact language version you send, send one value per variable in the matching component, and never let empty CRM fields silently disappear from the list.
Key takeaways
- 132000 is checked per component: two body values plus one header value is not the same as three body values.
- A dynamic URL button needs its own button component with sub_type url and the button index, even when the body is correct.
- Language versions of a template are separate templates and can have different variable counts.
- Editing a template to add or remove a variable breaks any code that hard-codes the old count.
- Fetch the template's components from the API and build the parameters from them instead of from memory.
WhatsApp error 132000 means the number of values in your template message does not match the number of variables in the template. Meta's error reference says: "The number of variable parameter values included in the request did not match the number of variable parameters defined in the template." Its fix is to make sure "the request includes values for all of the parameters required by the template." The good news hidden in this error is that the template name, language and approval are fine. If they were not, you would get 132001 instead.
How WhatsApp counts parameters
A template is made of components: an optional header, the body, an optional footer and optional buttons. Variables can live in the header (text headers allow one variable), in the body, and in URL buttons with a dynamic suffix. Authentication templates also carry the code in a button. In the send request each of these gets its own entry in template.components, and WhatsApp compares the count component by component.
| Template part | In the template | In the send request |
|---|---|---|
Text header with {{1}} | Order {{1}} is on its way | {"type": "header", "parameters": [{"type": "text", "text": "RH-48213"}]} |
| Body with three variables | Hi {{1}}, your {{2}} arrives on {{3}}. | {"type": "body", "parameters": [ three text objects ]} |
URL button https://rangolihome.in/track/{{1}} | Dynamic suffix | {"type": "button", "sub_type": "url", "index": "0", "parameters": [{"type": "text", "text": "RH-48213"}]} |
| Footer | No variables allowed | Nothing to send |
Templates that use named parameters (created with parameter_format set to named) are matched by parameter_name instead of position, but the rule is the same: every variable needs a value.
The six common causes
- Header or button variable forgotten. The body is perfect, but the text header's
{{1}}or the tracking button's suffix has no value. This is the most frequent cause. - All values pushed into the body. Four values sent in the body for a template that has one header and three body variables.
- Empty fields dropped. Code that filters out
nullor empty CRM fields (a missing city or order date) sends two values instead of three. - Template edited later. Someone added
{{4}}for a delivery slot in WhatsApp Manager; the integration still sends three. - Different language version. The Hindi version of a template was written with one variable fewer than the English one, and the code uses the English count for both.
- Wrong template, same name prefix.
order_shippedandorder_shipped_v2differ by one variable, and the payload was built for the other one.
What the error looks like
132000 normally comes back immediately in the response to the send request, so the message is never queued. Illustrative response (the details text varies):
{
"error": {
"message": "(#132000) Number of parameters does not match the expected number of params",
"type": "OAuthException",
"code": 132000,
"error_data": {
"messaging_product": "whatsapp",
"details": "body: number of localizable_params (2) does not match the expected number of params (3)"
},
"fbtrace_id": "Ab3Kq9XyTmL2pRw7Nc4sVuE"
}
}The details string often names the component (header, body or button) and both counts. Start there.
Step-by-step fix
- Log the exact request that failed, including
template.name,template.language.codeand every component. - Fetch the template definition for that name and language from the WhatsApp Business account that owns the sending number:
GET /<WABA_ID>/message_templates?name=delivery_update&fields=name,language,status,components - Count placeholders per component in the response: the header
text, the bodytext, and every button whoseurlcontains{{1}}. - Rebuild the components so that each part gets exactly that many values, in order, with buttons addressed by their zero-based
index. - Replace empty values with a sensible fallback ("Customer", "your order") rather than removing them. Keep the fallback realistic, because it reaches the customer.
- Resend one test to an internal number, then release the batch.
A worked example
Sunrise Clinic in Pune sends appointment reminders with the utility template appointment_reminder_v2: body "Hi {{1}}, your appointment with {{2}} is on {{3}}. Reply to reschedule." and a URL button https://sunriseclinic.in/a/{{1}} that opens the booking. Meera, the developer, wrote the reminder job when the template had no button. After the front desk added the button and the template was approved again, every reminder failed with 132000.
The details string said the button parameter was missing. Meera added a button component with sub_type: "url", index: "0" and the booking code SC7741 as its text, and changed the job to read the template's components each morning before sending. She also found a second bug while testing: patients without a doctor assigned had {{2}} dropped, so she now sends "our doctor" as the fallback.
Codes that are easy to confuse
| Code | Meaning | First thing to check |
|---|---|---|
| 132000 | Count of values does not match the template | Values per component |
| 132001 | Template name or language not found, or not approved | Name, language code, status |
| 132012 | Values are in the wrong format for the template | Parameter type (text, currency, date_time, image…) |
| 132005 | Text too long after filling the variables | Length of long values such as addresses |
| 131008 | A required parameter is missing from the request | Missing to, type or template fields |
Preventing 132000
- Treat a template edit as a code change: re-read the components after Meta approves the edit.
- Version names (
_v2,_v3) when the variable count changes, so old code cannot send the new template by accident. - Keep one parameter builder for all channels, so campaigns, bots and order webhooks all count the same way.
- Test every language version separately.
How Broadchat helps
When you pick a template in Campaigns, Broadchat reads the synced template and shows a field for each variable (BODY VARIABLE #1, #2…) and for each button payload, and a template with a media header cannot be launched until you upload the file or paste its URL. For CSV audiences, Map Variables links each variable to a column. If a send still fails, the reason shows as "The number of template variables does not match the template." with code 132000 in message info. Code that calls the channel API directly with hand-built parameters is checked by Meta, not by the panel, so the steps above still apply there.
Read the guide to sending template messages through the API, the broader WhatsApp message templates guide, and the full WhatsApp API error codes cheat-sheet.
Sources
- WhatsApp error codes — Meta for Developers, checked 1 November 2026
- Template components (headers, body, buttons, variables) — Meta for Developers, checked 1 November 2026
- Template fundamentals — Meta for Developers, checked 1 November 2026
Broadchat team · Product and partner success team
The people who build and support Broadchat, the white-label WhatsApp Business API platform. We write from what we see while onboarding partners and their clients on the official WhatsApp Cloud API, and we check every article against Meta's current documentation.
Last updated:
Frequently asked questions
What does WhatsApp error 132000 mean?
It means the number of variable values in your template message does not match the number of variables defined in the template. The template was found and is approved, but the parameters do not line up with its placeholders.
My body has the right number of values. Why do I still get 132000?
The template probably has a variable outside the body, most often a text header with {{1}} or a URL button with a dynamic suffix. Each needs its own component in the request: a header component, or a button component with sub_type url and the button index.
Can I send an empty string for a template variable I do not have?
Avoid it. Send a realistic fallback value instead, such as Customer or your order, because the text reaches the recipient. Dropping the value completely is what causes 132000.
Do English and Hindi versions of a template have the same variables?
Not necessarily. Each language version is a separate template and is reviewed separately, so it can have a different number of variables. Fetch and count the components for the exact language code you send.
What is the difference between 132000 and 132012?
132000 is about how many values you sent. 132012 is about their format: the count is right, but a value is not in the format the template component expects, for example text where the template expects a media or currency parameter.