RXed AI News

Your AI intelligence briefing
A weekend Workflow v1.0 · 2026-07-10

The no-show reminder engine: self-hosted booking after the Cal.com shake-up

A booking page that sends its own reminders — and that you own

⏱ Setup: A weekend (~6-10 h) 💶 Running: EUR 5-12/mo · software EUR 0 ⚡ Time saved: High — 2-4 h/week of manual reminders, plus recovered no-show revenue 🔧 Built with: Cal.diy + Easy!Appointments + n8n
Appointments & bookingRemindersEmail & SMSSelf-hostedn8n
For: Salons & barbers · Physios & therapists · Garages & repair shops · Consultants · Any appointment business
Version history
v1.0 · 2026-07-10 — First release, built for the post-April-2026 Cal.com split (reminders rebuilt on n8n).

A booking page plus automated reminders you own outright — rebuilt for the post-April-2026 reality, because half the "just self-host Cal.com" advice on the internet is now wrong.

The problem

A physio, a salon, a consultant, a garage: every empty slot from a no-show is revenue that cannot be resold at 14:03 for 14:00. The fix has been known for years — a booking page so clients pick their own slot, plus reminders at 24 hours and 2 hours — and reminder emails alone measurably cut no-shows. The SaaS options that do this charge roughly €25–90/month per calendar and hold your client list. The self-hosted answer used to be one word: Cal.com. In April 2026 that answer broke. Cal.com moved its commercial codebase closed-source and relaunched the open-source part as Cal.diy under MIT — with the enterprise features stripped out, including Workflows, the very feature that sent the reminders. Every tutorial written before April 2026 that says "enable a Workflow for SMS reminders" now describes a feature that isn't in the open-source product. This blueprint is the post-shake-up version: booking stays self-hosted, and the reminder engine is rebuilt with n8n, which you own too.

The architecture

Clientbooks a slot on your own booking pagebooking or cancellationBooking tool — Cal.diy orEasy!Appointmentsyour calendar truth: availability, buffers, Google Calendarsyncsignals every booking automaticallyn8n — the reminder engineInstant confirmation emailReminder 24 h beforeReminder 2 h before, with reschedulelinkDay after: follow-up or reviewrequestA cancellation stops all pending reminders by itself — no orphan nags
[ Client ] → books on your page
        ▼
[ Cal.diy or Easy!Appointments (self-hosted, Docker) ]
        │  availability rules, buffers, Google Calendar sync
        │  webhook fires on booking / cancellation
        ▼
[ n8n (self-hosted) — the reminder engine ]
        ├─ instant confirmation email to client
        ├─ T−24h reminder (email; SMS optional)
        ├─ T−2h reminder with reschedule link
        └─ day after: no-show follow-up or review request

Cancellation webhook → n8n cancels the pending reminders. No orphan nags.

One box, two containers plus a database. The booking tool owns the calendar truth; n8n owns everything time-triggered. Keeping those separate is the design decision — when the booking tool changes (as it just did, industry-wide), your reminder logic survives untouched.

Tool choices — and why

Easy!Appointments (GPL-3.0, 4.2k stars, active — last push 05/06/2026) is the default pick for a service business. It is purpose-built for exactly this: services, providers, working plans, Google Calendar sync, a customer-facing booking page, and built-in email notifications — running since 2014 on boring PHP+MySQL that any hosting company can run. It is less pretty than Cal.diy and the mobile experience is plainer, but it has no licence drama, no "non-production" disclaimer, and no removed features to trip over.

Cal.diy (MIT, 46.1k stars, active — last push 06/07/2026) if you want the modern product: slicker booking pages, event types, embeds, a large app ecosystem. Two honest caveats. First, it's the community edition with enterprise code removed — no Teams, no Insights, and no Workflows, which is why n8n does the reminders in this blueprint. Second, the project's own docs recommend it "for personal, non-production use" — in practice plenty of small operations run it, but you are signing up to be your own vendor. If that sentence makes you uncomfortable, take Easy!Appointments.

n8n (fair-code Sustainable Use License — free for internal business use, 195k stars, pushed this week) is the reminder engine. Booking webhook in, scheduled waits, email out via your own SMTP. The same instance can later run your invoice chasing and inbox triage (see the other blueprints in this library) — one automation box, many jobs.

Monthly cost. Software: €0 all three. Hosting: one VPS at ~€5–12/month runs the whole stack for a small business. Email: your existing mailbox's SMTP or a transactional sender's free tier at reminder volume. SMS is the only real variable — optional, pay-per-message via any SMS API provider at roughly €0.01–0.10 per message depending on country (verify current rates); 200 appointments/month with two SMS each lands around €5–40/month. Email-only is €0 and already captures most of the no-show reduction.

Setup outline

1. Deploy the booking tool (official Docker image, both projects publish one) behind HTTPS on your domain — book.yourbusiness.example.
2. Model reality before going live: services with true durations, buffer times, per-provider working plans, minimum booking notice (e.g. 4h) so nobody books a slot you can't see in time.
3. Turn on Google Calendar (or CalDAV) sync so staff phones show the same truth as the booking page.
4. Deploy n8n on the same box. Create one workflow: webhook trigger → confirmation email → Wait until T−24h → reminder → Wait until T−2h → reminder with reschedule link.
5. Wire the cancellation/reschedule webhook to cancel pending waits for that booking. Test this path first — it's the one that annoys clients when it's wrong.
6. Set up SPF, DKIM and DMARC on the sending domain before the first real reminder. Ten minutes of DNS now, or spam-foldered reminders forever.
7. Add the day-after branch: status "showed up" → review request with your Google review link; "no-show" → a friendly rebooking email, not a scolding.
8. Pilot two weeks with one provider's calendar before rolling out to everyone.

Pitfalls — the real ones

Pre-April-2026 tutorials are silently wrong. If a guide tells you to configure Cal.com "Workflows", "Teams" or "Insights" on a self-hosted instance, it predates the split. Those features live in the closed commercial product now. Check the date before you follow anything.
SMS without opt-in is a fine, not a feature. In the EU, appointment reminders to an existing client are generally fine, but marketing tacked onto a reminder is not — keep the review-request and any promotion in separate, consented channels. US senders additionally need A2P 10DLC registration for application SMS.
The double-booking hole is human. If staff also take phone bookings, they must enter them in the same calendar the tool reads, immediately. One "I'll add it later" and the booking page sells a taken slot.
Timezones bite exactly twice a year. Store times in the booking tool's timezone, render in the client's, and test a booking across a DST switch date before that weekend does it for you.
Don't over-remind. Confirmation + 24h + 2h is plenty. A fourth message trains clients to ignore all of them.

Verified repos

Easy!Appointments — GPL-3.0, 4.2k stars, active (June 2026)
Cal.diy — MIT, 46.1k stars, active (July 2026)
n8n — Sustainable Use License (free self-hosted internal use), 195k stars, active (July 2026)

Get the next blueprint as it publishes — free, practical, verified tooling only.

Subscribe · Want this audited or extended for your business? DM @RXed_EU

Get this blueprint tailored to your business — free

Tell us what you run and where. We research your sector's specifics — rules, tools, customer habits — and send you a version of this blueprint rebuilt for your situation, usually within 24 hours.