# How to use Template Status Update Webhook

Your team creates a WhatsApp template for an upcoming campaign. It gets submitted for Meta's approval. And then — silence. No one knows when it will be approved, whether it was rejected, or why. Someone checks manually the next day and discovers it was rejected hours ago. The campaign is delayed. The fix that could have been made immediately now costs the team an entire day.

The **Template Status Update Webhook** eliminates this wait entirely. The moment any template's status changes — approved, rejected, or paused — this webhook fires and sends the full details to your connected system instantly.

***

#### <mark style="color:$primary;">**What Is the Template Status Update Webhook?**</mark>

Every WhatsApp template you create in DoubleTick goes through a lifecycle. It is submitted, then either approved, rejected, or in some cases paused. The **Template Status Update** webhook fires every time this status changes — capturing exactly what changed, which template was affected, and who created it.

Think of it like a real-time notification system for your template pipeline. Instead of manually checking whether a template was approved, your system is told automatically the moment anything changes.

***

#### <mark style="color:$primary;">**When Does This Webhook Trigger?**</mark>

This webhook activates whenever a template status changes, including:

* A submitted template is **approved**
* A submitted template is **rejected**
* An approved template is **paused**

***

#### <mark style="color:$primary;">**Step-by-Step Setup Guide**</mark>

<figure><img src="https://2303112206-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F53n17VnOICC1LtDqlENV%2Fuploads%2FumjHlzrTJbpoko32E99x%2FUntitled%20design%20-%202026-04-07T120752.439.gif?alt=media&#x26;token=f8d7b44f-a6fb-40f9-a32f-cdd42f47883c" alt=""><figcaption></figcaption></figure>

#### <mark style="color:$primary;">**Step 1: Open Webhooks in DoubleTick**</mark>

1. Log in to your DoubleTick account
2. Go to **Settings**
3. Click on **Webhooks**

#### <mark style="color:$primary;">**Step 2: Create a New Webhook**</mark>

1. Click **New Webhook**
2. Give it a clear name — for example: `Template Status Tracker`

#### <mark style="color:$primary;">**Step 3: Get Your Webhook URL**</mark>

You need a destination URL — this is where DoubleTick will send the template status data every time something changes.

You can connect it to:

* A **CRM** like Zoho, HubSpot, or Salesforce
* An **automation tool** like Zapier or Pabbly
* A **spreadsheet** like Google Sheets
* Your own **backend or internal system**

**For testing purposes**, you can use DoubleTick's **Bot Studio** to capture and preview the data first:

1. Open a new tab and go to **Bot Studio**
2. Click **Create New Bot**
3. Set the trigger to **On Webhook**
4. **Copy the webhook URL** that appears

#### <mark style="color:$primary;">**Step 4: Fill in Webhook Details**</mark>

1. Go back to the **Webhooks** page
2. Paste the webhook URL
3. Select your **API Number** (your WABA/WhatsApp Business number)
4. Click **Continue**

#### <mark style="color:$primary;">**Step 5: Choose the Event**</mark>

1. Select **Template Status Update** from the event list
2. Click **Create Webhook**

Your webhook is now live and tracking every template status change in real time.

***

#### <mark style="color:$primary;">**How to Test It**</mark>

1. Create a new template in DoubleTick and submit it for approval — or wait for an existing template's status to update
2. Go to **Bot Studio → Capture Response → View Response Data**

You will see all the template details captured at the exact moment the status changed.

***

#### <mark style="color:$primary;">**What Data Do You Receive?**</mark>

When this webhook fires, it sends the following information to your system:

| Field             | What It Tells You                                                        |
| ----------------- | ------------------------------------------------------------------------ |
| Event             | Confirms this is a template status update event                          |
| Agent Name        | The name of the team member who created the template                     |
| Agent Number      | The phone number of the agent who created it                             |
| Template Name     | The name of the template whose status changed                            |
| Template Language | The language the template was created in                                 |
| Old Status        | What the template status was before the change — null if newly submitted |
| New Status        | What the template status has changed to                                  |
| Rejected Reason   | The specific reason Meta rejected the template — null if not rejected    |
| WABA Phone Number | The WhatsApp Business number associated with the template                |

