> ## 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.

# Template Rejection

> Diagnosing and resolving Meta template rejections and paused templates in Galantis.

Template rejection is one of the most common issues merchants encounter. Meta rejects templates that do not comply with its content policies, category requirements, or structural rules. A rejected template cannot be used in campaigns or automations until the issue is resolved and the template is resubmitted and approved.

This guide covers how to find the rejection reason, the most common causes, and exactly what to fix before resubmitting.

## What this covers

* Where to find the rejection reason
* All common rejection causes and how to resolve each
* How to resubmit after fixing the issue
* What to do when a previously approved template is paused

## Step 1 — Find the rejection reason

<Steps>
  <Step title="Open the rejected template">
    Go to **Templates** in the Galantis dashboard and locate the template with `REJECTED` status.
  </Step>

  <Step title="Open the status detail">
    Click into the template and navigate to the **Status** tab or section. Meta's rejection reason is displayed here — it identifies the specific policy or structural issue that caused the rejection.
  </Step>

  <Step title="Read the full rejection reason">
    Read the rejection reason carefully before making any changes. Fixing the wrong thing and resubmitting wastes the review cycle and delays your campaign. Meta's rejection reasons are specific — they name the component and the violation.
  </Step>
</Steps>

<Warning>
  Resubmitting a template without addressing the rejection reason will result in another rejection. Repeated submissions of the same non-compliant content may affect your template submission standing with Meta.
</Warning>

## Common rejection causes

<AccordionGroup>
  <Accordion title="Misleading category" icon="folder-xmark">
    **What it means:** The template content does not match the declared category. A promotional message was submitted as Utility, or a transactional message was incorrectly submitted as Marketing.

    **Most common form:** A template with discount codes, sale language, or promotional CTAs submitted under the `UTILITY` category to benefit from lower per-message pricing.

    **How to fix:**

    * If the message is promotional — it offers a discount, announces a product, or asks the customer to buy something — change the category to `MARKETING`
    * If the message is genuinely transactional but was mistakenly categorized — an order confirmation submitted as Marketing — change to `UTILITY`
    * Review the full decision guide in [Templates — Categories](/whatsapp/templates/template-categories) if you are uncertain which category applies

    **How to avoid next time:** Apply the single-question test before submitting: "Would the customer benefit from receiving this message even if they were not being asked to buy something?" If yes — Utility. If no — Marketing.
  </Accordion>

  <Accordion title="Missing or empty variable examples" icon="brackets-curly">
    **What it means:** One or more `{{N}}` variable placeholders in the template body or header do not have example values provided. Meta requires concrete sample content for every variable.

    **How to identify:** The rejection reason will reference specific variable positions — e.g., "Variable example missing for `{{2}}`."

    **How to fix:**

    * Open the template builder and locate each `{{N}}` placeholder
    * Provide a realistic example value for each variable — not a generic placeholder like `[name]` or `VALUE`, but actual representative content:
      * `{{1}}` for `customer.first_name` → example: `María`
      * `{{2}}` for `order.total_price` → example: `$349.00`
      * `{{3}}` for a discount code → example: `VERANO20`
    * Ensure no variable position is left with an empty or placeholder example

    **How to avoid next time:** Before submitting any template, verify that every `{{N}}` has a filled-in, realistic example value.
  </Accordion>

  <Accordion title="Prohibited or restricted content" icon="ban">
    **What it means:** The template body, header, or button text contains content that violates WhatsApp's Business Policy — exaggerated claims, misleading offers, content from a restricted industry, or deceptive language.

    **Common examples:**

    * Superlative claims without substantiation: "The best prices guaranteed", "100% results"
    * Urgency language that is demonstrably false: "Only 1 left!" when inventory is not actually limited
    * Content from restricted categories: alcohol, gambling, financial products, health supplements (with restrictions varying by market)
    * Deceptive button URLs that navigate to a different destination than the button label implies

    **How to fix:**

    * Remove or rewrite the flagged content
    * Replace exaggerated claims with factual descriptions
    * Verify button URLs navigate to the destination the button label describes
    * Review Meta's WhatsApp Business Policy for your specific industry and market if you operate in a restricted category

    **How to avoid next time:** Write template copy as if it will be reviewed for factual accuracy — because it will be.
  </Accordion>

  <Accordion title="Incomplete variable sequence" icon="list-ol">
    **What it means:** Variable placeholders in the template skip a position number. For example, using `{{1}}` and `{{3}}` in the body without `{{2}}`. Meta requires variables to be sequential starting from `{{1}}`.

    **How to fix:**

    * Review the template body and identify all `{{N}}` placeholders
    * Renumber them sequentially: `{{1}}`, `{{2}}`, `{{3}}` — no gaps
    * Update the example values to match the renumbered positions
    * Update any campaign or automation variable mappings that reference the old position numbers after resubmission

    **How to avoid next time:** When editing an existing template and removing a variable, renumber all subsequent variables rather than leaving a gap.
  </Accordion>

  <Accordion title="Invalid button configuration" icon="rectangle-list">
    **What it means:** One or more buttons in the template have an invalid configuration — an incorrectly formatted URL, an invalid phone number format, an unsupported button type combination, or a missing required field.

    **Common examples:**

    * `URL` button with a malformed URL (missing protocol, contains spaces, or uses an unsupported URL scheme)
    * `PHONE_NUMBER` button with a phone number that is not in international format (`+` prefix and country code)
    * `COPY_CODE` button with an empty code value
    * Incompatible button type combinations (Meta has restrictions on which button types can appear together)

    **How to fix:**

    * Open the template builder and check each button configuration
    * For URL buttons: ensure the URL starts with `https://` and is a valid, reachable URL
    * For phone number buttons: format the number in full international format including `+` and country code
    * For copy code buttons: ensure the code field is populated with a non-empty value
    * Remove any button type combinations that Meta does not support

    **How to avoid next time:** Test all button URLs before submitting to confirm they resolve correctly.
  </Accordion>
