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:

  1. Go to Google Cloud Console → Credentials
  2. Create a new project (or select an existing one)
  3. Configure the OAuth Consent Screen: External, fill in app name and email
  4. Enable the Google Calendar API for your project
  5. Add these OAuth scopes: .../auth/calendar.events and .../auth/calendar.readonly
  6. Create an OAuth 2.0 Client ID — type: Web Application
  7. Add these two Authorized Redirect URIs:
    • https://cal.yourdomain.com/api/integrations/googlecalendar/callback
    • https://cal.yourdomain.com/api/auth/callback/google
  8. Download the credentials.json file and note its path on your VPS

During sp add calcom the CLI will ask:

bash
Do you want to enable Google Apps (Calendar, Meet, Analytics...)? [Y/n]
# Answer Y, then provide the path to your credentials.json file

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

bash
sp add calcom

The CLI automatically handles:

  • Provisioning PostgreSQL 16 (shared with n8n if already running)
  • Creating a dedicated cal_yourproject database and user
  • Generating NEXTAUTH_SECRET (32-char) and CALENDSO_ENCRYPTION_KEY (24-char) — no action needed from you
  • Pulling the latest calcom/cal.com Docker image
  • Configuring the Apache reverse proxy for cal.yourdomain.com
  • Provisioning an SSL certificate for the subdomain
First startup takes 5–10 minutes. Cal.com runs Prisma database migrations on first launch. The container will appear to hang — this is normal. Wait untilsp 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)

Cal.com will not send any emails (booking confirmations, reminders, password resets) until you configure SMTP. This is a manual step — ServicePlus does not pre-configure email for Cal.com.

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?

FeatureCal.com (ServicePlus)Calendly
CostIncluded in 149 MAD/month150–450 MAD/month
Data ownershipYour serverCalendly's servers
Team membersUnlimitedPaid per seat
Custom domainYour own domainPaid plan only
Booking page brandingFull white-labelLimited on free plan
Google Calendar syncYes (with OAuth setup)Yes
n8n/automation integrationNativeVia 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
Credentials for the Cal.com database are available via sp cred if needed for troubleshooting. Never share these credentials with clients.