AI Appointment Setter
How the AI Appointment Setter handles a reply, when it hands off to a person, and how integrations configure it and hear about replies.
Last updated
The AI Appointment Setter is the reply agent on a campaign. When a prospect replies, it decides what to do next and works toward 1 goal: a meeting booked through your booking link.
What it does with a reply
On every reply, the agent decides 1 of 5 actions: reply, wait, nudge, escalate, or close. It records the reply's sentiment and whether the reply is an out-of-office message. A campaign runs it in 1 of 2 modes: autonomous, where it sends its own replies, or notify-only, where it reads each reply and leaves the sending to you.
It books through your booking link and never proposes times itself; when a prospect proposes a time or asks for an invite, it answers with a holding line and hands the conversation to a person. By default it sends up to 5 follow-ups to a prospect who goes quiet, on days 2, 3, 5, 7 and 10 after the last message; the schedule is configurable in the app, up to 10 follow-ups.
When it hands off to a person
The agent answers what the campaign description and knowledge base cover, pricing included when it's there. It escalates the conversation when the prospect:
- asks about something outside the material the agent was given;
- asks for a person;
- raises legal or contract terms, a security questionnaire or a complaint;
- names a colleague to talk to instead;
- proposes a meeting time or asks for an invite;
- writes again after a meeting is booked, to reschedule, cancel or say the invite didn't arrive (the conversation stays booked).
It also stops after a reply limit, 12 replies per conversation by default, and hands off a conversation it can't deliver to (a failed send, a disconnected sender). The reason is recorded with the conversation and delivered in the webhook as escalation_reason, with the kind of hand-off in escalation_kind.
A meeting booked through the link is detected by the app's calendar integration and listed on the campaign's bookings, described below.
Configure it by API
The agent is configured per campaign. GET /v1/campaigns/{campaign_id}/responder reads the configuration and PATCH /v1/campaigns/{campaign_id}/responder changes it: is_enabled, goal_link (an https URL the agent sends an interested prospect to), up to 10 assets (a link with a description of when to share it), tone (friendly, direct or formal), custom_instructions, campaign_description, company_name and agent_name.
is_enabled also sets the campaign's responder_enabled flag, the one PATCH /v1/campaigns/{campaign_id} toggles, so the two never disagree.
The configuration the API returns also carries mode and agent_version, but the update endpoint doesn't accept them: the mode, the reply limit and the follow-up schedule are set in the app. Any update moves the campaign to the current agent (agent_version 2). max_replies belonged to the earlier reply agent and is deprecated: the update endpoint accepts it, ignores it, and says so in the response's notes.
GET /v1/campaigns/{campaign_id}/bookings lists the meetings booked from a campaign, newest first: calendar bookings with a start_time and status, and confirmations, where the agent or a person marked a lead as booked without a calendar event. Send since to count only bookings made at or after a time. GET /v1/campaigns/{campaign_id}/analysis reports reply sentiment as aggregate counts.
Hear about replies
A prospect's reply is delivered to the campaign's webhook as a prospect_response event, once per lead per campaign and again when a later reply turns positive, with the prospect's message, the lead, and the agent's reading of the reply under ai_response:
sentimentandout_of_office;agent_action:reply,wait,nudge,escalate,closeorskip;conversation_status:awaiting_prospect,needs_human(handed to your team),human_owned(your team took it over),closed_won,closed_lostorclosed_no_response; conversations from the earlier reply agent can showawaiting_followuporclosed_escalated;goal_status:not_sent,link_sent,soft_commit,confirmedordeclined;responder_message, the reply the agent sent, ornullwhen it sent nothing;escalation_reasonandescalation_kind(such asproposed_time,referralorreschedule_request), when it handed off;sdr_brief, a 1-line summary for a person.
agent_version is 2 when the Appointment Setter handled the reply; feature-detect on it. When the agent didn't run, every field is null except goal, which carries the reason. Receiving webhooks covers registration, retries and duplicates.
The Unified Inbox is app-only
There is no API or MCP endpoint that reads or sends inbox messages. The REST API exposes no conversation or message resource, and the MCP server lists no inbox tool. An integration that needs the conversation uses the webhook: each delivery carries the prospect's message and the agent's reply, and a later positive reply from the same lead arrives as a further event.