Multisite

Owl is built for multisite from the ground up — and specifically designed to avoid the propagation and Matrix-field bugs that affect other calendar plugins.

What’s shared vs. per-site

Owl deliberately splits an event’s data:

  • Shared across sites: the start/end instants, recurrence rule, timezone and occurrences. A concert happens at one moment in time regardless of which site’s audience is reading about it.
  • Per site: the title, body and slug — the translatable, localisable content.

Keeping dates and recurrence on a single shared table (rather than duplicating them per site) is what prevents the drift and propagation bugs that show up when every site stores its own copy of the schedule.

Querying per site

Front-end queries are automatically scoped to the current site, returning that site’s title and slug for each occurrence while sharing the underlying schedule. You can target another site explicitly with the standard site parameter:

{% set occurrences = craft.owl.events()
  .calendar('concerts')
  .site('de')
  .rangeStart('today')
  .all() %}

Timezones across sites

Because instants are stored in UTC and expanded in the event’s own timezone, a single event reads correctly on every site no matter where its audience is — and DST is handled consistently everywhere.

More in Site Features

Pairs well with Owl

The bigger pieces a client asks for by name. Events, bookings, memberships, courses, reviews, a support desk, job listings and the rest.