Features
Recurring and time-slotted events
How to configure recurring classes, daily tours, multi-slot events, and the parent-instance sync rules.
Updated May 20, 2026
Recurring and time-slotted events solve different problems. This page explains both and the sync rules between parent and child events.
Recurring events
A recurring event has:
- A parent event with the rule (e.g. "Every Monday at 6pm").
- Child instances generated automatically on the rule's schedule.
Each child is a real event with its own date and its own attendees. The parent is the template.
Recurrence rules
Configure on the parent event under Settings → Event → Recurrence:
- Frequency - daily, weekly, biweekly, monthly.
- Days of week (for weekly/biweekly) - pick the specific days. Daily/monthly skip this.
- Time of day - what time each instance happens.
- Start date - first instance.
- End date - last possible instance. The background job stops generating after this date.
Display modes
Two ways customers see recurring events on the storefront:
- Separate. Each instance is its own Shopify product. The product catalog shows "Yoga - Mon Oct 5", "Yoga - Wed Oct 7", "Yoga - Mon Oct 12", etc. Use when each instance is significantly different (different teacher, different theme).
- Date picker. One Shopify product. Customers see a calendar UI in the storefront popup and pick a date. The selected date's variant goes to cart. Use when the event is the same every time and the customer just picks a day.
Per-instance overrides
For special cases (e.g. holiday cancellation, double-priced VIP weekend):
- Open a specific child instance.
- Override any field - price, capacity, location, even cancel the single instance.
The parent doesn't change. Only the one child is affected.
Field sync rules
When you edit the parent, fields fall into two categories:
- Always synced - description, location, ticket templates, attendee field definitions, email templates, PDF template, popup template. Any change cascades to every active child immediately.
- Overridable - price, inventory, capacity, specific date/time. Parent value is the default; per-instance override wins.
This means: refresh your event description once on the parent, every future child picks it up. But raise the price for one specific weekend instance without breaking the rest of the series.
Cancelling an instance
To cancel one occurrence (e.g. a holiday):
- Open the child instance.
- Click Cancel instance.
- The status flips to
cancelled. - New sales close.
- Existing attendees see the cancellation in their ticket page.
You can also refund existing attendees from the attendee list.
Pausing the series
To pause the entire recurring series temporarily (e.g. a teacher is on holiday for a month):
- Open the parent.
- Set the recurrence end date to before the pause begins, then later push it back to resume.
Or, individually cancel the affected child instances.
Time-slotted events
A time-slotted event is a single event date with multiple bookable time windows. Different from recurring - it's one event with multiple slots, not multiple events.
When to use which
- "Wine tasting at 10am every Saturday" → recurring weekly, single time of day.
- "Wine tasting on October 12 with 10am, 2pm, 6pm slots" → time-slotted, single event with three slots.
- "Wine tasting every Saturday at 10am, 2pm, 6pm" → recurring weekly + time-slotted (both).
Configuring slots
On the event settings, go to Time slots. For each slot, configure:
- Slot title - e.g. "10:00 morning tasting".
- Start time and end time - the window.
- Inventory - how many tickets exist for this slot.
- Price - can vary per slot (peak vs off-peak).
Each slot becomes its own ticket type (and Shopify variant) under the hood.
Customer experience
In the storefront popup, customers see a calendar (or list, depending on configuration) of available slots. They select one, that slot's variant is added to cart.
Combining slots with recurring
You can run a recurring event with multiple slots per day. The recurrence generates child instances; each child instance has the same slot configuration. So a "Daily Tasting" parent with three slots becomes "Tasting Oct 1" with 10am/2pm/6pm, "Tasting Oct 2" with 10am/2pm/6pm, and so on.
Performance and limits
- No hard cap on recurring instances, but the background job generates ahead - typically a few months out.
- No hard cap on time slots per event, though practical UX caps around 8-10 slots per day.
- Idempotent generation - re-running the recurring generator never creates duplicates.
What's next
- Ticket types and inventory - the underlying tier structure.
- Storefront popup - the calendar UI for date-picker mode.
- Attendee management - managing attendees across instances.
Frequently asked questions
What's the difference between recurring and time-slotted?
Recurring = the event repeats on a schedule (every Monday at 6pm). Each instance is its own event, with its own date. Time-slotted = a single event happens on a single date but with multiple bookable slots throughout the day (10am, 2pm, 6pm wine tastings all on Saturday). Both can be combined - a recurring weekly tour with three slots per day.
How far in the future do recurring instances generate?
Up to the recurrence end date you set. The background job generates instances ahead of time so they're always visible on the storefront. If you set no end date, the recurrence stops at a sensible cap to avoid spawning thousands of instances.
If I edit a recurring parent, do the child instances update?
Yes for most fields - description, location, ticket templates, attendee fields. These are "always synced". Some fields like price and capacity are "overridable" - the parent default applies until you override per-instance.