RXed AI News

AI to the bone.
A weekend ↓ architecture 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 cost: $5-12/mo (software included) Time saved: saves ~0.2–0.5 h/week unattended at 15 bookings a week — basis After setup: Runs unattended — runs itself; you only watch the calendar Data lives: Mixed — Names and appointment times stay on your server; reminder emails transit your mail provider.
Cal.diyEasy!Appointmentsn8nDockerAppointments & bookingRemindersEmail & SMS
Built for small businesses in general — not a sector list.

Paste it into your AI assistant — ChatGPT, Claude, Gemini, whichever you use. It first asks what tools you already have, then rebuilds this blueprint to fit them.

any AI platformno signupblueprint travels inside
Before you start
  • A domain or subdomain with a valid HTTPS certificate — clients will not book on a bare IP address
  • A mailbox or SMTP relay that can send as your domain, with SPF and DKIM set, or reminders land in spam
  • The booking page has to be the only diary; a second paper agenda means appointments with no reminder
  • A machine that stays on — a mini PC, NAS or cheap VPS, not your laptop
What breaks first FAILS SILENTLY
the n8n reminder job — expired SMTP credentials, or a cron trigger that does not resume after a container restart. Reminders quietly stop and no-shows drift back to normal; book a test appointment yourself each month.
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 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
the same flow as text
[ 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.

Paste it into your AI assistant — ChatGPT, Claude, Gemini, whichever you use. It first asks what tools you already have, then rebuilds this blueprint to fit them.

any AI platformno signupblueprint travels inside

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.

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