Skip to main content

Overview

Appointment reminders are one of the most common use cases for AI voice agents. TopCalls automates confirmations, rescheduling, and follow-ups across any industry that books appointments.

Reduce No-Shows

Automated reminders significantly reduce no-show rates. Phone calls get higher engagement than texts or emails.

Save Staff Time

Automate thousands of reminder calls. Your team can focus on in-person work.

Better Experience

Personalized phone calls feel more professional than generic SMS blasts.

Handle Rescheduling

AI agents handle rescheduling requests automatically, updating your calendar in real-time.

Works For Any Industry

  • Healthcare: Medical, dental, therapy, specialist appointments
  • Beauty & Wellness: Salons, spas, fitness sessions
  • Professional Services: Legal consultations, financial planning, real estate viewings
  • Automotive: Service appointments, test drives, inspections
  • Education: Tutoring sessions, parent-teacher conferences, admissions meetings
  • Home Services: Plumbing, HVAC, cleaning, pest control

Example Implementation

Step 1: Create the Call

{
  "phone_number": "+14155551234",
  "from_number": "+18005551234",
  "instructions": "You are Sarah, a friendly appointment coordinator. Your goal is to confirm {{client_name}}'s appointment scheduled for {{appointment_date}} at {{appointment_time}}. Be warm, professional, and concise. If they want to reschedule, ask for their preferred date/time.",
  "first_sentence": "Hi {{client_name}}, this is Sarah calling about your appointment tomorrow at {{appointment_time}}.",
  "voice": "alloy",
  "mode": "realtime",
  "request_data": {
    "client_name": "John Smith",
    "appointment_date": "2025-12-24",
    "appointment_time": "3:00 PM"
  },
  "webhook_url": "https://your-app.com/webhooks/appointment-reminder"
}

Step 2: Handle the Webhook

app.post('/webhooks/appointment-reminder', async (req, res) => {
  res.status(200).json({ received: true });

  const call = req.body;

  if (call.call_summary.includes('confirmed')) {
    await updateAppointmentStatus(call.metadata.appointment_id, 'confirmed');
  } else if (call.call_summary.includes('rescheduled')) {
    const newDateTime = extractDateTime(call.transcript);
    await rescheduleAppointment(call.metadata.appointment_id, newDateTime);
  } else if (call.call_summary.includes('cancelled')) {
    await cancelAppointment(call.metadata.appointment_id);
  }

  if (call.answered_by === 'voicemail') {
    await sendSMS(call.phone_number, 'We left you a voicemail about your appointment...');
  }
});

Campaign Setup

For high-volume reminders, create a campaign through the TopCalls dashboard with your contact list and schedule. The system processes contacts automatically, respecting timezones and retry logic.

Best Practices

Do This

  • Call 24-48 hours before: Best window for reminders
  • Respect timezones: Only call during business hours
  • Handle voicemail: Leave clear messages or send SMS follow-up
  • Enable rescheduling: Let people reschedule easily
  • Track outcomes: Monitor confirmation rates and adjust

Avoid This

  • Call too early: More than 48 hours in advance is too soon
  • Call too late: Same-day reminders are too late to reschedule
  • Ignore timezones: Always respect local business hours
  • No rescheduling option: Always offer to reschedule

Next Steps

Quickstart

Make your first appointment reminder call.

Campaign Management

Scale to thousands of reminders with campaigns.