</AccordionGroup>

## Resubmitting after fixing

<Steps>
  <Step title="Make the required changes">
    Edit the template in the Galantis template builder. Address every issue identified in the rejection reason — not just the most obvious one. If the rejection lists multiple issues, fix all of them before resubmitting.
  </Step>

  <Step title="Review the full template">
    Before resubmitting, read the complete template as if you are a Meta reviewer seeing it for the first time. Confirm the category matches the content, all variables have examples, and all buttons are correctly configured.
  </Step>

  <Step title="Submit">
    Click **Submit**. The template returns to `PENDING_APPROVAL` status. Meta's review typically completes within minutes to a few hours.
  </Step>

  <Step title="Monitor approval">
    Status updates arrive automatically via Meta webhook — the template status in Galantis updates without manual polling. Watch for the status to move to `APPROVED` before scheduling campaigns or activating automations that use this template.
  </Step>
</Steps>

## When a previously approved template is paused

A template that was previously `APPROVED` and in active use can be paused by Meta if quality signals degrade after approval. When this happens, active campaigns referencing it will fail for new sends, and automation Action Nodes using it will return `FAILED` for customers who reach them.

**How to diagnose:**

* Go to **Templates → \[Template Name] → Status** and confirm the template is `PAUSED` rather than `APPROVED`
* Review Meta's reason for the pause if provided

**How to resolve:**

* Assess whether the issue is content-based (revise and resubmit), audience-based (review who is being targeted and whether the message is relevant), or frequency-based (adjust send cadence to reduce block rates)
* If the template content is sound and the issue is audience quality — recipients are blocking because the message is irrelevant to them — improve targeting rather than revising the template
* After addressing the root cause, edit and resubmit the template if content changes were needed

See [Templates — Quality](/whatsapp/templates/template-quality) for the broader context on how Meta evaluates live template quality and what signals lead to a pause.

## Related guides

* [Templates — Categories](/whatsapp/templates/template-categories) — Category selection rules and the decision guide
* [Templates — Creating Templates](/whatsapp/templates/creating-templates) — Variable examples and button configuration
* [Templates — Approval Lifecycle](/whatsapp/templates/approval-lifecycle) — Full status lifecycle reference
* [Templates — Quality](/whatsapp/templates/template-quality) — Why approved templates can be paused after going live
