## Overview

Delivery of **confirmations and reminders** from the Calendar is **channel-aware**: ConversaLabs picks the
best way to reach the customer based on where they are and each channel's rules.

- **Email**: sent **whenever** the contact has an email and **SMTP** is configured — it carries the
  appointment details, the **.ics** file and the **manage links** (reschedule/cancel).
- **WhatsApp Web**: the customer gets a **native WhatsApp event** (with the Meet link in the
  description). There is no 24-hour window on this channel, so **no approved template is needed**.
- **WhatsApp Cloud inside the 24h window**: if the customer messaged you in the last **24 hours**, the
  notice goes as a **session message** (free-form text, no template). Since **2026-10-01** it counts as
  a Meta **service message**. The platform estimates it as free within the number's allowance of
  **1,000 service messages per month** and with a cost after it. Estimated monthly allowance; Meta does not publish this limit in the documentation tracked here.
- **WhatsApp Cloud outside the 24h window**: once the window has **closed**, the message can only go as
  an **approved template** (HSM) of the official API — which is why you pick the template to use.

> **A single WhatsApp switch.** In the dashboard, WhatsApp is enabled in **Delivery → Send on WhatsApp**
> — there is no second WhatsApp toggle in Side effects. That switch controls the **text notification**
> (a session message on Web/Cloud, an approved template outside the window) and is **opt-in**, because
> outside the 24h window it sends a **paid** template and, on Cloud, the session message also has a
> projected cost after the estimated monthly service-message allowance. Actual billing depends on Meta's report.
>
> The **native WhatsApp Web event** is a separate object: it is **free**, it has **its own switch** under
> **Agenda › Settings › Booking side-effects**, and it ships **off**. This Delivery section does not enable it
> — Delivery governs the confirmation text and the reminders. They are independent controls. Turning Delivery on
> keeps it on, but you do not have to enable anything to keep receiving the event — installs that used
> the Calendar before this release lose nothing.

## Prerequisites

- **Calendar** module enabled and the booking **confirmed**.
- For **email**: **SMTP** configured and an email on the contact.
- For **WhatsApp**: a **WhatsApp inbox** (Web or Cloud) and a **conversation** with the contact.
- For **WhatsApp Cloud outside the window**: an **approved template** for reminder/confirmation.

## Step by step

1. Open the **Calendar settings** and go to **Delivery**.
2. Turn on the channels you want: **Send by email** and **Send on WhatsApp**.
3. In **WhatsApp inbox**, pick the inbox (Web or Cloud) used for the notices.
4. (WhatsApp Cloud) Under **WhatsApp Cloud templates**, select the **approved template** for each notice
   (Reminder, Confirmation, Reschedule, Cancellation) and **map its variables** (contact name, title,
   date/time).
5. Save. For each notice ConversaLabs decides on its own: native event (Web), session (Cloud inside 24h) or
   template (Cloud outside the window) — and sends the **email** when applicable.
6. Make a test booking and check delivery on each channel.

> **Per event type.** Delivery can also be customized per type: on the event type, the **Delivery**
> section starts as *Inherits the account default*; turn on **Customize** to use a different inbox or
> different templates for that type only, and **Reset to account default** to undo it.

### Create a scheduling template (WhatsApp Cloud)

If you don't have an approved template yet, use **+ Create template** next to each notice (available on
**WhatsApp Cloud** inboxes with the WhatsApp feature suite enabled).

1. Pick the **language** (pt_BR, English or Spanish) and confirm.
2. ConversaLabs creates a **UTILITY** template with the notice text plus a **"Manage booking" button**
   carrying the link — and submits it to Meta for approval.
3. **Approval is asynchronous**: it can take from **a few minutes to a few hours**.
4. Track the **status** in the inbox's **Templates** tab. While it is *Pending* it does **not** show up
   for selection.
5. Once it is **Approved**, click **Sync from WhatsApp** and select the template here.

> **Why is the link in a button?** Meta **rejects** templates whose body **ends with a variable**, and
> bare links in the body are more likely to be refused. So the manage link lives in a **URL button**,
> filled automatically with the booking's link at send time.

## Settings & options

