Calendar booking
Offer real open times from Cal.com or Calendly in the prospect's timezone, book the time they pick through the provider, and follow up within set bounds.
Calendar booking turns "can we talk next week?" into a booked call. It reads open times from your own Cal.com or Calendly account, writes them into the reply in the prospect's timezone, recognises the time they pick, and books it through the provider, which sends the invite with the video link. If they go quiet, it follows up a few times and then stops.
It is off by default, on the instance (AYINBOX_BOOKING, see configuration) and in each workspace.
To book from your own code, follow the book a meeting from a reply recipe. For the approach in general, read booking meetings from cold email replies.
What you need
- A Cal.com or Calendly connection with Booking access: an API key (Cal.com) or a personal access token (Calendly) pasted on the connection. AY Inbox checks the key, stores it sealed, and never shows it again. A self-hosted Cal.com also takes its base URL.
- On Calendly, a paid plan that includes the Scheduling API.
- A booking type in Settings, Booking: the event type the agent books into, with its offer rules.
- An AI provider and a paid plan for drafts written by the model. Without them, every message is a short template, and booking still works.
AY Inbox never touches your calendar. The provider reads Google or Outlook on its side, applies your availability rules, refuses conflicts, attaches the video link and sends the invite.
Booking types
A booking type names one event type on one connection, plus how times are offered:
| Setting | Default | Range |
|---|---|---|
| Times per offer | 3 | 1 to 5 |
| Minimum notice | 4 hours | 0 to 14 days |
| How far ahead | 10 days | 1 to 31 days |
| Prospect hours | 9:00 to 18:00 | 0 to 24, in the prospect's zone |
| Language of the times | English | English, French, German, Spanish |
One type can be the default, and each campaign can have its own. An event type the agent cannot fill in is refused when you add it, with the reason: it requires the host to confirm each booking, requires the invitee to verify their email, has a required question, needs a phone number, uses seats, or asks the invitee for a location. Make a dedicated event type for the agent without those.
Every type is checked again once a day and whenever booking is turned on. A refused key, a lapsed plan or a changed event type marks it unusable until it is fixed, and open offers on it stop or wait for a person.
Modes
| Mode | What happens |
|---|---|
| Off (default) | Nothing changes. Offer times in the composer still works |
| Draft for me | Offers and follow-ups wait in the inbox as drafts. A detected pick waits for a click on Book it, and that click also sends a short confirmation in the thread (send_confirmation: false on the API books without it) |
Turning on draft mode needs Manage settings and Use AI. Running booking without a click, inside campaigns on automatic auto-reply, is not available on this release: POST /booking/auto reports what is missing.
What the prospect sees
Lea replies "Interesting, can we talk next week?". A draft appears on the thread:
Hi Lea, happy to. Here are a few times on our side:
1. Tue 10 Nov, 10:00
2. Tue 10 Nov, 15:30
3. Wed 11 Nov, 09:30
Those are Berlin time (GMT+1). Reply with the one that suits you and I'll send the invite.Once a teammate sends it, she answers "Option 2 works". The thread shows They picked Tue 10 Nov, 15:30 with Book it. The click books it on the provider, which sends Lea the invite, and a short confirmation is sent in the same thread.
- If the time was just taken, the nearest open times are written as a new draft, and nothing is booked.
- If she proposes her own time ("Would 2pm on the 22nd work?") and it is open, it waits for a click like any pick.
- If she answers with a scheduling link of her own, nothing is offered: the mailbox owner gets a task to book through her link, and the reply takes the normal path.
- One booking runs per offer at a time: a second Book it while the first is being confirmed is refused.
- No message ever carries an address, and the invite always goes to the contact's stored address.
- A reply that asks to stop never starts an offer, whatever the classifier read. That includes a reply that is only an opt-out command such as "STOP", "remove me" or "unsubscribe".
Timezones
Times are written in the prospect's zone, chosen from the first of: a zone they named in the reply, one a teammate picked, the contact's timezone field, the offset in their email's Date header, their email domain's country, then the campaign's or workspace's zone. Every offer names the zone and its offset in words. When the zone is a guess, the offer says so and asks them to correct it; a correction re-writes the same times in their zone. A pick maps to the exact instant offered, and the invite shows it in their own calendar's zone.
A zone the contact states is written to their timezone field only when it is empty.
Recognising a pick
A reply can only select among the offered times or a time verified open on the calendar. Nothing in an email can change the attendee, the event type, the mailbox or the mode, and a pick counts only from the contact's own address.
- Clear picks: "option 2", "#2", "the second one", or a full day and time naming one offered slot with a positive word ("Tuesday 15:30 works").
- Partial picks: a day alone, a time alone, or "any of those" naming one slot. The card shows the slot it points at.
- Conditions and negations decline to a person, in English, French, German and Spanish: "Tuesday I'm out", "10:00 is too early", "option 2 if that's still open", "maybe the first one".
- With inbox tagging configured, a typed reading settles replies the rules above do not.
Anything unclear goes to Needs you with the reason. Every decision is recorded with the words it rests on, readable on the thread with inbox access.
Follow-ups
When an offer goes out and nobody answers, up to 3 follow-ups (0 to 5) are drafted over 14 days (1 to 30), on business days 2, 3 and 4 after the previous one, inside the prospect's working hours, each with fresh times. The last says it is the last. A follow-up waits for its draft to be sent before the next one is due.
Follow-ups stop at: a no, "not now", wrong person, an unsubscribe or suppression, a bounce, a teammate replying by hand, any meeting appearing for the contact (including one they booked through your link), the limit or the window, or booking being turned off. While an offer is open, the contact's other campaigns hold so cold steps do not talk over it, and so does the offer's own campaign when it keeps sending after a reply.
A meeting the agent books is linked to the contact like any other booking, so it ends the contact's cold sequence in every campaign with stop on meeting booked on, which is the default. A campaign with the setting off holds the contact until 14 days after the meeting starts instead; the offer's own campaign holds too unless it stops on reply.
A follow-up waits while the workspace may not send, while the mailbox owner is banned, or while the mailbox is disconnected or needs signing in again. The offer stops after 7 days of the first two, or 72 hours of a disconnected mailbox.
In the inbox
The thread shows a booking card above the drafts: the times offered and the next follow-up, a pick waiting with Book it and Not that, a case that needs you with the reason, the booked meeting, or why it stopped. Stop ends it; Offer times again reopens a stopped one.
Offer times in the reply composer lists open times in the recipient's zone. Pick some, or none to let AY Inbox choose, and Insert drops the block into your reply. The offer starts only when that reply is sent.
Limits and costs
- At most 12 messages and 8 model calls per offer, typed readings included; past either it waits for a person or falls back to templates.
- A model-written offer or answer costs the same as an inbox agent draft; a model-written follow-up costs 2 credits; a typed reading of a pick, or reading a time they proposed, costs 1. A message is charged once, even when its step runs again after a restart. Templates, deterministic picks, confirmations and provider calls are free. See AI credits.
- Out of credits, messages fall back to templates and booking still works.
Data and retention
Offers, the times offered, booking attempts and the decision log stay for 365 days after an offer closes. Booked meetings stay with your meetings. The attendee's email, name and zone go to your scheduling provider when a time is booked. See data control.
Frequently asked questions
Which calendars does AY Inbox booking work with?
Cal.com, including a self-hosted Cal.com, and Calendly on a paid plan with the Scheduling API. AY Inbox books through the provider, which reads your Google or Outlook calendar and sends the invite.
Does AY Inbox book meetings without asking me?
No. In Draft for me mode, offers and follow-ups wait in the inbox as drafts, and a detected pick waits for a teammate to click Book it.
What timezone are offered times written in?
The prospect's, chosen from a zone they named, the contact's timezone field, their email's Date header, their domain's country, then the campaign's or workspace's zone. When the zone is a guess, the offer says so.
How many follow-ups does booking send?
Up to 3 follow-ups by default, configurable from 0 to 5, over 14 days, each with fresh times. They stop on a no, an unsubscribe, a bounce, a teammate replying by hand or any meeting appearing for the contact.