Self-host a Calendly alternative on Cloudflare
CloudMeet’s pinned source documents a Pages application with D1 and KV, plus a separate reminder Worker. Set up your own resources, administrator credentials and calendar integrations, then test the entire booking flow. Hosting eligibility is conditional; a fresh zero-cost deployment has not been verified.
By Cloudsteading · Sources checked 2026-10-01 · Independent guide
Inspect the reviewed repository before provisioning
Start from CloudMeet’s project page. Our source snapshot uses commit 5a9f0e3c8ec29485e8221893c8712be10ec0e122. The pinned README, Wrangler files and GitHub deployment workflows let you inspect the actual setup rather than copying a generic architecture.
The MIT license is linked with a plain-English explainer. Review the current upstream revision if you choose a newer commit; a source check of one version does not automatically apply to every release.
The application and scheduler are separate
The root wrangler.toml points Pages output to .svelte-kit/cloudflare and binds DB to D1 and KV to Workers KV. A second configuration at workers/cron-reminders/wrangler.toml defines the reminder Worker, whose schedule is */5 * * * *.
The reminder Worker calls the app’s reminder endpoint using the configured app URL and cron secret. It is not evidence of a separate database binding in that Worker. The project’s infrastructure view distinguishes these components and links the source files used to derive them.
Configure your own instance deliberately
- Create your own repository copy and review its deployment workflow before granting it credentials.
- Supply your Cloudflare account/resources and replace placeholder D1 and KV identifiers.
- Set your administrator email, application URL and a strong session-signing secret.
- Configure the Google OAuth client required by the default workflow, with callback URLs matching your actual host.
- Add Microsoft credentials and the documented permissions if Outlook integration is needed.
- Configure the optional email provider only when you are ready to send real booking messages.
- Set the cron secret so the reminder endpoint is not openly triggerable, and keep it consistent across the app and scheduler.
The source README calls the cron secret optional but recommends it. Treat protecting the reminder endpoint as part of a real deployment, particularly when sending email is enabled. Keep provider credentials and signing secrets out of public configuration and logs.
Verify the booking flow before sharing the link
Sign in as the intended administrator, connect the calendars you need and confirm that availability excludes conflicts. Book a test appointment from another browser, then inspect the resulting calendar event and meeting URL. Reschedule and cancel it. Test daylight-saving boundaries and an invitee in a different time zone.
If reminders are enabled, observe a scheduled run and confirm the expected recipient, timing and duplicate behavior. A cron configuration proves that a trigger is declared, not that messages reach an inbox. Keep the test scoped to recipients you control and avoid sending unwanted messages during setup.
Monitor quotas and recovery
Dynamic Pages Functions share Workers allowances. D1 reads and writes, KV updates and the five-minute schedule also consume their own quotas. The Pages Functions billing documentation distinguishes static assets from dynamic requests; do not call all booking traffic unlimited merely because the frontend uses Pages.
Back up the database, retain the configuration needed to restore provider callbacks, and plan dependency updates. Domains, provider-account features, email and maintenance time are separate from Cloudflare hosting. Compare Calendly’s current pricing, the CloudMeet tradeoffs and the alternatives shortlist before replacing your existing booking links.
Common questions
What does CloudMeet need on Cloudflare?
The reviewed root Wrangler file configures Pages output with D1 and KV bindings. A separate reminder Worker runs every five minutes. Supply your own resources, app URL and required provider/admin credentials.
Are email reminders free on Cloudflare?
The scheduled Worker runs on Cloudflare, but the documented Emailit provider is separate and optional. Its pricing and account configuration are outside Cloudflare’s allowances.
What should I test before switching booking links?
Check cross-calendar conflicts, time zones, event creation, video meeting links, cancellation, rescheduling and reminders. Also test authentication and recovery; a successful build alone does not prove the workflow.
Sources and review
- CloudMeet pinned README ↗
- CloudMeet Pages and database configuration ↗
- CloudMeet reminder Worker configuration ↗
- Calendly pricing and feature comparison ↗
- Calendly plan selection and annual seat tiers ↗
- Cloudflare Pages Functions billing ↗
Recommendations are Cloudsteading’s editorial assessment. Repository review establishes documented capabilities; it does not prove a fresh deployment or complete feature parity. Prices and platform limits can change.