Skip to main content
Organizations in Cal.com enable you to easily and effectively manage multiple teams under a unified structure. An organization lives above the teams layer, providing centralized management, billing, and branding.

Overview

Organizations allow you to:
  • Manage multiple teams from a single interface
  • Apply consistent branding across all teams
  • Centralize billing and seat management
  • Control member access with organization-level permissions
  • Use custom subdomains for your organization

Setup Requirements

1. License Configuration

Organizations is an Enterprise Edition feature requiring a valid license key:
To obtain a license key, contact Cal.com sales.

2. Environment Variables

Configure the following environment variables:
.env

3. DNS Configuration

Local Development

For local development, add entries to your hosts file:

Production

When an organization is created in production, DNS setup is required: Vercel DNS (Automatic):
.env
Cloudflare DNS (Automatic):
.env

Creating an Organization

Step 1: Enable Feature Flag

  1. Log in as an admin user
  2. Navigate to Settings → Features
  3. Enable the “Organizations” feature flag

Step 2: Create Organization

  1. Visit /settings/organizations/new
  2. Fill in organization details:
    • Name: Organization display name
    • Slug: URL-safe identifier (e.g., acmeacme.cal.com)
    • Owner Email: Primary organization administrator
    • Billing Period: Monthly or Annual
    • Seats: Number of user licenses
  3. Complete the setup flow

Step 3: Admin Approval

  1. Log in as an admin
  2. Navigate to Settings → Organizations
  3. Review and approve the pending organization
  4. Verify DNS setup status

Organization Structure

Organizations follow a hierarchical structure:

Permissions

Organization permissions are hierarchical: Source: packages/features/ee/organizations/lib/OrganizationPermissionService.ts

Auto-linking Members

When ORGANIZATIONS_AUTOLINK=1 is enabled, users signing up with external providers (like Google) are automatically added to organizations matching their email domain. Requirements:
  • Organization must have verified the domain
  • User email domain must match organization’s domain
  • Works with SAML and social login providers
Source: packages/features/ee/sso/lib/sso.ts:26-54

Branding

Organizations can customize their branding:
  • Logo: Organization logo displayed across all pages
  • Brand Color: Primary color for UI elements
  • Banner: Hero image for public-facing pages
  • Bio: Organization description
Branding is applied to:
  • Organization subdomain pages
  • Team booking pages
  • Email notifications
  • Public profiles
Source: packages/features/ee/organizations/lib/getBrand.ts

Billing

See Billing for detailed information on organization billing, seat management, and payment processing.

Subdomain Management

Each organization gets its own subdomain: Format: {organization-slug}.cal.com Features:
  • Isolated authentication per organization
  • Custom branding and styling
  • Team pages under organization domain
  • Secure cookie handling across subdomains
Source: packages/features/ee/organizations/lib/getBookerBaseUrlSync.ts

Migrating Teams to Organizations

Existing teams can be migrated to an organization:
  1. Create organization onboarding with team selection
  2. Mark teams as isBeingMigrated: true
  3. Complete organization creation
  4. Teams maintain their existing members and settings
  5. Teams now operate under organization subdomain
Source: packages/features/ee/organizations/lib/OrganizationPaymentService.ts:320-323

API Access

Organizations can be managed programmatically via the tRPC API:
Source: packages/features/ee/organizations/repositories/OrganizationRepository.ts

Troubleshooting

Local Development Issues

Camera/Microphone Access: Browsers block media access on non-HTTPS hosts except localhost. For video meetings:
  • Replace app.cal.local with localhost in meeting URLs
  • Or use tunneling tools: ngrok, tunnelmole
  • Or generate local SSL certificates with mkcert
Example:

DNS Not Configured

If you see “DNS setup pending” badge:
  1. Verify Vercel or Cloudflare credentials are correct
  2. Check organization slug doesn’t conflict with reserved subdomains
  3. Review admin email for DNS setup instructions
  4. Manually verify subdomain resolves correctly
Reserved subdomains: app, auth, docs, api, saml, www, admin, status Source: .env.example:65

Best Practices

  1. Use meaningful slugs: Choose organization slugs that are professional and represent your brand
  2. Verify domains early: Complete domain verification before inviting members
  3. Plan seat allocation: Calculate required seats including future growth
  4. Test subdomains: Verify all subdomains work before going live
  5. Configure SSO first: Set up SAML/SSO before onboarding users for seamless authentication