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: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
.env
Creating an Organization
Step 1: Enable Feature Flag
- Log in as an admin user
- Navigate to Settings → Features
- Enable the “Organizations” feature flag
Step 2: Create Organization
- Visit
/settings/organizations/new - Fill in organization details:
- Name: Organization display name
- Slug: URL-safe identifier (e.g.,
acme→acme.cal.com) - Owner Email: Primary organization administrator
- Billing Period: Monthly or Annual
- Seats: Number of user licenses
- Complete the setup flow
Step 3: Admin Approval
- Log in as an admin
- Navigate to Settings → Organizations
- Review and approve the pending organization
- Verify DNS setup status
Organization Structure
Organizations follow a hierarchical structure:Permissions
Organization permissions are hierarchical:| Role | Permissions |
|---|---|
| Owner | Full access to organization settings, billing, members, and teams |
| Admin | Manage members and teams, configure organization settings |
| Member | Access to assigned teams only |
packages/features/ee/organizations/lib/OrganizationPermissionService.ts
Auto-linking Members
WhenORGANIZATIONS_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
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
- Organization subdomain pages
- Team booking pages
- Email notifications
- Public profiles
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
packages/features/ee/organizations/lib/getBookerBaseUrlSync.ts
Migrating Teams to Organizations
Existing teams can be migrated to an organization:- Create organization onboarding with team selection
- Mark teams as
isBeingMigrated: true - Complete organization creation
- Teams maintain their existing members and settings
- Teams now operate under organization subdomain
packages/features/ee/organizations/lib/OrganizationPaymentService.ts:320-323
API Access
Organizations can be managed programmatically via the tRPC API: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.localwithlocalhostin meeting URLs - Or use tunneling tools:
ngrok,tunnelmole - Or generate local SSL certificates with
mkcert
DNS Not Configured
If you see “DNS setup pending” badge:- Verify Vercel or Cloudflare credentials are correct
- Check organization slug doesn’t conflict with reserved subdomains
- Review admin email for DNS setup instructions
- Manually verify subdomain resolves correctly
app, auth, docs, api, saml, www, admin, status
Source: .env.example:65
Best Practices
- Use meaningful slugs: Choose organization slugs that are professional and represent your brand
- Verify domains early: Complete domain verification before inviting members
- Plan seat allocation: Calculate required seats including future growth
- Test subdomains: Verify all subdomains work before going live
- Configure SSO first: Set up SAML/SSO before onboarding users for seamless authentication