Resources · Feature guides

Recurring events

Set up weekly classes, monthly committee meetings, and annual festivals once — Site Calendar Pro generates every occurrence automatically, handles skip dates for bank holidays, and lets you override individual instances when life gets in the way.

Why recurring events matter

Manually creating a separate event for every Tuesday yoga class adds up to 52 admin actions a year — and that's before you account for bank-holiday skips, summer breaks, or the week you swap the venue at short notice. Recurring events turn that into a single record: one event post, one set of details, one rule that says "every Tuesday at 7pm" and the calendar populates itself.

Site Calendar Pro's recurrence engine supports the four common patterns most events fall into — daily, weekly, monthly, yearly — plus skip dates for the inevitable exceptions and per-occurrence overrides for when one specific date needs different details (e.g. a different venue for the Christmas social).

How it works under the hood. The parent event stores a _pcal_recurrence meta field holding the rule (frequency, interval, weekdays, end condition). When the calendar renders, Pro expands the rule into individual occurrences on the fly — there's no duplicate post for every date. This keeps the database lean and lets you edit the entire series with a single save.

Before you start

Make sure each of the following is true. If any item fails, fix it before continuing.

  • Site Calendar Pro 1.1.0 or later is active (the Repeats meta box was added in 1.1.0).
  • Your Pro licence is active (see Activating your Pro licence).
  • You have a base event ready to repeat — title, start date, start time, venue, and at least a one-line description. Create one if needed (see Creating your first event).

Step 1 — Open the event editor and find the Repeats meta box

Edit the event you want to repeat (or create a new one). Scroll down past the main content area — the Repeats meta box sits below the Tickets meta box, with a single tick-box labelled This event repeats.

[Screenshot: event editor showing the Repeats meta box collapsed, with the "This event repeats" tick-box unticked]
The Repeats meta box stays out of your way until you tick the box.

Tick This event repeats. The full recurrence controls expand below.


Step 2 — Choose the frequency

The first decision is how often the event repeats. Pick the option that matches your real-world pattern:

  • Daily — every day, or every N days (e.g. every 2 days for an alternating-day fitness class).
  • Weekly — every N weeks, with a day-of-week picker. The most common choice for clubs, classes, and committee meetings. Pick one or more weekdays.
  • Monthly — every N months. Use this for monthly board meetings, monthly drop-ins, monthly market days.
  • Yearly — every N years. Used for annual festivals, anniversary events, AGMs that always fall on the same date.

The Interval field next to the frequency picker controls the "every N" part — leave it at 1 for "every week" / "every month", or change it to 2 for "every 2 weeks" / "every other month".

[Screenshot: Repeats meta box expanded, showing Frequency dropdown set to Weekly, Interval set to 1, and the day-of-week picker visible with Tuesday ticked]
Weekly + Tuesday is the most common combination — recurring Tuesday-night events.

Weekly: pick the days

If you choose Weekly, an extra row appears with seven small day-of-week boxes (Mon, Tue, Wed, Thu, Fri, Sat, Sun). Tick the day or days the event runs. For a single weekly slot, tick one box. For a class that runs Monday and Wednesday, tick both.

Monthly: pick the rule

Monthly recurrences support two patterns. The default is "the same date each month" — e.g. always the 15th. The alternative is "the same weekday-of-month" — e.g. the second Tuesday of every month. The Repeats meta box auto-detects which pattern your start date matches and pre-selects it; switch using the radio buttons if needed.

Months with no 31st. If your event is on the 31st of every month, February (and the months with 30 days) don't have one. Pro handles this by falling back to the last day of the month — so a "31st of every month" rule produces a 28 Feb (or 29 Feb in leap years) and a 30 Apr / 30 Jun / 30 Sep / 30 Nov. Most users don't notice; if you need stricter behaviour, switch to the weekday-of-month pattern.

Step 3 — Set the end condition

