Workshops, launch parties, tastings, classes, gigs – if you sell a seat rather than a parcel, the Events module handles it. An event is a product with a date, a place, a ticket price, and a headcount, so it flows through your normal checkout and orders.

## Turn it on

Open **Settings → Modules** and enable **Events**. An **Events** entry appears in your sidebar.

## Create an event

Choose **New event** and fill in the details.

| Section | What you set |
|---------|--------------|
| **Status** | Draft while you're preparing, published when it's ready to sell |
| **Publication** | On a draft, an optional **Publish at** time – sales open by themselves |
| **Name & description** | The event title and a short summary shown on listings |
| **Poster** | The event image – PNG, JPG, WebP, or AVIF, up to 4.5 MB |
| **When & where** | Date, time, and location – shown on the event page and on ticket emails |
| **Guests** | What you call an attendee ("Guest", "Attendee", "Player") and any names you're adding yourself |
| **Tickets** | The ticket price, or free entry |
| **Capacity** | How many tickets exist – leave it empty for no limit |
| **Attendee details** | Whether checkout asks who each seat is for – see below |
| **Groups** | Optional event groups for organizing a series or a festival lineup |

> **Tip:** Fill in the venue properly. It appears on the ticket email, and "Hotel Lobby, 7pm" saves you a dozen "where exactly?" messages on the day.

## Open ticket sales at a set time

A draft event can go live on its own. While the event is a draft, set **Publication → Publish at** to the date and time sales should open, and the event publishes itself at that moment – no one has to be awake at midnight for an on-sale.

Because a draft event can't be added to a cart or checked out, the scheduled time is genuinely "ticket sales start here". Change the date to move the on-sale, clear it to cancel, or publish by hand at any point – the schedule simply stops applying.

> **Tip:** Announce the on-sale time and schedule it for the same moment. A queue that forms in advance is worth far more than a quiet publish nobody noticed.

## Decide whether you need names on the door

The **Attendee details** setting controls what checkout asks for, and it's per event – a workshop where you need to know who's coming has different needs from a gig where a ticket is a ticket.

| Setting | What happens at checkout |
|---------|--------------------------|
| **None** | Nobody is asked. You get the buyer, and that's it. |
| **Optional** | Buyers can add a name and email per ticket if they want to. The default. |
| **Required** | Payment is blocked until every seat has a name and a valid email. |

Buyers get their own details offered as a one-tap fill for the first ticket, so a single-ticket purchase isn't made tedious by this.

> **Tip:** Use **Required** when the name genuinely matters – a certificate, a dietary requirement, a guest list on the door. Use **Optional** otherwise. Every extra required field costs you a percentage of buyers, and for a five-ticket group booking you're asking someone to type ten fields before they can pay.

If an event requires details and some tickets are still missing them – a booking made before you turned the setting on, for instance – the event shows a **missing details** badge and the affected attendees are flagged in the list. The buyer can still fill them in after purchase; you never have to chase a payment that already went through.

## How tickets reach the buyer

When someone buys, a ticket is issued per seat and confirmed by email. Buyers can retrieve their tickets later with the code from that email – so a forwarded confirmation is all a guest needs to get in.

## Find and export your attendees

Open an event to see everyone coming, newest bookings first. Click the **Attendee** column header to re-sort by name, A–Z or Z–A.

- **Search** the list by name or email, straight from the card header. This is the one to use on the door when someone insists they're on the list.
- **Export to CSV** for a printed guest list, a check-in sheet, or a badge run. The export always covers the full list, not just what your search is currently showing.

You can also search attendees from anywhere in the admin – press <kbd>Cmd</kbd>/<kbd>Ctrl</kbd> + <kbd>K</kbd> and type a name to jump straight to their event. Opened from an events page, that search starts scoped to events; press Backspace on the empty box to widen it to your whole store.

## Upcoming and past

Your events list splits into **Upcoming** and **Past** tabs. Upcoming events are ordered by whichever happens soonest, so the top of the list is always what needs your attention next; past events are ordered most recent first. Events with no date sit between the two.

