Templates are built in Galantis and submitted to Meta for review from the same interface. The template builder walks through each structural component — header, body, footer, and buttons — and lets you preview the assembled message before submitting. Once submitted, Meta reviews the template and returns an approval or rejection, typically within minutes to a few hours.Documentation Index
Fetch the complete documentation index at: https://docs.digifist.com/llms.txt
Use this file to discover all available pages before exploring further.
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
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.
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.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