The **rejectedReason** field is particularly valuable. When a template is rejected, this field tells you exactly why — so the right person can fix it and resubmit immediately rather than guessing what went wrong.

***

#### <mark style="color:$primary;">**Sample Payload:**</mark>&#x20;

**When a Template Is Submitted**

{% code expandable="true" %}

```json
{
  "event": "TEMPLATE_STATUS_UPDATE",
  "agentName": "Ruchi Dalvi",
  "newStatus": "PENDING",
  "oldStatus": null,
  "agentNumber": "919372139459",
  "templateName": "salon_template",
  "rejectedReason": null,
  "wabaPhoneNumber": "917977814832",
  "templateLanguage": "en"
}
```

{% endcode %}

**When a Template Is Approved**

{% code expandable="true" %}

```json
{
  "event": "TEMPLATE_STATUS_UPDATE",
  "agentName": "Ruchi Dalvi",
  "newStatus": "APPROVED",
  "oldStatus": "PENDING",
  "agentNumber": "919372139459",
  "templateName": "salon_template",
  "rejectedReason": null,
  "wabaPhoneNumber": "917977814832",
  "templateLanguage": "en"
}
```

{% endcode %}

**When a Template Is Rejected**

{% code expandable="true" %}

```json
{
  "event": "TEMPLATE_STATUS_UPDATE",
  "agentName": "Ruchi Dalvi",
  "newStatus": "REJECTED",
  "oldStatus": "PENDING",
  "agentNumber": "919372139459",
  "templateName": "salon_template",
  "rejectedReason": "Template content violates WhatsApp commerce policy",
  "wabaPhoneNumber": "917977814832",
  "templateLanguage": "en"
}
```

{% endcode %}

A few things to note across these three payloads:

* **oldStatus** is null when the template is first submitted because there was no previous status
* **rejectedReason** is null for pending and approved statuses and only carries a value when the template is rejected
* **newStatus** moves from PENDING to APPROVED or PENDING to REJECTED depending on Meta's review outcome

***

#### <mark style="color:$primary;">**Real-Life Business Use Case: A Performance Marketing Agency Eliminating Campaign Delays Caused by Template Rejections**</mark>

**The Situation**

A performance marketing agency manages WhatsApp campaigns for multiple client brands. Every campaign depends on templates being approved before the send date.

**The Problem**

Template rejections were happening silently. Team members would submit a template, assume it was approved, and only discover it was rejected when they went to schedule the campaign — sometimes the day before it was due to go out. By then, there was barely enough time to fix, resubmit, and get re-approval. Campaigns got delayed, clients got frustrated, and there was no clear trail of who had created which template and who was responsible for fixing it.

**How the Template Status Update Webhook Solves This**

The agency connects this webhook to their internal system.

The moment a template is approved, the campaign is automatically marked as ready to send. If a template is rejected, an instant alert goes to the agent who created it — along with the exact rejection reason from the webhook data — so they can fix and resubmit within minutes. Every status change is logged automatically in a shared Google Sheet, giving the team lead a live view of every template's status across all clients.

**The Result**

* Rejections are caught and fixed within minutes — not discovered the day before a deadline
* Agents are notified immediately with the exact reason for rejection — no guesswork
* Campaign delays caused by undetected rejections are eliminated
* The team lead has a real-time status view across all client templates without manually checking anything

***

#### <mark style="color:$primary;">**Summary**</mark>

The Template Status Update Webhook keeps your team informed about every template the moment its status changes. Approvals trigger campaigns. Rejections trigger immediate fixes. Nothing sits unnoticed in a queue while a campaign deadline approaches. For any team that depends on templates being approved on time, this webhook is the difference between proactive management and last-minute scrambling.

Set it up once, and your template pipeline runs itself.
