All use cases

Use case - classes & workshops

How to run recurring classes and workshops on Shopify

By Founder of UpsellShark and a working Shopify merchantUpdated

Short answer

A repeating class works on Shopify once each date can sell out on its own. In Easy Tickets & Events you set the class time once and pick a repeat rule: daily, weekly on chosen weekdays, monthly, or a list of dates you pick by hand. It generates every session as a separate bookable date with its own capacity, attendee list and waitlist. Students pick a date in the storefront popup, pay through your normal checkout, and arrive with a QR code you scan at the door. The app is free right now, capped at 500 tickets a month.

Can you take class bookings on Shopify without a booking app?

You can take the money. Make the class a product, price it, set inventory to the number of spaces in the room, and leave the "Continue selling when out of stock" box on the product page unticked so it stops at capacity. For one workshop on one Saturday, that is all you need.

It comes apart on the second date. Shopify counts inventory per variant, so a single "Drop-in" variant holds one number covering every Tuesday and Thursday you teach. Ten spaces sell and the class closes, including the week nobody has booked yet. A variant per date fixes the counting and hands you a standing job: a new variant every week, forever.

You also have no attendee list. The confirmation is a receipt with the buyer name on it, so the door is you and a phone, with no code to scan.

How do you set up a class that repeats every week?

Create the event, set it to recurring, give it a time. The repeat rule is where the timetable lives, and Easy Tickets & Events takes daily, weekly with a weekday picker, monthly, or a list of dates you pick by hand for a term that skips half term.

  • Frequency: daily, weekly on the weekdays you choose, or monthly
  • Time of day: one sitting, or several, applied across the series
  • Start date and series end date: the app generates every session between them
  • Hand-picked dates: skip the pattern and select each date yourself
A repeat rule card on the left listing frequency weekly, weekdays Tuesday and Thursday, time 18:00 for every session, and a run from 6 January to 31 March. An arrow labelled generates points to a grid of individual class dates on the right, each one a separate bookable session carrying its own capacity, attendee list and waitlist.
The series stops at the end date you set, so push that date back and generate the rest when you are a few weeks out.

Can one class run more than once a day?

Yes, and the times are part of the repeat rule rather than a setting of their own. Under Time slots you give each sitting a Start and an End, so a tasting room running 11:00, 14:00 and 17:00 is three slots on one pattern.

Two modes decide how those times land across the week. Use same times for all days gives every weekday you picked the same list, which is the tour that runs hourly Tuesday to Saturday. Different times per day lets Saturday carry three sittings and Tuesday carry one, which is how most rooms actually book.

A Schedule preview counts the sessions you are about to create and lists the dates, six at first and up to fifty behind Show all. It is where a wrong weekday or an end date that runs too far shows up, while you can still change it.

What happens once the event is set to repeat?

Worth knowing before you build it. The times are stored on the repeat rule, so the Timeslots tab only appears once an event is set to repeat, and a single Saturday with three sittings is still built as a repeating event rather than a one-off.

What you get for that is a sitting that counts on its own. The 11:00 selling out has no effect on the 14:00, and each slot carries its own settings:

  • Its own start and end time
  • Its own Capacity, described in the app as "Total tickets for this timeslot. Leave blank to use the event's default."
  • Its own venue, when you tick Use a different location for this timeslot
  • Its own status, shown as Active, Sold out or Cancelled, so cancelling the 17:00 leaves the 11:00 selling
A repeat rule card on the left listing frequency weekly, repeat on Saturday, and three time slots at 11:00, 14:00 and 17:00. An arrow labelled generates points to a Timeslots list for one Saturday on the right, where the 11:00 sitting shows twelve of twelve sold and is marked sold out, and the 14:00 at five of twelve and the 17:00 at two of twelve are both marked active.
You can also add one by hand. Add timeslot on that tab drops an extra sitting onto a single date, for the Saturday a private group takes the room at 20:00.

If I edit the class, what happens to sessions people already booked?

Edits split in two. Description, location, ticket template, attendee fields and the email and PDF templates cascade, so rewriting the "what to bring" line once lands it on every future Tuesday. Price and capacity go the other way, where the class value is a default and a per-session override wins, which is how the guest-teacher week costs more and the small-room week holds six.

