Calendly
Connect Calendly and the agent can offer open slots and confirm bookings during the call. The invite email goes out the moment the caller agrees — no follow-up required.
What it does
- Real-time slot lookup — agent fetches your live availability before suggesting a time.
- Three suggested slots — agent offers spread-out options ("Tuesday 2pm, Wednesday 10am, or Friday 4pm — which works?") so the caller picks.
- Letter-by-letter email confirmation — agent reads the email back to confirm the spelling before sending. Stops typos becoming bounces.
- Books server-side — uses Calendly's
POST /inviteesendpoint (paid Calendly plan required). The booking lands in Calendly with the same metadata as a normal booking.
Setting it up
- Connect Calendly in
/dashboard/integrations. OAuth flow. - Pick the default event type — typically your "Discovery call" or "Initial consultation". Agents will book into this by default; you can change it any time.
- Save.
The agent now has booking access. Next inbound call where the caller wants to schedule — booked.
What happens on a call
Caller: "Can I book a call with someone?"
Agent: "Of course — let me check the diary. Tuesday at 2pm, Wednesday morning at 10, or Friday at 4 — any of those work?"
Caller: "Tuesday's perfect."
Agent: "Great. I'll send the invite to your email — what's the best one?"
Caller: "alex.w@example.com."
Agent: "Just to confirm — A-L-E-X dot W at example dot com. Right?"
Caller: "Yep."
Agent: "Booked. You'll have the invite in a moment. Anything else?"
The booking lands in Calendly within 2-3 seconds. Customer gets the email. Done.
Pricing requirements
Calendly's API allows server-side bookings only on paid plans. If you're on the free Calendly tier, the agent can still send the booking link as an SMS — but you don't get on-call confirmation.
Common questions
What if no slots in the next 7 days? The agent extends the search to 14 days, then offers a manual scheduling link if still nothing.
Multiple event types? The agent uses the default you picked. To use multiple, create separate Foan agents — each with its own event type — and route different inbound numbers to each.
Buffer time? Configured in Calendly itself. Foan respects whatever you've set there.