Free Appointment Booking Page for Your Business (Calendly Alternative)
Customers want to book appointments with you. But when they have to email back and forth to find a time that works, many just give up. You need a booking page where they pick a slot and it's done.
Calendly charges $12-50 per seat per month. For a small team of 5, that's $60-250 every month — just for a calendar widget.
Cal.com does the same thing. It's open source, free to self-host, and has no per-seat pricing. (GitHub | Official Website)
What Is Cal.com?
Cal.com is an open-source scheduling infrastructure platform. It lets you create a booking page where customers pick a time slot, and it automatically syncs with your Google Calendar, Outlook, or Apple Calendar. No back-and-forth emails. No double bookings.
- Free and open source (MIT license)
- Self-hosted — your booking data stays on your server
- Calendar sync — Google, Outlook, Apple, CalDAV
- Automated notifications — email and SMS reminders
- Video integration — Zoom, Google Meet, Teams links auto-generated
- Team scheduling — round-robin, collective, managed events
- No per-seat pricing — unlimited team members
What You'll Need
- A VPS with at least 2 GB RAM ($5-10/month VPS from Hostinger, DigitalOcean, or AWS Lightsail)
- A domain name (e.g., book.yourbusiness.com)
- About 20-30 minutes of setup time
- No coding skills required
Step 1: Set Up Cal.com with Docker
Log into your VPS via SSH:
# Install Docker
apt-get update && apt-get upgrade -y
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
apt install docker-compose-plugin
# Download Cal.com self-hosting files
git clone https://github.com/calcom/cal.com.git
cd cal.com
# Copy and edit environment config
cp .env.example .env
nano .env
Update these key values in .env:
NEXTAUTH_SECRET— generate withopenssl rand -hex 32CALENDAR_ENCRYPTION_KEY— generate withopenssl rand -hex 32NEXT_PUBLIC_WEBAPP_URL— set tohttps://book.yourbusiness.comPOSTGRES_PASSWORD— set a strong password
# Start Cal.com
docker compose up -d
# Check it's running
curl -I localhost:3000
Set Up Nginx and SSL
apt install nginx certbot python3-certbot-nginx -y
# Create Nginx config pointing to port 3000
cat > /etc/nginx/sites-enabled/book.yourbusiness.com.conf << 'EOF'
server {
server_name book.yourbusiness.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
}
listen 80;
}
EOF
nginx -t && systemctl reload nginx
certbot --nginx -d book.yourbusiness.com
Visit https://book.yourbusiness.com and create your admin account.
Step 2: Connect Your Calendar
- Go to Settings → Calendars → Add Calendar
- Choose Google Calendar, Outlook, or Apple
- Authorize with your calendar account
- Cal.com now checks your calendar for busy slots automatically
Step 3: Create Your First Event Type
- Go to Event Types → New Event Type
- Set the event name (e.g., "30-minute consultation")
- Set duration, available hours, and buffer time
- Choose location: Zoom, Google Meet, or in-person
- Set your booking link slug (e.g.,
book.yourbusiness.com/consultation)
Step 4: Share Your Booking Page
Share your link on your website, email signature, social media, and WhatsApp. Customers visit the page, see your available slots, and book instantly. Both you and the customer get an email confirmation with the meeting details.
Step 5: Set Up Notifications (Optional)
Cal.com can send automated email and SMS reminders to reduce no-shows:
- Go to Settings → Notifications
- Enable email reminders (free)
- For SMS, connect Twilio (pay-per-message, ~$0.01/SMS)
- Set reminder timing (e.g., 1 hour before, 1 day before)
What This Gives You
- A professional booking page on your own domain
- Automatic calendar sync — no double bookings
- Email confirmations and reminders
- Video call links auto-generated
- Team scheduling (round-robin, collective)
- Zero per-seat costs — unlimited team members
- Your booking data stays on your server
Cost Comparison
| Solution | Monthly Cost (5 users) | Per-Seat Pricing |
|---|---|---|
| Calendly Standard | $60/month | Yes ($12/seat) |
| Calendly Teams | $160/month | Yes ($16/seat) |
| Calendly Enterprise | $250+/month | Yes ($50/seat) |
| Cal.com (self-hosted) | ~$5-10 (VPS only) | No |
A 5-person team saves $50-240 every month by self-hosting Cal.com.
Too Complex? We'll Set This Up for You
We'll install Cal.com on your server, connect your calendar, create event types, and set up notifications:
- One-time setup: $299
- Monthly managed (updates, backups, monitoring): $99/month
- 6-month bundle (3 tools + training): $1,499
Frequently Asked Questions
Is Cal.com really free?
Yes. Cal.com is open-source under the MIT license. The software is free. You only pay for VPS hosting ($5-10/month).
Does Cal.com sync with Google Calendar?
Yes. Cal.com supports Google Calendar, Outlook, Apple Calendar, and CalDAV. It checks your calendar in real-time to prevent double bookings.
Can I use Cal.com for team scheduling?
Yes. Cal.com supports round-robin (distribute evenly), collective (everyone must be available), and managed events (assistant books on your behalf).
Does Cal.com send SMS reminders?
Yes, via Twilio integration. Email reminders are free. SMS costs ~$0.01 per message through Twilio.
Can I embed the booking widget on my website?
Yes. Cal.com provides an embed code you can add to any website. It works as a popup, inline widget, or full-page redirect.
How many event types can I create?
Unlimited. Create different event types for different services, durations, or team members.
Does Cal.com support payments?
Yes. Cal.com integrates with Stripe so you can charge for appointments. Customers pay when booking, and the money goes to your Stripe account.
