Meetings
When a lead is interested, your agent can book the meeting itself, without leaving WhatsApp. It reads your real availability, offers a few slots in plain language, and creates the event in your calendar once the lead picks one. No cold link, no form.
Calendars you can connect
Section titled “Calendars you can connect”| Calendar | How it connects | What the agent needs from the lead |
|---|---|---|
| Calendly | Sign in with your Calendly account (a popup opens). | An email address, always. |
| Cal.com | Sign in with your Cal.com account (a popup opens). | An email address if your event type requires one; otherwise the meeting is booked on the lead’s WhatsApp number. |
| GoHighLevel | A private integration token and the Location ID of your sub-account. | Nothing extra: the meeting is booked on the lead’s WhatsApp number and the contact lands in your GHL pipeline. |
Connect your calendar
Section titled “Connect your calendar”- Open Settings, then Integrations, and find the calendar cards.
- Click Connect Calendly, Connect Cal.com or Connect GoHighLevel.
- For Calendly and Cal.com, sign in inside the popup and allow access. For GoHighLevel, paste your Private integration token and your Location ID (sub-account), then click Validate & connect.
- The card shows Connected with the name of the account.
For GoHighLevel, create the token in Settings, Private Integrations, with the calendars.readonly, calendars/events.write and contacts.write scopes. The Location ID is in the URL of your sub-account.
One calendar per provider is connected for the whole workspace. Every campaign then picks its own event type. Disconnect removes the connection; campaigns that used it fall back to sharing a link.
Turn on booking for a campaign
Section titled “Turn on booking for a campaign”- Open the campaign and expand the In-chat booking section.
- Turn on Enable in-chat booking for this campaign.
- Under Event type to book, pick the event type (or the GoHighLevel calendar) the agent should book. Click Refresh if you just created it.
- Adjust the settings below if needed. Everything is saved automatically.
| Setting | Default | Range |
|---|---|---|
| Slots offered per message | 3 | 1 to 5 |
| Window (days): how far ahead to look for availability | 14 | 1 to 30 |
| Timezone shown to the lead | Europe/Paris | any |
| Hold (min): how long a proposed slot is kept aside | 5 | 1 to 30 |
| Fallback link | the event’s public link | any URL |
The panel What the agent will do with this event reads your event type and tells you its duration, its place, and whether the email and the phone are Required, Optional or Not asked. Change those on the calendar side, not in WhatSetter.
If the calendar is not connected, the section says so and sends you to Integrations.
How the agent proposes slots
Section titled “How the agent proposes slots”- Slots come from your real availability, within working hours (9:00 to 19:00 in the campaign’s timezone), never less than 2 hours ahead.
- The agent writes them in the language of the conversation, in the lead’s timezone when known (“Tuesday at 2pm or Thursday morning?”), never as a numbered menu.
- If the lead prefers another day or time, the agent re-checks availability and proposes again.
- After 2 refusals, or as soon as the lead asks for it, the agent shares the booking link instead.
- When the event type requires an email, the agent asks for it before confirming. Otherwise it books on the lead’s WhatsApp number.
The wording, tone and length stay those of your prompt. The booking logic only feeds the agent facts: which slots are free, what is still missing.
What “booked” means
Section titled “What “booked” means”The meeting is created in your calendar, with the lead as attendee, only once the calendar confirms it. The lead’s meeting status then becomes Booked, independently of its qualification status: a lead can be qualified without a meeting, or booked and still in conversation.
| Meeting status | Meaning |
|---|---|
| Not booked | No slot has been offered yet. |
| Offered | Slots were proposed, the lead has not picked one. |
| Booked | The meeting exists in your calendar. |
| Held | You marked the meeting as held. |
| Cancelled | The lead cancelled it in the conversation, or you marked it cancelled. |
| No-show | You marked the lead as absent. |
| Expired | The proposed slots passed without an answer. |
Once a meeting is booked, the agent stops proposing slots: it answers the lead normally and never repeats the confirmation.
Reschedule or cancel
Section titled “Reschedule or cancel”From the conversation, the lead can do both:
- to cancel, the agent asks for an explicit confirmation first; nothing is cancelled until the lead confirms;
- to reschedule, the agent proposes new slots; the original meeting stays in your calendar until the new one is confirmed.
From the dashboard, you can mark a booked lead as Held, No-show or Cancelled on its record. This updates your CRM only; it does not touch the calendar. Cancel and reschedule from your calendar tool when you need to change the event itself.
Follow your meetings
Section titled “Follow your meetings”- In Leads, the Meetings booked view lists every lead with a meeting. Add the Meeting column or filter on it to see the status. The lead record shows the date and a Reply in Conversations link.
- In Analytics, the funnel shows a Booked step as soon as booking is enabled on a campaign.
- Through the API, GET /bookings returns every booking with its slot, attendee and the cancel and reschedule links.
No email or WhatsApp message is sent to you when a meeting is booked; your calendar tool’s own notifications apply.
Booking per A/B variant
Section titled “Booking per A/B variant”When booking is enabled on the campaign, each behavior variant gets an AI appointment booking switch in the prompt editor. Turn it off on one variant to compare “books in the chat” against “qualifies only”: when it is off, make sure that variant’s prompt does not promise to schedule a call. See A/B variants.