A session you have already edited or cancelled by hand stays as you left it when you save the pattern again. The save reports what it created, what it updated and what it skipped, and the skipped ones are exactly those. The recurring events docs have it field by field.

Should each class date be its own product, or one product with a date picker?

The choice decides what your catalog looks like. In date-picker mode the class stays one product and the popup shows a calendar: bookable dates selectable, full ones greyed, and picking a date drops that session in the cart.

In separate mode every date becomes its own Shopify product with its own page and its own Shopify inventory. A weekly class run for a year is 52 products in your catalog. Worth it when the sessions genuinely differ, a visiting instructor or a themed workshop you want to advertise and rank on a page of its own.

Teaching the same class every week? Take the date picker.

How do you stop one class being overbooked?

Capacity sits on the session, so Tuesday selling out has no effect on Thursday. Remaining spaces update as bookings land, and a full date greys out in the picker instead of quietly taking an eleventh booking.

There are two ways to count. Per-ticket-type inventory gives each rate its own stock, so 8 drop-in places plus 4 member places means up to 12 in the room. Shared inventory pools them into one number, which is what you want when the limit is physical: 10 mats, 8 wheels, sold in whatever mix people buy.

One booking can cover more than one person. A ticket type with a group size of four counts four places against capacity and admits four on a single QR code.

Two ways to count places in one class. On the left, per-ticket-type inventory: 8 drop-in places plus 4 member places equals up to 12 people in the room. On the right, shared inventory: a single pool of 10 places that both drop-in and member bookings draw from, sold in whatever mix people buy.
Capacity belongs to the session rather than the class, so a Tuesday that fills up has no effect on the Thursday.

Can you sell a 10-class pass or a monthly membership?

No, and this is the real gap for studios. Easy Tickets & Events sells a place in a specific session. There is no credit balance a student draws down over the next two months, no punch card, no auto-renewing membership.

Three features sit close enough to be mistaken for one. Group size puts several admissions on one booking for one session. A bundle sells one purchase that generates claim links, so a company buys ten places for a workshop and sends each colleague a link to fill in their own name. Ticket expiry stops a ticket working after a set number of days, and it still buys one session.

If passes or memberships are how the business earns, plan for that now. Shopify itself supports repeat and prepaid purchases, which is what the subscription apps on the App Store are built on, so running one of those alongside Easy Tickets - the subscription app takes the money on a schedule, Easy Tickets runs the timetable and the door - is a workable setup. We would rather say it now than have you find it in month two.

When is an appointment booking app the better answer?

When you are selling somebody's time rather than a place in a room. This app puts a session on the timetable and sells seats in it. Appointment booking software works the other way round: the customer picks the slot and the length, often picks a staff member with it, and that slot is then theirs.

Test it against your own timetable. If Tuesday at 18:00 runs whether one person books or twelve, you want a ticket with a capacity number behind it, which is this app. If the 18:00 exists only because somebody asked for it, and taking it ties up an instructor for fifty minutes, you want booking software.

Worth being blunt rather than letting a studio find out in week three: nothing this app stores knows about a staff member or a bookable resource. Those fields do not exist in it. Shopify keeps a roundup of nine appointment booking apps, checked 14 August 2026, and that is a better place to start than bending a ticketing app into the job.

None of which stops the two sitting side by side. A studio can sell its timetable in Easy Tickets & Events and take its one-to-one sessions in a booking app, the same way a class pass can sit in a subscription app while the timetable stays here.

What happens when a class fills up?

The Add to cart button on that date turns into Join waitlist, and the popup collects a name, an email and optionally a phone number. The waitlist belongs to the session, so a person waiting on Wednesday 18:00 is not sitting on a list for the whole term.

When a place frees up because an order was cancelled or refunded, the app emails waitlisted people automatically, oldest signup first, capped to the number of places that opened. Nothing is reserved. First to click through and check out gets it, so keep the batches small when two places opened and forty people are waiting.

You can also notify people yourself from the waitlist tab, the whole list or one person, which is what you want when you squeeze in an extra mat. A Shopify Flow trigger fires on every signup, so the list can feed Klaviyo too. More in the waitlist docs.

A student cancels: transfer, refund, or move them to another date?

Transfer costs you nothing. The student opens their ticket page or confirmation email, clicks transfer, fills in the replacement name and email, and the app kills the old QR code and issues a fresh one. You are never involved, and the transfer history stays on the record for when the name at the door does not match.

