Sendbound
Schedly
SchedlyScheduling & Calendaring

4.2M appointment emails a month — zero missed sends for 6 months straight

How Schedly made appointment reminders so reliable they stopped getting asked about them

When you build scheduling software, your email is your product. A missed reminder equals a missed appointment equals a churned customer. Schedly was losing 3% of sends during peak hours and watching support tickets pile up. Here's how they fixed it.

34%
fewer support tickets
4.2M
Emails / month
zero drops
34%
Fewer support tickets
from missed sends
99.96%
Sustained delivery rate
6 consecutive months

Schedly powers appointment scheduling for thousands of small businesses — hair salons, therapists, fitness coaches, consultants. Their customers' customers book appointments online and receive email confirmations and reminders automatically. It sounds straightforward. But at 4.2 million sends per month, "straightforward" hides a lot of complexity — and a lot of ways to fail.

The challenge

A 3% drop rate that nobody noticed until it showed up in support

Their previous provider delivered 97% of sends on average. That sounds fine until you do the math: 3% of 4.2 million is 126,000 missed emails per month. Those 126,000 people didn't get their appointment reminder. Some of them missed their appointments. Some of them filed support tickets. A meaningful fraction of them churned.

Peak-hour throttling with no warning

Monday mornings and Sunday evenings — when most appointment reminders go out for the week ahead — were consistently the worst. The provider's shared IP infrastructure would throttle at exactly the moments Schedly needed reliability most. Emails scheduled for 8 AM would arrive at 11 AM, after the appointment had already started.

No retry logic, no observability

When an email failed, Schedly found out through a support ticket, not an alert. There were no delivery webhooks, no bounce categorization, no retry queue. Every failure was invisible until a customer complained.

The solution

The migration started with Schedly's highest-stakes flow: same-day appointment reminders. These are the emails where a 2-hour delay is as bad as no delivery. On Sendbound, they configured delivery webhooks for every send event — queued, delivered, bounced, opened — and built a simple retry layer on top of Sendbound's bounce categorization. Soft bounces retry on a 15-minute backoff schedule. Hard bounces trigger a notification to the business owner. Within a week, their ops team had visibility into every send for the first time.

Same-day reminder with delivery tracking
import Sendbound from '@sendbound/sdk';

const sb = new Sendbound({ apiKey: process.env.SENDBOUND_API_KEY });

// Send and track every delivery event
const { id } = await sb.emails.send({
  from: 'Schedly Reminders <reminders@schedly.io>',
  to: appointment.clientEmail,
  subject: `Reminder: ${appointment.serviceName} today at ${appointment.time}`,
  template: 'appointment-reminder',
  variables: {
    client_name: appointment.clientName,
    business_name: appointment.businessName,
    service: appointment.serviceName,
    time: appointment.time,
    address: appointment.location,
    cancel_url: appointment.cancelUrl,
  },
  tags: ['reminder', `appt:${appointment.id}`],
});

// Webhook handler receives delivered / bounced / opened events
// using the email id for precise correlation

"We stopped getting "where's my reminder?" tickets the week we switched. That single change saved us more in support cost than Sendbound charges us per year. But the bigger thing is we can actually see what's happening now. Observability turned out to be as valuable as the deliverability."

Schedly
Priya M.Head of Engineering, Schedly

The impact

Support ticket volume dropped 34% in the first month and has stayed there. The entire category of "I never got my reminder" tickets — which had been their second-largest support category — effectively disappeared. Schedly's NPS climbed 8 points in the quarter after migration, driven almost entirely by improvement in reliability scores. Delivery rate has been at or above 99.96% for six consecutive months.

Results at a glance

  • 4.2M emails/month delivered at 99.96% sustained rate for 6+ months
  • "I never got my reminder" support tickets eliminated entirely
  • Overall support volume down 34% within 30 days
  • NPS up 8 points in the quarter post-migration
  • Full delivery observability — every event tracked via webhooks
  • Soft bounce retry loop built in a single afternoon using Sendbound events

Ready to see these results?

Start free — first 3,000 emails per month, always free.

Get started