Service Types
Calendar Apps
Calendar apps sync booking data with external calendar services. Category:calendar
Service File: lib/CalendarService.ts
Interface
Registration
Export as default fromlib/CalendarService.ts. The build process automatically registers it:
OAuth Support
For OAuth-based calendars, setisOAuth: true in config.json:
CRM Apps
CRM apps sync contact and booking data with customer relationship management systems. Category:crm
Service File: lib/CrmService.ts
Interface
Example Apps
- Attio -
packages/app-store/attio/ - Basecamp3 -
packages/app-store/basecamp3/
Payment Apps
Payment apps process payments for bookings. Category:payment
Service File: lib/PaymentService.ts
Interface
Payment Options
Define payment timing inzod.ts:
Example Apps
- Alby (Bitcoin) -
packages/app-store/alby/ - BTCPay Server -
packages/app-store/btcpayserver/
Video Apps
Video apps provide video conferencing for bookings. Category:conferencing
Service File: lib/VideoApiAdapter.ts
Interface
Static Video Locations
For video services without dynamic room creation, use theevent-type-location-video-static template:
Analytics Apps
Analytics apps track booking metrics and user behavior. Category:analytics
Service File: lib/AnalyticsService.ts
Interface
Tag-Based Analytics
For tag/script injection (Google Analytics, GTM, etc.), use thebooking-pages-tag template:
components/TagManagerScript.tsx
Automation Apps
Automation apps trigger workflows based on booking events. Category:automation
Webhook-Based
Most automation apps use webhooks:api/webhook.ts
App Features
Event Type Extensions
Apps can add UI to event type configuration usingextendsFeature: "EventType":
components/EventTypeAppCardInterface.tsx
App Settings
Provide a settings interface for installed apps:components/AppSettingsInterface.tsx
Install Button
Custom installation flow:components/InstallAppButton.tsx
Configuration Options
config.json
Complete configuration reference:string
required
Display name shown in the app store
string
required
URL-safe identifier (auto-generated from name)
string
required
Format:
{slug}_{category}string
required
Must match category (or “conferencing” for video category)
string
“EventType” - Adds settings to event types
boolean
default:false
Whether the app uses OAuth authentication
string[]
Other apps required for this app to function
Best Practices
Security
- Never expose
credential.keyin API responses - Use
appKeysSchemafor sensitive credentials - Validate all inputs with Zod schemas
- Use environment-specific API endpoints
Performance
- Implement caching for external API calls
- Use lazy imports for UI components
- Batch operations when possible
- Handle rate limiting gracefully
Error Handling
Testing
Test your service implementations:Examples by Type
Calendar
- Apple Calendar -
packages/app-store/applecalendar/ - CalDAV -
packages/app-store/caldavcalendar/
CRM
- Attio -
packages/app-store/attio/ - Basecamp3 -
packages/app-store/basecamp3/
Payment
- Alby -
packages/app-store/alby/ - BTCPay Server -
packages/app-store/btcpayserver/
Video
- Huddle01 -
packages/app-store/huddle01video/
Automation
- Make -
packages/app-store/make/
Next Steps
Build an App
Complete guide to building your first app
CLI Reference
App Store CLI command reference
Type Definitions
Explore TypeScript type definitions