Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,23 @@
}
]
},
{
"group": "Events",
"icon": {
"style": "solid",
"name": "ticket",
"library": "fontawesome"
},
"pages": [
"events/what-is-a-cal-event",
"events/create-an-event",
"events/registration-and-capacity",
"events/manage-guests",
"events/paid-events",
"events/public-event-page",
"events/troubleshooting-events"
]
},
{
"group": "Availabilities",
"icon": {
Expand Down
80 changes: 80 additions & 0 deletions events/create-an-event.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
title: "Create and publish an event"
sidebarTitle: "Create and publish"
description: "Set up an event, fill in the editor, publish it, and understand what happens when you cancel or delete."
---

## Create the event

Go to **Events** in the left sidebar and select **+ Create Event**. The dialog collects only the basics. Everything else is filled in afterwards in the editor.

1. **Event name.**
2. **Event URL (slug)**, suggested from the name. It must be at least 10 characters, use only lowercase letters, numbers, and dashes, and be unique across Cal.com. It is checked against usernames, reserved routes, and other events. If it is already in use, the app tells you the URL is taken.
3. **Starts**, **Ends**, and **Timezone**. The end must be after the start, and the start must be in the future. For in-person events, use the venue's local time.
4. **Private event**, an optional toggle that keeps the event reachable by its URL but hides it from your public event listing.

<Note>
If you type a link into the event name, it is removed from the saved title, and the URL is never allowed to spell out the removed link. If this forces the URL to change, you are told the new URL and that the old one no longer works. The editor always shows the URL the event is actually saved under.
</Note>

## Fill in the editor

The editor is grouped into sections. A live preview of the public page sits alongside the form.

### Setup: Basics

The event name, the event URL (read-only once published), an **About the event** description with a **Translate using AI** option, the date, time and timezone, the **Private event** toggle, and a cover image.

The cover image can be dragged in or browsed for. The ideal size is 800x800 and the maximum is 10 MB. You can replace or remove it later. There is also an option to generate a cover image with AI, which is uploaded when the event is saved.

### Setup: Location

Choose in-person or virtual.

- **In-person** is an address. A map preview is generated automatically after the event is saved, and guests get an **Open in maps** action. Changing the address regenerates the map.
- **Virtual** is either Cal Video, another connected conferencing option, or a custom meeting link.

The exact join link or address is only revealed to a guest after they register.

### Setup: Hosts

You are always listed as a host. Team members can be added, and people outside your team can be invited as external co-hosts by email. Co-hosts accept or decline, and you can see their Invited, Declined, or accepted state, revoke access at any time, or watch a co-host leave the event themselves.

A co-host can edit event details and manage attendees. A co-host **cannot** change the host roster, cancel, delete, or publish the event, or change who appears on the public guest list. Locked controls tell them to contact the main host.

### The remaining sections

- **Registration experience** and **Attendance**: see [Registration, approval and capacity](/events/registration-and-capacity).
- **Attendance → Guests**: available only after the event is published. See [Invite guests and manage the roster](/events/manage-guests).
- **Automation → Workflows and Webhooks**: events use the same editors as bookings.

## Publish the event

An event moves through four statuses:

| Status | What it means |
| --- | --- |
| Draft | Created but not published. Not publicly reachable, and no registrations or invitations are possible yet. |
| Published | Live at its public URL, with registration open. |
| Past | The start time has passed, so registration is closed. |
| Cancelled | You cancelled it. The page stays online marked as cancelled and registration is closed. |

To publish, make sure the form has no errors and all changes are saved. If you cannot publish, check for unsaved changes or form errors first.

On publish, the event is added to your connected calendar and to those of any accepted co-hosts. If that fails, the event still publishes and you are asked to reconnect your calendar. A calendar problem never blocks publishing.

<Warning>
The event URL becomes permanent once published, because links and invites are already circulating. The slug can only be changed while the event is still a draft.
</Warning>

## Cancel or delete an event

**Cancelling** cannot be undone from the app. It closes registration, leaves the page online marked as cancelled, and notifies registered guests. Free confirmed guests receive the standard booking cancellation email. Paid and pending guests receive a dedicated Cal Events cancellation email covering any refund, or a note that nothing was charged. Guests who had already declined or cancelled are not notified again.

**Deleting** removes the event entirely.

## Related

- [What is a Cal Event](/events/what-is-a-cal-event)
- [Registration, approval and capacity](/events/registration-and-capacity)
- [Troubleshooting events](/events/troubleshooting-events)
61 changes: 61 additions & 0 deletions events/manage-guests.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
title: "Invite guests and manage the roster"
sidebarTitle: "Guests and roster"
description: "Send invitations, approve or decline registrations, work the waitlist, and export your guest list."
---

**Attendance → Guests** becomes available once the event is published. It is where you invite people and manage everyone who has registered.

## Invite guests

Select **Invite guests**, paste in email addresses, and optionally add a personal note that is included in the invitation email.

Invitations are separate from registrations. Someone who is invited but never responds does not appear on the roster and does not count toward capacity.

**Sending limits**

- Up to 15 emails per send
- Up to 200 invitations per event
- Up to 50 invitation emails per host per day

Duplicate, already-registered, and invalid addresses are skipped. After sending, you are told how many were invited, skipped, and failed.

<Warning>
Each invitation link is personal to the guest it was sent to and should not be shared or forwarded.
</Warning>

**Invitation statuses** are Pending, Responded (set automatically when that email RSVPs), and Revoked. You can resend an invitation after a one-hour cooldown, or revoke it.

## Work the roster

The roster is split into segments for **Pending**, **Approved**, **Waitlist**, **Declined**, and **All**, with search and summary counts.

Registration statuses are Pending approval, Waitlisted, Payment pending, Approved, Declined, and Cancelled.

From here you can:

- Approve or decline individual registrations, or approve all pending at once. If the event is full, the app reports how many could not be seated.
- Move a guest to the waitlist.
- Promote a waitlisted guest into a seat. This is allowed to go over capacity.
- Reject a waitlist entry.
- Remove an attendee, or **Mark not going**, which takes them off the confirmed list and frees the seat.
- Change a guest's registration status or RSVP response manually.
- View a guest's answers to the registration form.

When you approve someone and the event is already full, the app offers the waitlist instead, or warns you that approving will overbook by one spot.

## Export the roster

You can export the roster to CSV. Invitations are not included, and the export is capped at 4,000 rows. If it was cut off, you are told.

## A note on "attendance"

In the roster, attendance means the guest's RSVP response: Going, Maybe, or Not going.

Cal Events do not have no-show marking or post-event attendance tracking. If you need to record who actually turned up, do it outside Cal.com.

## Related

- [Registration, approval and capacity](/events/registration-and-capacity)
- [The public event page](/events/public-event-page)
- [Paid events with Cal Pay](/events/paid-events)
55 changes: 55 additions & 0 deletions events/paid-events.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
title: "Paid events with Cal Pay"
sidebarTitle: "Paid events"
description: "Charge for tickets on an event, hold seats while guests check out, and handle refunds."
---

<Note>
Paid ticketing is a newer, gated feature and may not be enabled on your account yet.
</Note>

## Events use Cal Pay, not Stripe

Payments on events run through **Cal Pay only**. Stripe and PayPal are not options for events, so there is no need to install Stripe to charge for one.

The payment option lives inside the event's **registration experience**. If you are looking for a **Booking experience → Payments and Seats** tab on an event and cannot find it, that is why: events use the registration experience layout instead. That tab belongs to Links.

## Turn on payment

Switch on **Paid event**, then set a price and currency. The price must be at least the currency's minimum charge.

<Warning>
Paid events cannot be combined with approval or a waitlist. Turn both off before you can charge for an event. On an event that is already paid, those options are unavailable. If you could not enable payment until you disabled approval or the waitlist, that is expected behaviour.
</Warning>

**Payment deadline** sets how long a seat is held while a guest checks out. The form accepts anything from 10 minutes up to 7 days. If you do not set one, your account default applies.

## What the guest experiences

1. The guest RSVPs and their seat is held as **Payment pending**.
2. They receive a "complete your payment" email showing the pay-by deadline.
3. They check out through Cal Pay.
4. Once paid, they are confirmed and receive a paid confirmation and receipt showing the amount paid.

If the deadline passes, the seat is released. The guest is emailed to say their spot was released, that nothing was charged, and that they can register again.

On the public page, the registration button reads **Get your ticket** for paid events.

## Refunds

On the roster, paid guests show as **Paid**, **Awaiting payment**, or **Refunded**. You have two actions:

- **Refund payment** refunds the guest but keeps their registration.
- **Refund and remove guest** refunds them and releases the seat.

If a refund fails, you are emailed so you can refund the guest manually from your payment provider.

## Setting up Cal Pay

Cal Pay setup, payouts, identity verification, fees, and supported payment methods are covered separately. Payouts run through Whop and require identity verification before any money can reach you, so complete that before your first paid event.

## Related

- [Registration, approval and capacity](/events/registration-and-capacity)
- [Invite guests and manage the roster](/events/manage-guests)
- [Troubleshooting events](/events/troubleshooting-events)
71 changes: 71 additions & 0 deletions events/public-event-page.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
---
title: "The public event page"
sidebarTitle: "Public event page"
description: "What guests see at your event's URL, how the registration button changes, and where published events are listed."
---

Your event's public page lives at `cal.com/<event-slug>`.

## What the page shows

- The cover image, title, and description
- The date and time, in the viewer's local time
- The location, or a note that it is revealed after registration
- The hosts
- The guest section, according to your **Public guests** setting
- A registration button

The page can also show scarcity messages, such as how many spots are left or **Near capacity**.

## The registration button

The button changes with the situation:

| What the button says | When |
| --- | --- |
| **Register** | The standard state |
| **Register in one click** | A signed-in Cal.com user, on an event with no extra registration questions, no approval, and no captcha |
| **Request to join** | Approval is required |
| **Join waitlist** | The event is full and the waitlist is on |
| **Sold out** | The event is full and there is no waitlist |
| **Get your ticket** | A paid event |

Returning guests see their own state instead: **You're going**, **Pending approval**, or **You're on the waitlist**. As the host, you see **You're hosting, manage event**.

When the event has ended, has already started, or was cancelled, the page says so and registration is closed.

## What guests should know

- Guests do not need a Cal.com account to register.
- Only one registration per email address per event. Trying again shows that they are already registered.
- Registrants get a personal status link to view or manage their registration.

## Share the event

The **Share event** dialog gives you the link and a QR code, which is useful for posters and slides.

## Where published events are listed

Published events appear in public per-profile event directories:

- `cal.com/<username>/events`
- `cal.com/team/<team-slug>/events`
- `cal.com/org/<orgSlug>/<username>/events`

Each lists that profile's public events.

To keep a specific event out of that listing, turn on the **Private event** toggle. The event stays reachable by its direct link but does not appear in the directory.

<Note>
This is separate from the public profile visibility toggle used for Links, which does not apply to events.
</Note>

## Embedding

The event page can be embedded. When you view your own embedded event, you see a **You're hosting this event** note.

## Related

- [Registration, approval and capacity](/events/registration-and-capacity)
- [Invite guests and manage the roster](/events/manage-guests)
- [What is a Cal Event](/events/what-is-a-cal-event)
52 changes: 52 additions & 0 deletions events/registration-and-capacity.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
title: "Registration, approval and capacity"
sidebarTitle: "Registration and capacity"
description: "Control what guests are asked, whether you approve them, how many can come, and what the public page reveals about who is attending."
---

## The registration form

Under **Registration experience → Registration form**, choose what information guests provide when they register. These questions are specific to event registration and are separate from the booking questions used on Links.

## Require approval

Under **Policies → Privacy and security**, turn on **Requires confirmation** so registrations wait for you to approve them before they are confirmed.

Guests waiting for approval see **Pending approval**, and the public registration button reads **Request to join**.

## Capacity and waitlist

Under **Attendance → Settings**:

- **Limit capacity** with an **Available spots** number, up to 100,000. Capacity is unlimited when the limit is off.
- **Waitlist** lets guests join a waitlist once the event is full.

A few rules are worth knowing before you set these:

- The waitlist is only available together with a capacity limit. Turning capacity off clears the waitlist.
- The waitlist is not available on paid events. Charging for an event means turning approval and the waitlist off first. See [Paid events with Cal Pay](/events/paid-events).

When the event is full, the public page shows **Join waitlist** if the waitlist is on, or **Sold out** if it is not.

## Who guests can see

Also under **Policies → Privacy and security**:

- **Hide host's email** removes it from the event page, the emails, and the calendar events.
- **Public guests** controls whether visitors see who is coming. This setting is owner-only, so a co-host cannot change it.

**Public guests** has three options:

| Option | What visitors see |
| --- | --- |
| Don't show guests | Nothing about who is attending |
| Show guest names | A public list of confirmed guests. Guests can hide their own name |
| Show a going count | "N people are going!" with no names |

The public list shows names and initials only, never emails or photos. A guest who hides their name still counts as going, and the going count excludes anyone who answered **Not going**.

## Related

- [Create and publish an event](/events/create-an-event)
- [Invite guests and manage the roster](/events/manage-guests)
- [Paid events with Cal Pay](/events/paid-events)
Loading