Check the calendar itself, not the call
Free slots answers the exact question the agent asks, from outside the call:slots object is a real answer, and it is the answer the agent got.
Now change one thing at a time.
The two settings that empty a diary
1
Notice: minNoticeMinutes
The default is 180 minutes, shown as Minimum notice (minutes). On a
calendar open 09:00 to 17:00 with 30-minute appointments, the last slot
starts at 16:30, so nothing is offered for today after 13:30. A lead called
at 14:00 hears about tomorrow at the earliest. Re-read with


?minNoticeMinutes=30 to confirm that is what is doing it.

2
Hours: weeklyHours
A day left out of
weeklyHours is closed, not open, and shows as
Closed under Opening hours. A calendar carrying only mon offers
Monday and nothing else, unless a dated exception opens another day. Check
the days as well as the times.3
Then the rest
maxDaysOut caps how far ahead it will look, slotDurationMinutes has to
fit inside a window (a 60-minute appointment never fits a 09:00 to 09:30
window), slotBufferMinutes widens every booking, and dateOverrides can
close a specific day.Timezones
A calendar has its owntimezone, and that is what the opening hours mean.
Slots come back in it unless you ask for another with ?timezone=.
This matters most when the calendar’s zone and the contact’s differ. Hours of
09:00 to 17:00 on a calendar in America/Chicago are 15:00 to 23:00 for a
contact in Europe/London, and both are correct. Set the contact’s timezone
so calling windows and spoken times are theirs, and leave the calendar’s zone
as the business’s.
What the agent is reading on the call
Two different things, and the difference explains most “but the slot was free” reports.{{availability}}in the prompt is a snapshot, formatted and injected when the call starts. It does not change during the call.- The slot-finder tool, when the agent has it, reads a store refreshed around the call rather than that snapshot. A slot the agent locks mid-call is held immediately, so another call in progress stops offering it.
409.
When it is not availability
- The contact is on do-not-call. We never call them, so no times are
offered on a call we would have made. If they call you, the call is still
answered and the agent can offer times as usual. Check
doNotCallon the contact, in Contacts without a CRM. - The campaign names no calendar. An agent with nowhere to book does not offer times. The calendar is set on the campaign, or for a TFU Live agent, in its workflow’s Find slots step; see Calendars and booking.
- The appointment was refused, not the slot. A booking outside the hours
also comes back
409, but its message says the time is outside the hours rather than taken. That points at yourstartTime, not at the diary.
