Cal.com — Appointment Booking
Self-hosted booking pages for consultations, meetings, and client appointments.
What is Cal.com?
Cal.com is an open-source appointment scheduling platform — a self-hosted alternative to Calendly. It lets clients book time directly from a public booking page, with no per-booking commission and no third-party storing your availability data.
In ServicePlus, Cal.com runs at cal.yourdomain.com and shares the PostgreSQL 16 database provisioned when you add n8n. If you add Cal.com before n8n, ServicePlus provisions PostgreSQL automatically.
Before you run sp add calcom
Decide upfront whether you want Google Calendar / Sign in with Google. If yes, you need to prepare a Google OAuth credentials file before running the command — the CLI will ask for it interactively and walk you through the setup.
Option A — With Google integration (recommended)
Prepare your Google OAuth credentials file by following these steps:
- Go to Google Cloud Console → Credentials
- Create a new project (or select an existing one)
- Configure the OAuth Consent Screen: External, fill in app name and email
- Enable the Google Calendar API for your project
- Add these OAuth scopes:
.../auth/calendar.eventsand.../auth/calendar.readonly - Create an OAuth 2.0 Client ID — type: Web Application
- Add these two Authorized Redirect URIs:
https://cal.yourdomain.com/api/integrations/googlecalendar/callbackhttps://cal.yourdomain.com/api/auth/callback/google
- Download the
credentials.jsonfile and note its path on your VPS
During sp add calcom the CLI will ask:
Option B — Without Google integration
Skip Google setup. Cal.com will still fully work — users create accounts with email/password and connect their calendar manually from within Cal.com settings after install. You can always add Google integration later.
Running sp add calcom
The CLI automatically handles:
- Provisioning PostgreSQL 16 (shared with n8n if already running)
- Creating a dedicated
cal_yourprojectdatabase and user - Generating
NEXTAUTH_SECRET(32-char) andCALENDSO_ENCRYPTION_KEY(24-char) — no action needed from you - Pulling the latest
calcom/cal.comDocker image - Configuring the Apache reverse proxy for
cal.yourdomain.com - Provisioning an SSL certificate for the subdomain
sp status shows Cal.com as healthy before trying to access it.No commercial license required
ServicePlus deploys the open-source, self-hosted version of Cal.com under the AGPL v3 license. The CALCOM_LICENSE_KEY is intentionally left empty and NEXT_PUBLIC_LICENSE_CONSENT=1 is set automatically, which is the correct configuration for self-hosted AGPL deployments. You do not need to purchase a commercial Cal.com license.
Post-install steps (required)
1. Create your first admin account
Navigate to https://cal.yourdomain.com and create your account. This is the first user in the database and becomes the admin.
2. Configure your email provider (SMTP)
After logging in, go to Settings → Security → Email Provider and enter your SMTP credentials. Recommended providers:
- Brevo (Sendinblue) — free tier available, good deliverability
- Mailgun — pay-as-you-go
- Amazon SES — lowest cost at scale
- Gmail SMTP — works for low volume with an App Password
3. Connect your calendar
Go to Settings → Integrations and connect Google Calendar, Outlook, or iCal. Cal.com uses this to check your availability and add confirmed bookings automatically. Without a connected calendar, double-bookings are possible.
4. Set your availability
Go to Availability in the sidebar and configure your working hours, time zone, and days off before sharing your booking link.
Key capabilities
- Public booking pages — shareable links where clients pick from your available slots
- Multiple event types — 15-min call, 1-hour consultation, recurring sessions
- Team scheduling — round-robin or collective booking across multiple team members
- Automatic reminders — email reminders before appointments (requires SMTP)
- Custom booking questions — collect information from clients at booking time
- Payment integration — Stripe supported upstream; requires manual Stripe configuration in Cal.com settings
- n8n integration — trigger automation workflows on new bookings, cancellations, or no-shows
- White-label — runs on your own domain with no Cal.com branding
Why Cal.com instead of Calendly?
| Feature | Cal.com (ServicePlus) | Calendly |
|---|---|---|
| Cost | Included in 149 MAD/month | 150–450 MAD/month |
| Data ownership | Your server | Calendly's servers |
| Team members | Unlimited | Paid per seat |
| Custom domain | Your own domain | Paid plan only |
| Booking page branding | Full white-label | Limited on free plan |
| Google Calendar sync | Yes (with OAuth setup) | Yes |
| n8n/automation integration | Native | Via Zapier (paid) |
Use cases for Moroccan businesses
- Coaches & consultants — discovery calls, strategy sessions, coaching packages
- Medical & dental clinics — patient appointments with pre-appointment intake questions
- Lawyers & accountants — client intake consultations and case review sessions
- Agencies — onboarding calls, project kick-offs, client check-ins
- Training centers — class enrollment and one-on-one tutoring sessions
- Real estate agencies — property viewing appointments
sp cred if needed for troubleshooting. Never share these credentials with clients.