What this covers
- The four template components and their options
- How to create and submit a template
- Variable placeholder syntax
- Component requirements and limits
- Submission behavior and what happens after
Creating a template
1
Open the template builder
Go to Templates → New Template in the Galantis dashboard.
2
Set the category
Select Marketing or Utility. This must be set before building the template content — it is a declaration of intent that Meta evaluates against your message. See Template Categories if you are unsure which applies.
3
Set the language
Select the language code for this template (e.g.,
en, es, pt_BR). Each template is tied to a single language. If you need the same message in multiple languages, create separate template records — one per language.4
Build the template components
Configure the header, body, footer, and buttons as described below.
5
Preview and submit
Review the assembled template in the preview panel. When ready, click Submit to send it to Meta for review. The status changes to
PENDING_APPROVAL immediately.Template components
Header (optional)
The header appears above the body text. It is optional but strongly recommended for templates that use image or product formats — a text-only template without a header is valid but may perform less well visually.- TEXT
- IMAGE
- VIDEO
- DOCUMENT
- PRODUCT
- LOCATION
A single line of plain text. Supports one optional variable placeholder (
{{1}}).Use for: subject-line-style context above the body — store name, offer headline, or a personalized greeting that would feel redundant in the body.Body (required)
The body is the main text of the message. It is the only required component — a template with only a body and no header, footer, or buttons is valid. Variable placeholders are defined in the body using positional syntax:{{1}}, {{2}}, {{3}}. Each placeholder is mapped to a customer or order data field when the template is used in a campaign or automation. Variable positions must be sequential starting from {{1}} — gaps in the sequence (e.g., using {{1}} and {{3}} without {{2}}) will cause submission to fail.
Rich text — the body supports bold (*text*), italic (_text_), and strikethrough (~text~) formatting.
Meta requires that all variable placeholders in a submitted template include example values — concrete sample text that demonstrates what the variable will contain at send time. Submitting a template with empty variable examples is a common rejection cause. Fill in realistic example values for every
{{N}} placeholder before submitting.Footer (optional)
A short line of static text below the body. Does not support variables. Character limit applies — keep it brief. Common uses:- Opt-out instruction:
Reply STOP to unsubscribe - Brand tagline
- Legal or compliance notice
Buttons (optional, up to 3)
Buttons appear below the footer and give the customer a tappable action. Up to three buttons can be added per template, but all buttons must be of compatible types — not all button type combinations are supported by Meta.- QUICK_REPLY
- URL
- PHONE_NUMBER
- COPY_CODE
A tappable reply button that sends a predefined text response back to your WhatsApp number when the customer taps it.Use for: simple binary responses (“Yes, I’m interested” / “No thanks”), feedback collection, or opt-in confirmation flows.The reply text is defined at template creation time and is fixed — it cannot be personalized per recipient.
Submission and what happens next
When you click Submit, Galantis sends the template to Meta’s Template API. The template status changes toPENDING_APPROVAL and Meta begins its review.
Meta reviews templates for:
- Category accuracy — does the content match the declared category?
- Variable example completeness — are all
{{N}}placeholders accompanied by example values? - Content policy compliance — does the message contain prohibited content?
- Button configuration validity — are the button types and values correctly formed?
Best practices
- Write the body copy first, then set variables. Decide what the message says before deciding what to personalize — over-using variables produces awkward, robotic-feeling messages.
- Always include example values for every variable placeholder. Empty examples are a rejection trigger. Use realistic values that reflect actual customer data —
Sarahforcustomer.first_name,$89.00fororder.total_price. - Keep footer text genuinely brief. The footer competes with the body for the customer’s attention.
Reply STOP to unsubscribeis ideal — anything longer reduces the clarity of the main message. - Test button URLs before submitting. A URL button linking to a broken or redirecting URL is a poor first impression and may affect quality signals. Verify all URLs are live and landing on the intended destination.
- Do not resubmit a rejected template without addressing the rejection reason. Repeated submissions of the same rejected content signals disregard for Meta’s policies and may affect your account standing.
Related guides
- Template Categories — Choosing the correct category before building
- Template Formats — Structural format options beyond the standard layout
- Variables & Localization — Variable placeholder mapping and language management
- Approval Lifecycle — What happens after submission