Start here
Overview
On this page
Dial is a self-hosted scheduler for one business or one independent host. Clients pick a time on your booking page, and Dial puts it on your calendar, emails everyone and gives the client a private link to move or cancel it. It runs on your own Cloudflare account. Bookings are stored there, and Dial sends booking details to your own SendGrid and Google accounts, not to a service Dial’s authors run. Think of it as a Calendly alternative that you own.
Who it is for
Dial is for a single host: a consultant, a clinic, a studio, a small business that takes appointments. You set up one host profile and one or more event types, such as a 30-minute intro call. You can invite other people to run the workspace with you, and they all have the same access.
If you need several hosts, team round-robin or paid bookings, Dial is not the right tool. See what Dial does not do.
How a booking works
Here is the whole journey, first from your client’s side and then from yours.
Your client:
- Opens your booking page and picks an event type.
- Chooses a day and a time. Times show in their own timezone, and Dial suggests up to five good ones first.
- Fills in their name, email and any questions you asked, then confirms.
- Sees a receipt, gets a confirmation email, and can add the booking to their calendar.
- Uses a private link to reschedule or cancel, with no account needed.
If nothing suits them, they can send you a request with other dates and times instead.
You:
- Set up your profile, connect Google Calendar and mail, and publish an event type.
- Share the booking link, or embed the booking flow on your own site.
- When someone books, Dial checks the time against your live calendar one last time, creates the calendar event and emails you and your client.
- Manage bookings and requests from the operator app. You can reschedule, cancel, mark attendance or create a booking for someone yourself. Filter bookings by lifecycle state, future or past start, event type, date range or failed external delivery, then search invitee names and email addresses. Add private annotations to event types, bookings and requests.
Read Your booking page for every setting, and Calendar and email for what Dial sends and reads.
What Dial does not do
Dial stays small on purpose. It does not offer:
- Multiple hosts or workspaces, or roles and permissions.
- Team round-robin or collective scheduling.
- Group events, classes, waitlists or resource capacity.
- Extra guests on a booking.
- Bookings that wait for your approval before they are confirmed.
- Payments, deposits, refunds or booking fees.
- Recurring booking series or scheduling polls.
- A marketplace, ratings or reviews from clients.
- Text messages, WhatsApp, phone automation, a CRM or marketing campaigns.
- Changing reminder times. Reminders always go out 24 hours and 1 hour before a booking.
- Automatic acceptance of time or location changes made by hand to a booking’s calendar event. Dial records the difference and leaves the booking time as it is.
- AI ranking of times. Suggested times follow fixed rules.
- Native mobile apps. The operator app and booking pages work in a browser.
Where things stand
This is version 0.1.0. The scheduling and request workflows work and are covered by automated tests that use synthetic calendar and mail providers. Some things are not yet proven against live services, and these pages say so where it matters:
- Connecting a real Google Calendar and creating Google Meet links.
- How long a Google sign-in lasts before you must reconnect.
- A deploy with
pnpm run deployto a real Cloudflare account. Its tests use a stand-in for Cloudflare’s API.
Export and restore work for an install on your computer. A deployed install cannot be exported or restored yet.
The local browser review does not establish full WCAG 2.2 AA conformance, and local timing measurements do not prove production capacity. Complete data erasure and the final disconnected export-and-restore receipt are still in progress.
Try a test calendar and a test event type before you rely on Dial for real appointments. HANDOVER.md records exactly what has and has not been proven.
Booking search uses literal, full Unicode case-insensitive substring matching. Operator annotations are private to the workspace and are not included in public pages or outgoing mail.
Cost and limits
These figures are the author’s estimates, not measured or load-tested. For one host and 1,000 bookings a month, the estimate covers Cloudflare: the Workers Paid plan, about 5 US dollars a month. It does not price SendGrid, which sends Dial’s email, so check SendGrid’s plans against your mail volume. Google Calendar has no charge inside its standard quota.
- Up to 10 operators and 100 event types.
- Up to about 10,000 bookings a month and 100,000 in all.
- Per visitor address: 120 public requests a minute, 10 booking changes a minute and 5 alternative requests an hour. The app’s own script, style and font files count against the same 120 a minute; only its fingerprinted scripts are cached by browsers for a year.
Start here
- Install takes you from the source to a working Dial, on your computer or on Cloudflare.
- Your booking page covers your profile, event types, availability and the client experience.
- Calendar and email connects Google Calendar and SendGrid.
- Backups and export saves a private copy of a local install’s data and restores it.
- Updating shows how to take a new version safely.
The changelog lists what is in each version. Dial is MIT licensed; the licence is in LICENSE.