Skip to main content
This guide walks you through creating a custom Cal.com app using the app-store CLI.

Prerequisites

  • Cal.com development environment set up
  • Node.js 10+ installed
  • Yarn package manager
  • Basic knowledge of TypeScript and React

Step 1: Create Your App

Use the app-store CLI to scaffold a new app:

Interactive Mode

The CLI will prompt you for:
  • App name - Display name for your app
  • Description - Short description (keep under 10 words)
  • Category - Choose from: analytics, automation, calendar, conferencing, crm, messaging, payment, other
  • Publisher - Your name or company
  • Email - Contact email
  • Template - Starting template for your app

Non-Interactive Mode

For automation or CI/CD, pass all options as flags:
The app slug is automatically generated from the name by converting to lowercase and replacing spaces with hyphens.

Step 2: Choose a Template

The CLI offers several templates based on your app’s functionality:

basic

A minimal app that can be installed with no additional features. Good starting point for simple integrations.

event-type-app-card

Adds a card to the event type configuration. Use for apps that extend event types (e.g., Giphy, QR Code). Use case: Payment apps, custom booking fields, event-specific features

booking-pages-tag

Injects tags into booking pages (e.g., analytics, tracking scripts). Use case: Google Analytics, Facebook Pixel, custom tracking

event-type-location-video-static

Adds a static video conferencing location to event types. Use case: Custom video providers that don’t require dynamic room creation

general-app-settings

Provides a settings interface in the app configuration. Use case: Apps requiring user configuration Creates an app that redirects to an external URL. Use case: External tools, documentation links

Step 3: App Structure

Your new app is created in packages/app-store/your-app-slug/ with this structure:

Step 4: Configure Your App

Edit config.json to customize your app’s metadata:
Don’t modify the slug field directly. Use yarn cli edit --slug your-app if you need to change it.

Step 5: Add Dependencies

Update package.json to include any required dependencies:
Install dependencies:

Step 6: Define Schemas

Edit zod.ts to define validation schemas for your app:
appKeysSchema credentials are stored encrypted and never exposed in API responses.

Step 7: Implement Installation Handler

Edit api/add.ts to handle app installation:

Step 8: Add Business Logic

Create service files in the lib/ directory based on your app type:

Calendar App

packages/app-store/my-calendar/lib/CalendarService.ts

Payment App

packages/app-store/my-payment/lib/PaymentService.ts

Step 9: Add UI Components

Create React components for your app’s UI:
packages/app-store/my-app/components/EventTypeAppCardInterface.tsx

Step 10: Generate App Files

Generate the app registry files:
This creates *.generated.ts files that register your app with the Cal.com platform.

Step 11: Test Your App

Start the development server:
  1. Navigate to http://localhost:3000/settings/admin/apps
  2. Find your app in the list
  3. Enable it as an admin
  4. Install it from http://localhost:3000/apps/your-app-slug
  5. Test the installation flow

Step 12: Add App Store Assets

Customize your app’s App Store presence:

DESCRIPTION.md

Add images and detailed description:
Include at least 4 images. Use only filenames (e.g., 1.jpeg), not paths.

README.md

Add installation instructions:

Step 13: Handle Environment Variables

Never add environment variables directly to .env files. Use the zod.ts approach instead.
Define admin-configurable settings in zod.ts:
These settings will be available in /settings/admin for modification.

Watch Mode

During development, use watch mode to automatically regenerate files:

Troubleshooting

App Not Appearing

  1. Ensure yarn build completed successfully
  2. Check that config.json is valid JSON
  3. Restart the dev server
  4. Enable the app in /settings/admin/apps

Type Errors

Run type checks:

Generated Files Not Updating

Next Steps

App Types

Learn about different app service types

CLI Reference

Complete CLI command reference

Contributing

Guidelines for contributing apps to Cal.com

Examples

Browse existing apps for examples