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. On a calendar that closes at 17:00, nothing
is offered for today after 14:00, and a lead called at 16: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. A calendar carrying
only mon offers Monday and nothing else, forever. 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. Nothing is dialled at all, so no
availability is ever read. 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 a campaign uses is set on the campaign; see Calendars and booking.
- The appointment was refused, not the slot. A booking outside the hours
comes back
invalid_time, which is a different failure fromslot_unavailableand points at yourstartTime, not at the diary.
