## Overview

When a booking is **confirmed** (from the public page or created by an agent), the Conversa Labs
**Calendar** can trigger a set of automatic actions — the **booking side-effects**. Each one is
**independent** and can be **turned on or off** per account or per event type: open a **conversation**
with the contact, create a **task** with a reminder, link or create a **CRM deal**, send a
**confirmation email with an .ics file**, and send a **native WhatsApp event**.

On top of that, the Calendar sends **reminders** before the start time, can flag **no-show**
automatically, and produces distinct **notifications**: the **customer** receives the confirmation with
the .ics, and the **agent** receives an alert (email and in-app) for a new booking or a no-show, with a
deep link to the deal or the contact.

## Prerequisites

- The **Calendar** module enabled and a booking that reaches the **confirmed** state.
- For the **confirmation email** (.ics) and the agent notifications, **SMTP configured** on the account.
- For the **conversation** side-effect, at least one **inbox** (the Calendar uses the inbox assigned to
  the calendar, or the first available one).
- For the **CRM deal** side-effect, the **CRM** module active and a **default pipeline/stage** set when
  you want deals created automatically.
- For the **WhatsApp event** side-effect, the contact must have a **WhatsApp Web conversation**.
- For the **Google Meet** link in the invite, an active **Google connection** and the event type with Meet.

## Step by step

1. Open the **Calendar settings** (module gear).
2. In the **Booking side-effects** section, turn each effect on or off: conversation, task, CRM deal,
   email with .ics, and WhatsApp event.
3. In the **Reminders** section, set the **lead times** (in minutes before the start) and the
   **channels** (email and in-app). Default: **60** and **1440** minutes (1 hour and 24 hours).
4. Still in **Reminders**, optionally set **auto-no-show**: minutes after the start to flag a no-show.
   It is **off** by default.
5. For per-service rules, repeat the configuration on the **event type** (scope) — it overrides the
   account default.
6. Create a test booking and confirm the expected effects and reminders happened.

## Settings & options

**Booking side-effects (each toggles on/off, independent):**

| Effect | What it does | Default |
|---|---|---|
| **Conversation** | Finds or opens a conversation for the contact on the calendar's inbox and links the booking to it. | On |
| **Task** | Creates a task `Appointment: <title>` due at the start time plus an **in-app reminder**, linked to the contact and conversation. | Off |
| **CRM deal** | Links an existing **open deal** for the contact; if none, **creates** one in the default pipeline/stage (only when "create if missing" is enabled). | Off |
| **Email + .ics** | Sends the confirmation to the customer with the **.ics** attachment (adds it to the calendar) and the **Meet** link in the body. | On |
| **WhatsApp event** | Sends a **native WhatsApp event** (WhatsApp Web only) to the contact's conversation, with the Meet link in the description. It is **free** — no template, no 24h window. It has **its own switch** here in Booking side-effects and is **opt-in**: it ships off, and Delivery does not enable it (they are independent controls). Turn it on when you want the appointment to land in the customer's phone calendar, on top of the confirmation text. | Off |
| **Google Meet** | Generates the video-call link for the invite. | On |

**Reminders:**

- **Lead times** (`lead_times`): a list of minutes before the start — default **60** and **1440**. You
  can define as many as you want.
- **Channels**: **email** and **in-app** (both by default).
- **Idempotency**: each reminder fires **exactly once** per booking — queue re-runs never re-send the
  same reminder.
- **Scope**: per account or per **event type** (the event type overrides the account default).

**Auto-no-show:**

- **Minutes after the start** to flag a **no-show** automatically, if the booking is still confirmed.
  **Off by default** (set a value to enable it).
- Flags the booking **once** and emits the no-show event (automations/webhooks + agent alert).

**Notifications:**

- **Customer**: a **confirmation** email with the **.ics** (method `REQUEST` on confirmation/reschedule,
  `CANCEL` on cancellation) and the Meet link.
- **Agent**: a **new booking** and a **no-show** alert via **email and in-app**, with a **deep link** to
  the CRM deal (when present), otherwise the contact, otherwise the Calendar.

## Use cases

- Turn every confirmed booking into a **conversation + task + deal** with no manual work.
- Send the confirmation with the **.ics** so the appointment lands in the customer's calendar.
- Notify the customer on **WhatsApp** with a native event already carrying date, time and Meet link.
- Remind the customer **24 hours and 1 hour before** to reduce no-shows.
- Flag **no-show** automatically and open a follow-up when nobody attends.

## Tips, limits & best practices

- Effects run when the booking becomes **confirmed** — a draft or payment-pending booking does not fire
  the effects yet.
- Reminders and auto-no-show run on a **periodic background sweep** (near real time). Reminders are
  evaluated for events starting in the next **~48 hours**; no-show, for events that started in the last
  **~24 hours**.
- If you set a reminder whose time **has already passed** at booking, it is not re-sent — reminders only
  look forward.
- The **CRM deal** effect only **creates** a deal when "create if missing" is enabled **and** a default
  pipeline/stage exists; otherwise it only links an existing open deal.
- Keep **SMTP** configured: without it, the .ics email and the agent notifications are not sent.

## Troubleshooting

- **An effect did not fire**: confirm it is **enabled** in the right scope (account or event type) and
  that the **contact** exists. The conversation needs an inbox; the WhatsApp event needs a WhatsApp Web
  conversation.
- **The CRM deal was not created**: it is only created with **"create if missing"** enabled and a
  **default pipeline/stage** set; otherwise only an existing **open deal** is linked.
- **The task did not appear**: check that the **task** effect is on and that the booking has a valid
  start time.
- **Missing reminder**: the booking must be **confirmed** and start within the sweep window; check
  **SMTP** and that the lead time had not already passed at booking.
- **Duplicate reminder**: it should not happen — each reminder is **idempotent** (once per lead time).
  If you see repetition, check you do not have two identical lead times configured.
- **The agent did not get the notification**: confirm **SMTP** and that the agent has a valid **email**;
  the link points to the deal, otherwise the contact, otherwise the Calendar.

## See also

- [Calendar and bookings overview](/hc/ajuda/articles/calendar-scheduling-overview-en)
- [Reschedule, cancel, Google Meet and the .ics file](/hc/ajuda/articles/calendar-scheduling-reagendar-cancelar-meet-ics-en)
- [Public booking page](/hc/ajuda/articles/calendar-scheduling-pagina-publica-de-agendamento-en)
- [Event types, availability and buffers](/hc/ajuda/articles/calendar-scheduling-tipos-de-evento-disponibilidade-buffers-en)
- [Connect Google Calendar (OAuth) and sync](/hc/ajuda/articles/calendar-scheduling-conectar-google-calendar-en)