Sending a template with variables
Template variables are positional, not named. You send a list of parameters per component, in order, and the count has to match exactly what the template defines. Three different errors come from getting this wrong, and each points at a different mistake.
The error for a parameter count that does not match the template.
The error for parameters whose format does not match.
The error when the template name and language do not resolve.
How parameters are matched
By position, not by name. The first parameter in the body list fills the first placeholder, the second fills the second, and so on. There is no way to name a variable, and swapping two parameters produces a message that sends successfully with the values in the wrong places.
That last case is the dangerous one, because nothing fails. A customer receives an order confirmation with the date where the amount should be, and no error is logged anywhere.
Components are separate lists
A header variable and a body variable do not share a list. Each component carries its own parameters, and merging them produces a count mismatch.
- Header parameters go in a header component, and there is at most one.
- Body parameters go in a body component, in order.
- Button URL parameters go in a button component, indexed by button.
- Sending one flat list for all of them returns error 132000.
Getting the language right
A template is identified by name and language together, so the same name in two languages is two templates. Sending en where the template was created as en_US does not fall back, it fails with error 132001, which reads as the template not existing.
List the templates on the number and copy the exact language string rather than assuming its shape. This is the single most common template error and the least descriptive.
Typed parameters
Most parameters are plain text. Some are not, and sending them as text fails with error 132012.
- Currency parameters carry an amount, a currency code and a fallback string.
- Date and time parameters carry a structured object with a fallback.
- Media header parameters carry a media id or a link, not a filename.
- The fallback string is what shows if the recipient's app cannot format the value.
Which error means what
The three failures are distinguishable, which saves a lot of guessing if they are logged separately rather than grouped as a template error.
Error 132001 means the name and language pair did not resolve, so check the language first. Error 132000 means the count is wrong, so compare against the template's own definition. Error 132012 means a value's format is wrong, which is usually a typed parameter sent as a plain string.
Common mistakes
- Assuming en falls back to en_US. It does not, and the error reads as a missing template.
- Merging header and body parameters into one list. They are separate components.
- Sending a currency or date as plain text. Typed parameters have a defined shape.
EasyCoexistence lists templates with their exact names and language codes through the dashboard and the MCP connector, so a send uses the values Meta actually stored.
Frequently asked questions
Are template variables named?
No. They are positional, so the order of the parameters is the whole contract.
Why does my template not exist?
Usually the language code. A template is identified by name and language together, and there is no fallback.
What if I send too many parameters?
Error 132000. Too many fails the same way as too few.
How do I send an amount?
As a currency parameter with an amount, a currency code and a fallback string, not as plain text.
Keep reading
Ready to get started?
Set up WhatsApp Coexistence in minutes, not months. The app keeps working on the phone.
Start Free TrialVerified on