Every recurring rule needs an end — otherwise the calendar would generate occurrences forever. Pro offers three end conditions; pick whichever matches your real-world season:

  • Repeat until a specific date — most useful for terms or seasons with a defined end (e.g. "every Tuesday until 17 December 2026"). After that date, no more occurrences appear.
  • Repeat for N occurrences — useful when you know the count but not the calendar date (e.g. "a 10-week beginner course"). Pro stops generating after the Nth occurrence.
  • Repeat forever — only suitable for genuinely permanent slots (e.g. a weekly church service that's been running for 50 years). The calendar generates occurrences out to a rolling 2-year horizon — you can extend it later if needed.
[Screenshot: Repeats meta box showing the End condition section with "Repeat until" radio selected and a date picker showing 17/12/2026]
An end date is the safest choice — leave room for ad-hoc extensions next term.

Step 4 — Add skip dates for known exceptions

Bank holidays, school closures, summer breaks — every recurring schedule has them. Rather than fight the rule, give Pro a list of dates to skip.

  1. In the Repeats meta box, scroll to Skip dates.
  2. Click Add skip date and pick a date from the calendar picker.
  3. Repeat for each date you want to exclude — e.g. 25 Dec (Christmas Day), 1 Jan (New Year's Day), the two weeks of summer holidays.
  4. To remove a skip date, click the small × next to it.

Skip dates take effect immediately — the occurrence on that date disappears from the calendar and the front-end. The next occurrence in the series still happens as normal.

[Screenshot: Skip dates section with two dates listed — 25/12/2026 and 01/01/2027 — and the "Add skip date" button below]
Skip dates are individual exclusions — they don't shift the schedule, they just remove that one occurrence.
Tip. If you've inherited a calendar from another tool and you know roughly which dates to skip but not exact ones, ask your committee or class leader. The cost of getting it wrong is one confused attendee turning up to a closed venue — worth a 5-minute email exchange.

Step 5 — Save and verify

Click Update in the top-right of the editor. The Repeats meta box collapses back to a compact summary that reads, for example:

Weekly on Tuesday, until 17 Dec 2026 (2 skip dates)

Now verify the front-end:

  1. View the calendar page where you've embedded the [pro_calendar] shortcode.
  2. Navigate to next week — your event should appear on the correct day.
  3. Navigate forward 4–5 weeks — the event continues to appear.
  4. Navigate to a week containing a skip date — the event should be absent that week, present the week before and after.
  5. Navigate past the end date — no more occurrences.
You've set up your first recurring event. Every future occurrence is generated on the fly from this one rule — no manual duplication, no spreadsheet of dates, no risk of typing the venue address wrong on week 23.

Overriding a single occurrence

Sometimes one specific date needs to be different — a different venue for the Christmas social, a guest speaker for one week, a 30-minute earlier start because of clock changes. Rather than abandoning the recurring rule, you can override that single occurrence.

  1. From the calendar's front-end, click into the specific occurrence you want to change.
  2. The single-event page shows the inherited details from the parent event.
  3. In WordPress admin, the parent event editor has an Occurrences meta box listing each generated occurrence with an "Override" button next to it.
  4. Click Override next to the date you want to change.
  5. Pro creates a child event for that single date, pre-populated with the parent's details. Edit any field — venue, time, title, description, featured image — and save.
  6. The override appears on the calendar at that date instead of the inherited occurrence. All other dates continue using the parent's details.

To revert an override back to the parent's details, delete the child event from Site Calendar → Events. The calendar falls back to the parent's rule for that date.

[Screenshot: Occurrences meta box on the parent event showing a list of upcoming dates each with an "Override" button, and one date already shown as "Overridden" with a link to the child event]
Overrides are independent child events — editing one doesn't affect the rest of the series.

Editing the rule later

Recurring rules aren't set in stone. Re-open the parent event at any time and change the recurrence — frequency, interval, end date, skip dates. The change applies immediately to all future occurrences.

What happens to past occurrences depends on what you changed:

  • Changing the end date — extends or shortens the series from today forward. Past occurrences are untouched.
  • Adding skip dates — only takes effect for dates in the future. Past skip dates don't retroactively un-cancel.
  • Changing the day-of-week or interval — applies from today forward; past occurrences keep their original schedule.
  • Removing the rule entirely (untick "This event repeats") — all future occurrences disappear; past occurrences remain in the database for reporting.
Attendees and ticketing per occurrence. Each generated occurrence is its own bookable instance. If your event has tickets attached, customers can book on a specific date — the ticket sale is recorded against that occurrence, not the parent. Capacity also applies per occurrence (e.g. a 30-seat yoga studio can take 30 bookings on Tuesday and a separate 30 on Wednesday, not 30 total).

Troubleshooting

"My recurring event only created one occurrence"

The recurrence rule didn't save properly. Three common causes: (1) you forgot to tick "This event repeats" — the meta box looks expanded even when the master tick-box is off; (2) you chose Weekly but didn't tick any weekdays; (3) you chose "Repeat for N occurrences" but left the count blank. Edit the event, check each field is filled in, and Update.

"Occurrences appear on the wrong date"

Usually a timezone mismatch. Site Calendar reads the event's start date and time from the WordPress site's timezone setting (Settings → General → Timezone). If your site's timezone is set to UTC but you're actually in BST, an event you create at 19:00 will display at 18:00 in the summer. Fix the timezone setting, save the event again, and the occurrences regenerate on the correct dates.

"I added a skip date but the event still appears that day"

Hard-refresh the calendar page (Ctrl/Cmd + Shift + R) — calendar pages are aggressively cached on most hosts. If you have a caching plugin (WP Rocket, SG Optimizer, LiteSpeed Cache, W3 Total Cache), purge its cache too. Skip dates take effect on the server immediately; the delay you're seeing is page-level cache.

"The series stops earlier than I expected"

You're either at the "Repeat for N occurrences" limit, or past the "Repeat until" end date. Edit the event and either bump the occurrence count or extend the end date. Save — the next occurrences appear automatically.

"Override appears on the calendar but inherits the parent's title"

Each override is a child event with its own title field — edit the child event (Site Calendar → Events → look for the date suffix in the title) and set a unique title. The child's title overrides the parent for that occurrence only.

"I want every 5 weeks — but the picker only goes to 4"

The Interval field accepts any whole number — type the value directly rather than using the up/down arrows if the picker is limited. 5, 6, 13 are all valid for unusual cadences.

"Daylight saving shifts my event by an hour twice a year"

This is correct behaviour for events with a fixed wall-clock time. Site Calendar honours the site's timezone, so a 19:00 Tuesday event is 19:00 local time year-round — even though the underlying UTC offset shifts in March and October. If you need a fixed UTC time regardless of season (rare; usually only for international online meetings), set the event's timezone explicitly via the per-event timezone override field.


What's next

Stuck? Email support@getsitecalendar.com and we'll help directly. Pro licence holders get priority response.