Onboarding / setup issues
Stripe payment features not working
Symptom: Stripe-related features (paid events, app store payment integration) are not available, or you see errors when attempting to use payment features. Cause: The Stripe integration requires several environment variables to be configured. These variables are defined across two files:.env (root) and .env.appStore. If they are missing or empty, the Stripe app will be marked as “not installed” and payment-related features will be unavailable.
Solution: Add the following variables to your .env file (root):
.env.appStore file (or .env if using a single file):
Replace these with your actual Stripe API keys from the Stripe Dashboard. If you don’t need payment features, you can safely leave these empty — the app will function without them, but Stripe-related features will be disabled.
URL and redirect issues
Redirect to localhost:3000 after deployment
Symptom: After deploying Cal.com to a server or domain, login redirects or internal links point back to http://localhost:3000 instead of your actual domain.
Cause: The environment variables NEXTAUTH_URL and NEXT_PUBLIC_WEBAPP_URL are not set to your production domain. These variables tell Cal.com and NextAuth where the app is hosted.
Solution: Update your .env file to use your actual domain:
NEXTAUTH_URLis optional ifNEXT_PUBLIC_WEBAPP_URLis set — NextAuth will infer the base URL from the incoming request’sHostheader whenNEXTAUTH_URLis not explicitly configured.- For Docker deployments, these must be set before building the image, as
NEXT_PUBLIC_WEBAPP_URLis a build-time variable (it is inlined by Next.js during the build). Rebuild the image after changing it. - For Vercel deployments, you do not need to set
NEXTAUTH_URL— Vercel automatically infers it from the deployment URL via theVERCEL_URLenvironment variable.
Docker-specific issues
API v2 service not starting
Symptom: After runningdocker compose up -d, the calcom-api service fails to start or immediately exits. The web app works, but API v2 endpoints (/api/v2/...) return connection errors.
Cause: The API v2 service requires several environment variables that are not in the root .env.example. If any required variable is missing, the service will throw a Missing environment variable error and exit on startup.
Solution: Add the following variables to your root .env file (the docker-compose.yml passes these to the calcom-api service):
STRIPE_API_KEY is the API v2 equivalent of STRIPE_PRIVATE_KEY used by the web app. Both are Stripe secret keys but are consumed by different services. If you don’t need Stripe functionality in the API, you can set a placeholder value (e.g., sk_test_placeholder), but the variable must be present.CLIENT_FETCH_ERROR in logs
Symptom: The following error appears in Docker logs, and login/session fails:
NEXTAUTH_URL from within the container’s network.
Solution: Add your domain to the container’s /etc/hosts so it resolves to itself:
NEXTAUTH_URL set to your public URL (required for OAuth callbacks to work).
SSL / HTTPS issues behind a reverse proxy
Symptom: Requests fail with SSL certificate errors when Cal.com is behind a load balancer or reverse proxy that handles HTTPS termination. Solution: Choose one of the following approaches:Option 1: Use HTTP internally (recommended)
Option 1: Use HTTP internally (recommended)
Keep Then configure your reverse proxy to forward the appropriate headers so internal requests work correctly:
NEXTAUTH_URL set to your public-facing HTTPS URL:Option 2: Add internal CA to trusted certificates
Option 2: Add internal CA to trusted certificates
If you are using self-signed certificates internally, add your internal CA to Node’s trusted certificates:
Option 3: Disable TLS verification (not recommended)
Option 3: Disable TLS verification (not recommended)
Database issues
First user setup fails
Symptom: Attempting to create the first admin user via the/setup page results in an error.
Cause: This can occur if the database migrations have not been applied, or if the database is in an inconsistent state.
Solution:
Verify database connectivity
Confirm that your
DATABASE_URL in .env is correct and the database is accessible.The setup endpoint (
/auth/setup) creates the first user with the ADMIN role. It only works when the User table is completely empty. If a previous setup attempt partially succeeded, you may need to manually clear the users table before retrying.Getting further help
If your issue is not listed here:- Search the Cal.com GitHub Issues — many common problems have documented solutions in issue threads.
- Check the Cal.com Community forum.
- Review the Docker configuration and Installation guide for any steps you may have missed.