It comes round. Type it once.
A weekly quiz, a monthly market, a class on Tuesdays and Thursdays. Give the loop a shape, a length and its gaps, and every date after that draws itself.
Quiz Night
Tue + Thu · 19:30Weekly, no end date, one date taken out in week four.
11 dates on the calendar. One record behind them. Change the time once and all 11 move together.
The unit
The unit is the loop, not the date.
What you type
1 event
A pattern, an end and any exceptions. Fifty-two Tuesdays entered by hand is fifty-two chances to mistype a time.
What comes out
6 patterns
Daily through yearly, with day-of-week ticks on the two weekly patterns and an interval of up to fifty-two weeks.
How it stops
3 ends
Never, a last date, or a number of dates. A loop with an end is the difference between a season and a calendar nobody trusts.
Shape, length, gaps. Three settings, all on the free plan. Start with the shape
The shape
Six patterns, one ruler.
The same eight weeks, measured six ways. A month grid would draw all six the same size. On a ruler you can see what you are choosing.
| Frequency | Dates | |
|---|---|---|
| Daily daily | 56 | |
| Weekly weekly | 16 | |
| Every N weeks every_n_weeks | 3 | |
| Monthly, same date monthly_date | 2 | |
| Monthly, same weekday monthly_weekday | 2 | |
| Yearly yearly | 1 | |
Where the day ticks apply
FreeThe seven day-of-week checkboxes appear for weekly and every-N-weeks, because those are the patterns that need them. Monthly and yearly take their day from the event's own start date, so an event that starts on the second Tuesday keeps landing on the second Tuesday.
Every other week, or every fifth
FreeEvery N weeks takes an interval from 2 to 52 alongside the day ticks. Alternate Fridays, a market every third Saturday and a quarterly meeting all live here rather than in six separate events.
The length
Give the loop an end.
Same five weeks of Wednesdays, three ways of finishing. Two of them stop on their own; one of them is still going next February unless somebody remembers.
Never
FreeIt keeps producing dates until you change it.
On a date
FreeThe last date is 25 March. Nothing after it.
After a number of dates
FreeThree dates, then it is done.
"Never" is a perfectly good answer for a weekly night that has no planned last date. It is just worth choosing it on purpose rather than by default.
The gaps
A week off is a gap, not a notice.
Date exceptions edit the loop in both directions, and neither of them leaves a mark on your public calendar.
Exclude Dates
FreeTake a date out and the day is simply absent. No struck-through row, no cancellation banner, nothing for a guest to interpret. Closed for the bank holiday reads exactly like a week you were never on.
Include Dates
FreeAdd a date the pattern would never produce. An included date is kept even when it falls outside the pattern or past the end condition, so a one-off extra session does not need the loop rebuilt around it.
If a date somehow lands in both lists, Exclude wins. That is deliberate: the list that removes a date should always be the one you can trust.
Every turn
One record. Separate counts.
The loop is one event, but the numbers that matter are counted date by date. Next Thursday selling out does not close the one after it.
| Date | Sold | Left |
|---|---|---|
| Thu 5 Mar | 38 | 2 |
| Thu 12 Mar | 40 | Full |
| Thu 19 Mar | 22 | 18 |
| Thu 2 Apr | 9 | 31 |
| Thu 9 Apr | 4 | 36 |
| Thu 16 Apr | 0 | 40 |
26 March is not a row on this table. An Exclude Date took it out, so there is no date to sell.
Per date
What each turn owns
- Ticket inventory, counted against the same allowance from zero on every date.
- Free registration and its capacity limit, with the seats left worked out for that date.
- Check-in, which opens on the date you are working and counts only that date's arrivals.
- A page of its own, so you can send somebody the link to one date rather than to the series.
Shared
What the loop owns
The name, the start time, the length, the description, the venue and the ticket types belong to the whole loop. Edit one of those and every date follows, which is the point.
Worth being exact about one thing: a ticket type's sales window is a single start and end moment for the type, not a window recalculated for each date. Inventory and capacity count per date. The window does not.
Registration with a capacity limit is free on every plan, and so is selling: 25 paid tickets a month per schedule, counted across the loop's dates rather than reset by each one. Five dollars a month takes that ceiling off and adds check-in and the waitlist, and Event Schedule takes zero platform fees on ticket sales on every plan.
Leaving the building
One record here. Ninety days out there.
Your schedule publishes a calendar feed anyone can subscribe to, and that is where the loop is unrolled date by date.
The subscribe feed
FreeThe iCal feed writes one entry per date for the next 90 days, each one linking to that date's own page. Subscribe once and the dates keep arriving.
One date at a time
FreeEvery event page offers a download for the single date somebody is looking at. It shares its identifier with the feed, so a calendar app updates the entry it already has instead of adding a second one.
Your own calendar
FreeTwo-way sync with Google Calendar, Outlook and Microsoft 365, or any CalDAV server, on every plan. It syncs the event record itself and brings edits back. It does not hand the connected calendar a repeat rule, so the feed above is the one that unrolls the dates.
Ninety days of one weekly loop
Thirteen weeks, two dates a week, one week taken out for a holiday. 24 entries in the feed, from one thing you typed.
The feed is the side guests subscribe to. For the calendar you work out of, connect it directly instead.
Everything else
Once the loop is running.
One pass for the whole loop
ProBecause the loop is one record, a season pass can be tied to it: valid for every date of that loop, once per date. Sold next to single-date tickets rather than instead of them. If you would rather sell a fixed number of visits, a pass can carry a use count instead, so ten classes on one code works too.
Each redemption is stored against the date it happened on, so you can see which weeks the pass holders actually turned up to. Advance booking is a separate switch, off until you turn it on, and it is the one that lets you cap how many seats pass holders may reserve on any one date.
When one date fills
ProTurn the waitlist on and people join once that date is gone. If a place comes back, they hear about it automatically.
Not announced yet
FreeA loop you are not ready to publish sits on your own calendar as a draft: visible to you and to anyone signed in on the schedule, and to no guest at all until you say so.
Tell the regulars
FreePeople follow your schedule, and you write to them when the pattern changes or a new season of the class opens. Open and click rates afterwards tell you whether it landed.
The number worth knowing: 10 emails a month on Free, 100 on Pro and 1,000 on Enterprise, counted per recipient rather than per send. Nothing is sent on your behalf, so a new date never mails anybody without you writing it.
On the site you have
FreeEmbed the calendar on your own site and the loop's dates show up there too, without a second place to keep them right.
A loop you can copy
FreeClone a recurring event and the pattern comes with it, frequency, interval, end condition and both date-exception lists, so next term's class starts from this term's settings rather than from an empty form. Put the beginners' loop and the improvers' loop in different sub-schedules and guests can colour-code and filter between them on the same page.
Running the class online as well? Mark it as an online event and paste the link. How online events work
Three settings
Pick the shape
Choose one of the six frequencies. For weekly and every-N-weeks, tick the days it falls on and set the interval.
Pick the length
Never, a last date, or a number of dates. This is the setting that stops a loop selling tickets into next year.
Pick the gaps
Exclude the weeks you are off and include the one-offs the pattern would miss. Exclude wins if a date is in both.
Free forever. Upgrade when you're ready.
Zero platform fees on ticket sales. You only pay Stripe's processing fee.
See all plansRelated features
Frequently asked questions
Everything people ask before they put a regular event on a pattern.
What recurrence patterns are available?
Six. Daily, weekly on the days of the week you tick, every N weeks on the days you tick (from 2 to 52 weeks), monthly on the same date, monthly on the same weekday, and yearly. The day-of-week checkboxes only appear for the weekly and every-N-weeks patterns; the monthly and yearly patterns take their day from the event's own start date, so a monthly event that starts on the second Tuesday keeps landing on the second Tuesday.
Can I change a single date without changing the rest?
Not from inside the series, and it is worth knowing exactly where the line falls. A recurring event is one record: the name, the start time, the length, the description and the ticket types belong to the whole loop, so editing the start time moves every date. What is genuinely per date is the part that has to be: ticket inventory, registration capacity, check-in, and each date's own page. If one date is really a different event, take it out with an Exclude Date and add it back as its own event.
Can I add or skip specific dates in a recurring series?
Yes. Exclude Dates take a date out of the pattern, and Include Dates add a date the pattern would not have produced. Exclude wins if a date is in both lists, and an included date is kept even when it falls outside the pattern or past the end condition, so a one-off extra session does not need the loop rebuilt around it.
What do guests see on a date I removed?
Nothing. The date is simply not on the calendar. There is no struck-through row and no cancellation notice, so an excluded date reads as "we are not on that week" rather than as something having gone wrong.
Can two sittings on the same day be one recurring event?
No, and that is worth saying plainly. A recurring event carries one start time and one length, so it produces at most one date per day it falls on. A matinee and an evening, or a morning class and a lunchtime class, are two events with two patterns. It is slightly more setup, and it keeps the two start times and their tickets properly apart.
How do recurring events reach other calendars?
Two-way sync with Google Calendar, Outlook and Microsoft 365, or any CalDAV server is free on every plan, and it carries the event record itself across. What it does not do is hand the connected calendar a repeat rule, so do not expect the series to appear there as a repeating entry. The place a loop is expanded date by date is your schedule's iCal feed: it writes one entry per date for the next 90 days, each linking to that date's own page. Every event page also offers a download for the single date somebody is looking at, sharing its identifier with the feed so a calendar app updates the entry it already has.
Can one ticket cover every date of the loop?
Yes, on the Pro plan. A season pass can be set to cover every date of the loop, once per date, and it is sold alongside single-date tickets rather than instead of them. Advance booking is off by default, which means the pass is scan-at-the-door until you switch it on; switching it on is also what lets you cap how many seats pass holders may reserve on a given date.
Free forever
Set the loop once. Stop retyping Tuesdays.
Patterns, end conditions and date exceptions are free forever, and the free plan sells 25 paid tickets a month. Five dollars a month takes the ceiling off and opens check-in, and nothing is taken from the door on either.
No credit card required