Meta validates the submitted structure as well as the visible message.

Variable formatting

Named variables use lowercase letters, numbers, and underscores inside double braces, such as {{customer_name}}. Numbered variables use {{1}}, {{2}}, and so on.

Variable placement

Do not start or end the body with a variable. Add meaningful surrounding text and provide a sample for every variable.

Language and template identity

The campaign must use the exact approved name and language code on the same WABA. Sync after Meta review.

Buttons

Static URL buttons need no parameter. Dynamic URL, offer code, and Flow buttons must supply only the expected value. See error 132018.

Status

Draft, Pending Review, Rejected, Paused, and Disabled templates cannot be used as if they were Approved.