## Capacity and sell-outs

Capacity is the number of tickets available. Once they're gone, the event stops selling – no overbooking a room that only holds thirty.

> **Tip:** Hold back a few seats from the public capacity for organizers, press, or the friend of a friend who always turns up. It's much easier than trying to squeeze in an extra chair later.

## Group your events

Event groups let you bundle related events – a course with four sessions, or a season of tastings – so shoppers can browse the whole series in one place.

## Move someone to a more expensive ticket

Sooner or later a guest who bought the standard ticket wants the premium one – a regular pass upgraded to an investor pass, general admission to VIP. The two tickets cost different amounts, so the job is really "collect the difference and update the booking". There are two clean ways to do it.

### Option A: charge only the difference

Best when you want the guest to pay as little as possible and you'd rather not touch the original order.

1. Create a product for the upgrade – *"Investor Pass – upgrade"* – priced at the **difference** between the two tickets.
2. Set its status to **Hidden** and its stock to **1**. Hidden means it won't appear in your store, your search, or any category – but it can still be bought by anyone who has the direct link. Stock of 1 stops anyone else stumbling into it.
3. Send the guest the product link. They pay through your normal checkout, so it's a real payment with a real order behind it.
4. Adjust your ticket counts by hand afterwards: one fewer premium ticket available, one more standard ticket.

### Option B: refund and rebuy

Best when the two tickets are genuinely different products – different name on the ticket email, different guest details, different capacity pool.

1. Refund the original order in full – see [Issue refunds and handle returns](/help/orders/refunds-and-returns). Choose to restock so the standard ticket goes back on sale.
2. Send the guest the link to the premium ticket and let them buy it normally.

The guest gets the correct ticket email and their details are captured properly, and your capacity counts look after themselves. The trade-off is that the guest pays the full higher price up front and waits for the refund, and you pay payment processing on both transactions.

> **Editing the order instead?** You *can* open the order and swap the ticket for the more expensive one. Two things to know before you do: it won't charge the customer anything – the order shows what's left to collect, and you take that payment yourself, by transfer or in person – and the guest details attached to the ticket you swapped out aren't carried over, so re-enter them. Ticket counts don't change either. It's the right tool when the difference is being settled off-platform, and the wrong one if you want the money through checkout.

## FAQ

### Do event orders show up with my normal orders?

Yes. A ticket sale is an order like any other, so you'll find it in [View and manage orders](/help/orders/manage-orders) with the buyer's details.

### Can I sell free tickets?

Yes. Set the event to free entry and shoppers reserve a seat without paying – useful for open days and launches where you still need a headcount.

### What if I need to cancel an event?

Unpublish it so no more tickets sell, then refund the ticket holders – see [Issue refunds and handle returns](/help/orders/refunds-and-returns). Email the attendees so nobody turns up to a locked door.

### A guest wants to swap to a different ticket type. How do I take the extra money?

Either sell them a hidden "upgrade" product priced at the difference, or refund the original ticket and let them buy the new one – see [Move someone to a more expensive ticket](#move-someone-to-a-more-expensive-ticket). Both put a real payment through your checkout, which keeps your revenue and your records straight.

### Can I add attendees myself?

Yes. Names you add in the Guests section count toward the event alongside tickets bought online, which covers comps and door sales.

### Can I get a guest list to print?

Export the attendee list to CSV from the event page and open it in a spreadsheet. The export is always the complete list.

### A buyer says checkout won't let them pay.

If the event has **Attendee details** set to **Required**, every seat needs a name and a valid email before payment goes through. A typo'd email address is the usual culprit. Switch the event to **Optional** if you'd rather collect the details afterwards.

## What's next

- Promote the event with [Send newsletters & grow subscribers](/help/marketing/newsletters-and-subscribers).
- Refund a ticket in [Issue refunds and handle returns](/help/orders/refunds-and-returns).
- Explore other capabilities in [Modules](/help/getting-started/modules).