Skip to content

Build an appointment-booking agent

In this tutorial you build the phone front desk of Sunrise Clinic, a made-up family clinic in Pune. At the end you’ll have an agent that:

  • asks for the patient’s name, the day and the time, and works out dates like next Friday;
  • reads the booking back, and saves it only after the caller says yes;
  • sends each confirmed booking to your own booking system;
  • is tested on the tricky cases and published, ready for a phone number.

You need:

  • A workspace role of Builder or higher.
  • For step 5, an https address in your booking system that accepts a new booking. No address yet? Do step 5 with a mocked answer, and add the real address later.

If you haven’t built an agent before, do the quick start first. It takes 10 minutes and uses the same template.

  1. In the sidebar, open Agents, then click New agent.

  2. Choose Start from a template, and pick Appointment booking.

  3. Enter the name Sunrise Clinic front desk and click Create and open.

Create the agent from a template1 / 3
  1. On the Agents page, click New agent.

    1On the Agents page, click New agent.

The template already knows how to book. It asks for:

  • the caller’s name;
  • the date and time they want;
  • an email, only if the caller offers one. It’s saved with the booking, but no email is sent.

It doesn’t ask for the caller’s phone number: that’s known from the call. Each booking gets an id such as APT-3F9A1C, which the agent reads out at the end.

Open Basic info.

  1. Check that What it does is Appointment booking.

  2. Under Persona, describe the receptionist, for example A calm, friendly receptionist at Sunrise Clinic who keeps calls short.

  3. Under Language and tone, keep English (India). Turn on Follow the caller’s language if some patients speak Hindi.

  4. Under Call settings, check the Timezone is Asia/Kolkata. It’s the agent’s clock: it works out tomorrow and next Friday from it, and books times in it.

The agent only knows what you tell it. Open Prompt.

  1. Read the Instructions. The template’s lines tell the agent how to use its built-in booking steps. Keep them.

  2. At the end of the Instructions, add the clinic’s facts and rules. For example:

    About Sunrise Clinic:
    - A family clinic in Kothrud, Pune: check-ups, children's vaccinations and blood tests.
    - Open Monday to Saturday, 9am to 1pm and 5pm to 8pm. Closed on Sundays.
    - Only book times when the clinic is open. If the caller asks for another time,
    offer the nearest open time.
    - After you have the name, ask briefly what the visit is for.
    - Never give medical advice. For an emergency, tell the caller to call 112.
  3. Change the Greeting to: Hello, Sunrise Clinic. I can book an appointment for you. May I have your name?

  4. Set a Closing line: Thank you for calling Sunrise Clinic. See you soon!

To keep the reason for each visit, add an analysis field. Open Post-call analysis under More settings, click Add field, and enter:

  • Name: Reason for visit
  • Type: Text
  • What to look for: What the caller wants the appointment for, for example a check-up or a vaccination.

Every call then shows the reason next to the summary. See Set up post-call analysis.

  1. In the Test panel on the right, open Chat and click Start chat.

  2. Type as the caller: Hi, I’d like to book a check-up for Friday evening.

  3. Answer the agent’s questions: your name, then a time, for example half past five.

  4. When the agent reads the booking back, check the date is the right Friday. Reply Yes.

The agent gives you a booking id. In a chat test it starts with TEST-: chat is a quick preview and never saves anything. To save a real test booking, use Talk in the same panel and say the same things out loud.

When the caller says yes, the agent saves the booking in 360. It can also send it to your own booking system. You need two things: a tool that knows your system’s address, and the Send bookings to card that says what to send.

  1. Open Tools under More settings and click Add tool.

  2. Under What it does, enter:

    • Name: create_booking
    • When to use it: Sends a confirmed booking to the clinic’s booking system.
    • Runs: During the call
  3. Under Request, choose POST and enter your system’s address, for example https://bookings.sunriseclinic.example/api/appointments. Keep the Body as JSON.

  4. If your system needs a key, add an Authorization header with the type Credential.

  5. Under Parameters, add four, all of type string: start, patient_name, caller_phone and email. Turn on Required for start and patient_name.

The agent never calls this tool itself. 360 calls it once, after the caller confirms.

  1. Open Data to collect. Under Send bookings to, choose create_booking as the Tool.

  2. Set the Appointment length (minutes), for example 20.

  3. Keep the Request body as Plain JSON (webhook).

  4. Under Arguments, fill in each parameter with a placeholder:

    Argument Value
    start {{booking.start_local}}
    patient_name {{booking.name}}
    caller_phone {{caller.number}}
    email {{booking.email}}

When a caller books Friday at 5:30pm, your system gets:

{
"start": "2026-10-30T17:30:00",
"patient_name": "Ananya Rao",
"caller_phone": "+919876543210"
}

360 works out the date and time itself, so the model can’t get the maths wrong. The card lists every placeholder: use {{booking.start_utc}} if your system wants UTC. An empty placeholder, such as an email nobody gave, is left out.

Your system should answer with a 2xx status. If the answer has an id, 360 keeps it with the booking. An answer with an error, or with "success": false, counts as a refusal.

  1. In the Test panel, click Manage test inputs next to Test inputs.

  2. Create a set called Booking works. Under Mocked tools, switch create_booking to Mocked and enter {"id": "SC-1042"}. Click Save.

  3. Open Talk, click Start test call and book an appointment out loud.

  4. When it ends, click See it in Calls under Last test call.

The call shows Booking saved under Saved record. In Technical details, Tools used shows the request 360 built, marked Mocked. When your system is ready, switch the tool back to Calls the real tool. See Give the agent tools.

Real callers change their minds and say dates in odd ways. Try each of these with Talk, or with a simulated caller. Both run the real agent, with its date checks. Chat is a quick preview: it doesn’t run those checks, and it never saves or sends a booking.

Say The agent should
A time that has already passed, such as yesterday at five Say the time has passed and ask for a future time.
Today’s weekday, such as Tuesday at six on a Tuesday afternoon Ask whether you mean today or next week.
A new time after the read-back Update it and read the booking back again before saving.
No at the read-back Not book. Ask what to change.
Sunday at eleven Offer an open time instead, because your instructions say Sundays are closed.
A different spelling of your name Take the correction and read the name back.

Two more show what reaches Calls:

  • Hang up before you say yes. Nothing is saved. The call shows Incomplete, with the details under Collected before the caller left, so your team can call back.
  • Your system says no. Change the mocked answer to $error: Slot already taken and book again. The agent apologises and says the team will follow up. The booking isn’t saved: the call shows Incomplete, and Tools used shows the failed request.

To offer only free slots, your booking system needs an address that answers which times are free. Add a second tool that Runs During the call, for example check_availability with a date parameter. Under When to use it, write Call this before you agree a time, to see which slots are free on the date the caller wants. Then add a line to the Instructions: Only offer times that check_availability says are free.

The agent then looks up the day before it agrees a time. See Give the agent tools.

When the tests pass, click Publish, add a release note such as Clinic hours and booking webhook, and click Publish again. Then point a phone number at the agent. Steps 3 and 4 of the quick start show how.

  • An agent that books appointments, works out relative dates and reads every booking back.
  • A booking webhook that gets each confirmed booking, with the date and time worked out by 360.
  • A set of tricky cases to re-run after every change.

Next, give it a knowledge base so it can answer questions about prices and services, or build the same front desk in Hindi.