Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/calcom/cal.com/llms.txt

Use this file to discover all available pages before exploring further.

Bookings represent scheduled meetings created through your Cal.com event types. They contain all the information about the meeting, attendees, location, and status.

Overview

A booking is created when someone successfully schedules time through your booking page. Each booking includes:
  • Attendees: Guest information and contact details
  • Meeting details: Time, duration, location, and description
  • Status: Accepted, pending, cancelled, or rejected
  • References: Calendar events, video conferencing links
  • Metadata: Custom data and responses to booking questions
// Core booking structure from schema.prisma:870
model Booking {
  id           Int           @id @default(autoincrement())
  uid          String        @unique
  title        String
  description  String?
  startTime    DateTime
  endTime      DateTime
  status       BookingStatus @default(ACCEPTED)
  attendees    Attendee[]
  location     String?
  responses    Json?         // Booking form responses
  metadata     Json?         // Additional data
}

Booking Status

// From schema.prisma:862
enum BookingStatus {
  CANCELLED     // Booking was cancelled
  ACCEPTED      // Booking is confirmed
  REJECTED      // Booking was declined
  PENDING       // Awaiting confirmation
  AWAITING_HOST // Host needs to respond
}
Default status for instant bookings. Meeting is confirmed and calendar events are created.

Managing Bookings

View Bookings

Access your bookings from the main dashboard:
1

Navigate to Bookings

Click “Bookings” in the sidebar to view all upcoming and past meetings
2

Filter by Status

Use filters to view specific booking types: upcoming, pending, cancelled, or past
3

View Details

Click any booking to see full details, attendee information, and actions

Confirming Bookings

For event types with requiresConfirmation: true:
{
  requiresConfirmation: true,
  requiresConfirmationWillBlockSlot: true  // Prevent double-booking
}

Cancelling Bookings

// From schema.prisma:899-901
{
  cancellationReason: "Schedule conflict",
  cancelledBy: "user@example.com",
  status: "CANCELLED"
}
Cancellation reasons can be required based on event type settings. See requiresCancellationReason in Event Types.

Rescheduling

// From schema.prisma:906-908
{
  rescheduled: true,
  fromReschedule: "original_booking_uid",
  rescheduledBy: "attendee@example.com"
}
Rescheduling creates a new booking and marks the original as cancelled. The original booking UID is stored in fromReschedule.
For Round Robin events with rescheduleWithSameRoundRobinHost: true, the same host is automatically assigned to rescheduled bookings.

Booking Properties

Attendee Information

// From schema.prisma:845
model Attendee {
  id          Int     @id
  email       String
  name        String
  timeZone    String
  phoneNumber String?
  locale      String?  @default("en")
  noShow      Boolean? @default(false)
}

Payment Status

// From schema.prisma:895-896
{
  paid: false,
  payment: [{
    amount: 5000,      // in cents
    currency: "usd",
    success: true,
    externalId: "pi_abc123"  // Stripe payment ID
  }]
}

Recurring Bookings

// From schema.prisma:908
{
  recurringEventId: "rec_abc123",  // Links recurring instances
  // Multiple bookings share the same recurringEventId
}

Seats (Group Bookings)

// From schema.prisma:912
seatsReferences: BookingSeat[]

// Each seat represents one attendee in a group booking
model BookingSeat {
  id         Int
  bookingId  Int
  attendeeId Int
  referenceUid String  // Unique per seat
}

Booking References

Booking references link to external calendar events and video conferencing:
// From schema.prisma:818
model BookingReference {
  type          String  // "google_calendar", "zoom", etc.
  uid           String  // External event ID
  meetingId     String? // Video meeting ID
  meetingUrl    String? // Join URL
  meetingPassword String?
  credentialId  Int     // Which credential was used
}

Calendar Sync

Events are created in your connected calendars (Google, Outlook, etc.)

Video Conferencing

Zoom, Google Meet, or MS Teams links are automatically generated

Booking Metadata

// From schema.prisma:914
metadata: {
  // Video call settings
  videoCallUrl?: string;
  
  // App-specific data
  apps?: {
    stripe?: { paymentIntentId: string };
    salesforce?: { leadId: string };
  };
  
  // Custom tracking
  utm_source?: string;
  utm_campaign?: string;
}

Workflow Integration

Bookings trigger workflow automations:
// From schema.prisma:910
workflowReminders: WorkflowReminder[]

// Scheduled reminders for this booking
model WorkflowReminder {
  id         Int
  bookingUid String
  method     String  // EMAIL, SMS, WHATSAPP
  scheduled  Boolean
  scheduledDate DateTime
}
See Workflows for automation details.

No-Show Tracking

// From schema.prisma:855, 921
{
  noShowHost: false,     // Host didn't attend
  attendees: [{
    noShow: false        // Attendee didn't attend
  }]
}
No-show data can be used in Round Robin weight calculations when includeNoShowInRRCalculation: true.

Booking Limits

Event types can limit bookings per user:
// From EventType schema.prisma:271-272
{
  maxActiveBookingsPerBooker: 3,  // Max concurrent bookings
  maxActiveBookingPerBookerOfferReschedule: true  // Allow reschedule when limit reached
}

Internal Notes

// From schema.prisma:931
internalNote: BookingInternalNote[]

// Private notes visible only to hosts
model BookingInternalNote {
  id        Int
  bookingId Int
  note      String
  createdBy Int  // User who created the note
}
Internal notes are never visible to attendees and can be used for team coordination.

Booking Creation Sources

// From schema.prisma:932
enum CreationSource {
  API_V1  // Created via v1 API
  API_V2  // Created via v2 API
  WEBAPP  // Created through web interface
}

Common Workflows

Confirming Pending Bookings

1

Navigate to Pending

Filter bookings by “Pending” status
2

Review Details

Check attendee information and booking form responses
3

Accept or Reject

Click “Accept” to confirm or “Reject” with a reason
4

Attendee Notification

Attendees automatically receive email confirmation or rejection notice

Handling Cancellations

1

Open Booking

Click the booking from your list
2

Cancel Booking

Click “Cancel” and optionally provide a reason
3

Notifications Sent

All attendees receive cancellation emails automatically
4

Calendar Updated

Events are removed from all connected calendars

Rescheduling a Meeting

1

Attendee Initiates

Attendee clicks reschedule link in confirmation email
2

Select New Time

Attendee picks a new time from available slots
3

New Booking Created

Original booking is cancelled, new booking is created with fromReschedule reference

Best Practices

Use Internal Notes

Add context for team members about specific bookings

Track No-Shows

Mark no-shows to improve Round Robin distribution

Require Cancellation Reasons

Collect feedback to improve your booking process

Set Booking Limits

Prevent over-booking with per-user limits

Build docs developers (and LLMs) love