DEV Community

Wynne Pirini
Wynne Pirini

Posted on

Cal.eu is closing on Nov 1. Here is your migration playbook

Cal.eu shuts down on November 1. Your EU-hosted booking data has an expiry date.

Cal.com said it plainly in their own migration notice: "Cal.eu will remain available until November 1, 2026." New signups are already closed. If your team picked Cal.eu because client meetings should stay on EU soil, that reason disappears in about 45 days. You either move to Cal.com's US-hosted platform, or you move somewhere else.

This is a short, practical playbook for getting your scheduling off Cal.eu and onto infrastructure you control, before the deadline. Disclosure: I build Calnode, one of the options below. The other two are real options too.

What is actually happening

Cal.com is consolidating Cal.eu into Cal.com International. Enterprise contracts get extensions, everyone else gets a data export and a deadline. The notice is published in four languages, so this is settled, not rumoured.

If a client contract says EU hosting, "we moved to the US version" breaks that promise. You need another answer.

Your three options

1. Accept the migration to Cal.com International. Easiest path, keeps your existing setup. You lose EU residency. Fine if nobody ever asked where the data lives.

2. Move to another EU-hosted scheduler. There are ten or so credible ones. This works, but you are swapping one vendor's database for another's. Next shutdown, same problem.

3. Self-host. One server, your database file, your rules. No vendor can take this one away from you. The rest of this post is option 3.

The playbook

Step 1: Export everything from Cal.eu now. Cal.com says you will get the chance to export before access ends. Do not wait for the last week. Pull event types, bookings, and team member lists before the rush.

Step 2: Stand up one binary. Calnode is a single static Go binary with an embedded SQLite database. No Redis, no Postgres, no separate API server. docker run one container with data in ./data and you have booking pages, an admin UI, and the database in one place. Set an encryption key and point Litestream at your backup target for point-in-time recovery.

Step 3: Recreate your event types and booking links. This is the manual hour. Rebuild each meeting type, set the durations and buffers you actually use, and wire confirmation emails and reminders. Calnode fires confirmations, webhooks, and reminders off the same booking event, so everything stays in sync.

Step 4: Reconnect your automations. If n8n, Make, or an internal service consumed Cal.com webhooks, repoint them at HMAC-signed Calnode webhooks, configured via API. If agents book on your behalf, Calnode includes a native MCP server in the same binary: stdio for local agents, streamable HTTP for remote ones, with role-scoped tools so an agent gets the permissions you grant it and nothing more.

Step 5: Cut over one calendar at a time. Point one event type at the new links, run it for a week, then move the rest. Keep Cal.eu read-only until November so old links keep working.

Why this instead of another SaaS

Every hosted scheduler is a promise that someone else keeps your data where you want it. Cal.eu was that promise. It ends Nov 1. Self-host, and your data is where your server is. No terms and conditions.

One binary. One SQLite file. Your meetings stay where you put them.

Sources: Cal.com migration notice, Cal.eu signup page, EU alternatives to Cal.com. Calnode: calnode.com (github.com/Calnode/calnode, Apache-2.0).

Top comments (0)