calcom/cal.com
Configuration
Cal.diy is configured via environment variables. The canonical lists are .env.example and .env.appStore.example. This page documents the variables most contributors hit.
Files
| File | Purpose |
|---|---|
.env |
Web app + database + auth (apps/web reads this) |
.env.appStore |
Per-integration API keys |
apps/api/v2/.env |
NestJS API config |
packages/prisma/.env |
Symlink to the root .env (Windows users replace with a copy) |
yarn env-check:common and yarn env-check:app-store validate .env against the example files.
Database
| Variable | Purpose |
|---|---|
DATABASE_URL |
PostgreSQL connection string (used by Prisma + Kysely) |
DATABASE_DIRECT_URL |
Bypasses connection poolers for migrations |
Auth
| Variable | Purpose |
|---|---|
NEXTAUTH_SECRET |
NextAuth JWT + CSRF signing key (openssl rand -base64 32) |
NEXTAUTH_URL |
Public URL of the web app |
CALENDSO_ENCRYPTION_KEY |
AES-256 key used by packages/lib/crypto.ts (openssl rand -base64 24) |
GOOGLE_API_CREDENTIALS |
Google OAuth client config (JSON) |
GITHUB_* |
GitHub OAuth |
MS_GRAPH_* |
Microsoft Graph OAuth |
URLs
| Variable | Purpose |
|---|---|
NEXT_PUBLIC_WEBAPP_URL |
The web app's public URL |
NEXT_PUBLIC_WEBSITE_URL |
The marketing site URL |
NEXT_PUBLIC_EMBED_LIB_URL |
Where the embed bundle is served from |
| Variable | Purpose |
|---|---|
EMAIL_FROM |
Default From: address |
EMAIL_SERVER_* |
SMTP creds (host, port, user, password) |
SENDGRID_API_KEY |
If using SendGrid |
SENDGRID_EMAIL |
Sender |
Redis
| Variable | Purpose |
|---|---|
REDIS_URL |
Used by the web app's rate limiter and by API v2 (throttler + BullMQ) |
Trigger.dev
| Variable | Purpose |
|---|---|
TRIGGER_API_KEY |
Auth for the Trigger.dev SDK |
TRIGGER_PROJECT_REF |
Trigger.dev project reference |
Sentry
| Variable | Purpose |
|---|---|
SENTRY_DSN |
Sentry project DSN |
NEXT_PUBLIC_SENTRY_DSN |
Public DSN for the browser bundle |
Crons
Each cron endpoint is gated by a shared secret. The variable name follows CRON_API_KEY (or per-job names declared in .env.example).
App Store integration keys
.env.appStore holds per-integration secrets — Stripe API keys, Daily.co API key, Twilio, Zoom, Google Calendar OAuth (often shared with auth), HubSpot, Salesforce, etc. Most are optional; an integration is simply unavailable if its keys aren't set.
yarn i-gen-web-example-env regenerates .env.example from Infisical (with the web tag); yarn i-gen-app-store-example-env does the same for the app-store env example.
Feature flags
Most product feature flags live in the database (packages/features/flags). Operational flags live in env (e.g., NEXT_PUBLIC_IS_E2E=1 to short-circuit external services in tests).
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.