Refund the order in Shopify admin and the app picks it up on its own: the attendee is cancelled, the QR code stops working, and the place goes back on sale, which sets off the waitlist email. The app can also cancel a ticket without refunding, for the late cancellation your terms say you keep.

Moving a booking from Tuesday to Thursday is the thing the app does not do. Transfer changes who holds the ticket and never changes which session it belongs to, and no admin action reassigns a booking to another date. The workaround is a refund plus a fresh booking, which at least hands the place to the waitlist. Worth knowing before you publish a reschedule policy.

Cancelling a whole session does work: open that date, cancel the instance, and sales close while everyone booked sees it on their ticket page.

How do you cut down no-shows in a class?

One reminder email goes out per session, on by default at 24 hours before the start, timed from a fixed list of 1, 2, 6, 12, 24, 48, 72 or 168 hours. Two hours ahead is a nudge and nothing more. Forty-eight gives someone room to cancel, which puts the place back on sale while there is still a weekend to sell it into.

The template is fully editable, so the reminder carries the studio address, the parking situation and your cancellation terms instead of a bare "your event is soon". Branding the ticket and the emails covers the editors for both. Switch on phone capture in the popup if you want to text as well.

What the app has no version of is a no-show report, a deposit-forfeit rule or a strike system. The attendee export carries a Check-ins column and everyone who never scanned is a zero, so the list of people who booked and stayed home is a spreadsheet filter rather than a screen in the admin.

How does the instructor take attendance at the door?

Each session has its own check-in link that you add to the home screen of whatever phone or old tablet lives at the desk. Recurring classes get a Timeslot picker at the top that opens on the nearest session, and you can PIN-protect the page before handing the link to a cover teacher.

The signal question deserves a straight answer, because a basement studio is where it bites. The page itself is cached after the first load, so it still opens on one bar of reception.

A scan is not cached. Checking someone in sends a request to the server, and nothing about it queues up to go later, so test the room before doors rather than counting on the app to ride out a dead connection.

Point the camera at the QR code on the ticket, on a phone or a printed PDF, and the student is checked in against a running count of who is expected. Lost the email? Type the ticket code. Scan the wrong person and there is an undo.

One limit to plan around: the page is a scanner plus a log of who has been scanned, with no browsable list of everyone expected that a teacher ticks off by name. If your instructor wants paper, export the attendee list before class, which covers the whole series with the session on each row. The Shopify POS tile does search by name if you already run POS.

FAQ

Common questions

Do students need a customer account to book a class?
No. The popup collects the student name and email before add to cart, and checkout runs as normal Shopify guest checkout. Shopify customer accounts are optional and mainly save regulars from retyping.
Can I collect injury notes or dietary requirements when someone books?
Yes. Add custom fields as text, dropdown, checkbox or date, and mark the ones you need as required so the popup blocks add to cart until they are answered. Answers sit on the student attendee record, and they can edit later from their ticket page.
Can one class date cost more than another?
Yes. Price is a per-session override, so a guest-teacher week or a bank holiday session is priced on its own. Scheduled price tiers are the other route, where an early-bird price flips to full price at a set time.
Can I charge separately for mat hire or materials?
Yes. Add-ons are option groups on the class, each option with its own price and its own stock, so six aprons sell out on their own while the class still has places. Pick per attendee, where everyone chooses a shirt size, or per order, where one parking space covers the car that brought three people. Setup is in the add-ons docs.
Can I sell a tour or a tasting that runs several times a day?
Yes, as a repeating event with a time slot per sitting. Each sitting keeps its own capacity, its own attendee list and its own check-in, so the 11:00 filling up leaves the 14:00 on sale. The Timeslots tab lists them with a sold count against each, and you can cancel one sitting without touching the rest of the day.
What does it cost, and what counts as a ticket?
It is free. Easy Tickets & Events is currently listed as a free app with every feature included and a cap of 500 tickets a month. One booked place is one ticket, add-ons like mat hire count as zero, and refunded bookings come off the count.

Put your class timetable on Shopify

Set the schedule once, let students pick their date, and scan them in from the phone at the desk. Easy Tickets & Events is free right now, with a cap of 500 tickets a month.

See Easy Tickets & Events