OTOMY
RESTAURANTSJune 6, 20266 min

Cut Restaurant No-Shows by 60% With Automated Reminders

No-shows silently drain thousands from restaurant revenue every month. Learn how to build a fully automated reservation reminder system using n8n, Supabase, and WhatsApp — with a step-by-step technical guide.

M

By

Melissa Slimani

Cut Restaurant No-Shows by 60% With Automated Reminders

The Silent Problem Draining Your Revenue

A 50-seat restaurant in Paris or Algiers loses an average of 8 to 15 tables per week to no-shows. At a €45 average ticket, that's between €1,440 and €2,700 in lost revenue every single month.

The problem isn't malicious customers. It's that they forget. A reservation made Monday for Friday evening easily slips from memory — especially without a reminder.

Automated restaurant reservation management changes everything. Here's how to build a reminder system that concretely reduces no-shows by 60% or more.

Why Manual Reminders No Longer Cut It

Many restaurant owners assign reminder calls to a team member. The result:

  • Inconsistency: on busy days, nobody calls
  • Human cost: 30 minutes to 1 hour wasted on the phone daily
  • Zero traceability: no way to know who confirmed and who didn't
  • No follow-up: a client who doesn't pick up is assumed to be coming

Automation solves all four problems simultaneously.

The Technical Architecture

Here's the stack we deploy at Otomy for our restaurant clients:

Component Tool Role
Database Supabase Store reservations with status tracking
Orchestrator n8n (self-hosted) Trigger reminders at the right time
SMS channel Twilio Send SMS reminders
WhatsApp channel Twilio WhatsApp API Send WhatsApp reminders
Intelligence Claude AI (Anthropic) Personalize messages
Frontend (optional) Vercel + Next.js Confirmation/cancellation page

The Step-by-Step Workflow

Step 1: Structure Your Reservation Database in Supabase

Create a reservations table with this structure:

CREATE TABLE reservations (
  id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
  client_name TEXT NOT NULL,
  phone TEXT NOT NULL,
  email TEXT,
  date_reservation TIMESTAMPTZ NOT NULL,
  nb_covers INTEGER DEFAULT 2,
  status TEXT DEFAULT 'pending',
  reminder_sent BOOLEAN DEFAULT false,
  client_confirmation TEXT DEFAULT 'none',
  created_at TIMESTAMPTZ DEFAULT now()
);

The status field accepts: pending, confirmed, cancelled, no-show.

Step 2: Configure the n8n Workflow

In n8n, create a workflow with this sequence:

  1. Cron Trigger: runs every hour between 9 AM and 6 PM
  2. Supabase Node: query reservations where date_reservation is within the next 24 hours AND reminder_sent = false
  3. IF Node: check whether the client has a WhatsApp-compatible number (+33 or +213 prefix)
  4. Claude AI Node: generate a personalized message
  5. Twilio Node: send SMS or WhatsApp message
  6. Supabase Update: set reminder_sent = true

Step 3: Personalize Messages With Claude AI

Instead of a generic template, use Claude AI to adapt the tone:

Prompt: "Generate a warm, short reservation reminder (max 160 characters) for {client_name} who booked {nb_covers} covers on {date_reservation} at {restaurant_name}. Include a confirmation link: {confirmation_link}."

Sample output:

Hi Sarah! 🍽️ We're looking forward to seeing you tomorrow at 8 PM for 4 guests at Le Comptoir. Confirm here: https://r.otomy.dz/c/abc123

Step 4: Build the Confirmation Page

Deploy a simple Next.js page on Vercel with two buttons:

  • I confirm my reservation
  • I need to cancel

Each click updates the client_confirmation field in Supabase via an API call. On cancellation, a second n8n workflow triggers to notify the restaurant and free up the table.

Step 5: The Second-Level Reminder

If 4 hours before the reservation client_confirmation = 'none':

  • Send a second, more direct reminder
  • If still no response 1 hour before: auto-call via Twilio Voice with a pre-recorded message

This two-tier system is what pushes no-show reduction from 35% to 60%+.

Real Results

Here are the numbers observed across three Otomy restaurant clients after 90 days:

Metric Before After Change
No-show rate 18% 6.5% -64%
Tables recovered/week 0 7.2 +7.2
Staff time on reminders 45 min/day 0 -100%
Estimated recovered revenue/month ~€2,100

Common Mistakes to Avoid

1. Sending the reminder too early A reminder 48 hours before gets ignored. The sweet spot is 24 hours + 4 hours before.

2. Not offering easy cancellation If cancelling is complicated, the client does nothing — and doesn't show up. Make cancellation as simple as a single tap.

3. Using SMS only In Algeria, WhatsApp has a 92% open rate versus 34% for SMS. In France, SMS still performs well, but WhatsApp is gaining ground. Use both channels.

4. Forgetting GDPR compliance Store explicit client consent for receiving messages. Supabase makes this easy with a consent_sms field in your table.

What Does It Cost?

Item Monthly Cost
Supabase (Free tier) €0
n8n (self-hosted on VPS) ~€5/month
Twilio SMS (200 reminders) ~€8/month
Twilio WhatsApp (200 reminders) ~€12/month
Claude AI API ~€3/month
Total ~€28/month

For a €28/month investment, you potentially recover €2,000+ in revenue. That's an ROI exceeding 7,000%.

How to Get Started This Week

  1. Day 1-2: Create your Supabase database and import existing reservations
  2. Day 3: Set up the n8n workflow with Cron and Twilio nodes
  3. Day 4: Deploy the confirmation page on Vercel
  4. Day 5: Test with 10 real reservations
  5. Week 2: Add the second-level reminder and Claude AI personalization

Don't have the time or technical skills? Otomy deploys this system turnkey for restaurants in France and Algeria — including staff training.

Conclusion

Automated restaurant reservation management is no longer a luxury reserved for large chains. With open-source tools and affordable APIs, any restaurant can cut no-shows by three in under two weeks.

The real cost is inaction: every week without an automated system means empty tables that could have been filled.


Running a restaurant and losing money to no-shows? Contact Otomy for a free audit of your reservation process.

OTOMY

Ready to automate your business?

Book a free call — 30 minutes to identify what we can automate for you.