| Channel / situation | How it is delivered |
|---|---|
| **Email** | Whenever there is an email + SMTP. Includes the **.ics** and **manage links**. |
| **WhatsApp Web** | **Native WhatsApp event** (Meet in the description). No window, no template. |
| **WhatsApp Cloud — inside 24h** | **Session message** (free-form text), the window is open. Since 2026-10-01 it is a service message: the estimate treats it as free within the number's estimated monthly allowance and with a cost after it; actual billing depends on Meta. |
| **WhatsApp Cloud — outside 24h** | **Approved template (HSM)** with the mapped variables. |

- **Send on WhatsApp**: enables WhatsApp notices. The native Web event has its own switch under Booking side-effects.
- **WhatsApp inbox**: which inbox sends the calendar notices.
- **Templates (Cloud)**: one approved template per notice kind, with its variables mapped.
- **URL button**: the manage link is filled automatically at send time.

## Use cases

- Confirm on **WhatsApp** right after booking and reinforce by **email** with the .ics.
- Remind **24h before** via an approved template, even if the customer hasn't written in days (Cloud).
- Send the **native event** on WhatsApp Web, which lands straight in the customer's calendar.
- Use different templates on one specific event type without touching the account default.

## Tips, limits & best practices

- Keep **email** on as a safety net: it always goes out and carries the **.ics**.
- For **WhatsApp Cloud**, have an **approved template** ready — without one, sends outside the 24h
  window don't happen (email still covers the notice).
- The **24h window** counts from the **customer's last message**; inside it the text is free-form.
  On **WhatsApp Cloud** that message uses no template, but since 2026-10-01 it is a **service message**:
  the estimate treats it as free up to the month's 1,000 and with a cost after that, without confirming
  that limit as a Meta rule. Track it
  in the [WhatsApp cost center](/hc/ajuda/articles/reports-whatsapp-cost-center-en).
- A **utility template** sent while the window is open is also billed since 2026-10-01.
- **UTILITY** templates are the right category for reminder/confirmation — avoid marketing categories.
- Check the **timezone** so the date and time in the notice match what was agreed.

### Disconnected Web session and safe recovery

For a hybrid inbox, a recent confirmed Web disconnection makes Calendar text notifications use the Cloud format: a URL button within the 24-hour window or the configured approved template outside it. Without an available template outside the window, the WhatsApp notification is not sent; email follows its configuration. Unknown health is not treated as a confirmed disconnection.

After reconnection, the platform may retry **the same notification message** definitively rejected because the Web session was unavailable, at most once. Recovery is limited to 24 hours, before the appointment starts, while the event and booking remain active and their start time is unchanged. Cancellation notifications are not recovered this way.

An attempt, provider acceptance and delivery to the customer are separate facts. An unknown send outcome, or a later confirmation identifying an already sent message, never authorizes an automatic resend. This prevents duplicate notifications.

When WhatsApp Web is disconnected, a reminder uses WhatsApp Cloud when configured; the native event invitation waits for reconnection. The invitation has its own opt-in and is not replaced by a second Cloud notification or a new paid template. Only the same definitively rejected invitation can recover under the safety limits above.

## Troubleshooting

- **The template shows "Submission failed"**: Meta refused the format. The most common causes are body
  text **ending with a variable** or a **bare link in the body** — use **+ Create template**, which
  already builds the accepted format (text + URL button).
- **I created the template and it isn't in the list**: it only appears **after approval**. Check the
  status in the **Templates** tab and click **Sync from WhatsApp**.
- **The reminder didn't arrive on WhatsApp Cloud**: it was probably **outside the 24h window** with no
  **approved template** selected/mapped.
- **Only the email arrived**: the WhatsApp inbox may not be set, or there is no conversation yet.
- **Template variables came out empty**: review the **mapping** (contact name, title, date/time).

## See also

- [Reminders: timing and message (template with variables)](/hc/ajuda/articles/calendar-scheduling-lembretes-tempo-e-mensagem-en)
- [Booking side effects, reminders and notifications](/hc/ajuda/articles/calendar-scheduling-efeitos-do-agendamento-lembretes-notificacoes-en)
- [Reschedule, cancel, Google Meet and the .ics file](/hc/ajuda/articles/calendar-scheduling-reagendar-cancelar-meet-ics-en)
- [Calendar & Scheduling overview](/hc/ajuda/articles/calendar-scheduling-overview-en)