Migrating from Solspace Calendar

Owl was designed as a maintained, fairly-priced alternative to Solspace Calendar. If you’re on Solspace today, here’s what changes — mostly for the better.

What you stop paying for

Solspace puts recurrence, ICS export and front-end submission behind its $199 Pro tier. In Owl, all three are in the free Lite edition:

FeatureSolspaceOwl
RecurrencePro ($199)Lite (free)
ICS export / subscribePro ($199)Lite (free)
Front-end submissionPro ($199)Lite (free)
GraphQLPro ($199)Lite (free)
Commerce ticketing—Pro ($149)
Price$99 / $199Free / $149

Template changes

Owl’s Twig API mirrors Solspace’s parameters on purpose, so most templates are a find-and-replace. The main change is the variable name:

{# Solspace #}
{% set events = craft.calendar.events({
  calendar: 'concerts',
  rangeStart: 'today',
  rangeEnd: 'today +1 month',
}) %}

{# Owl #}
{% set occurrences = craft.owl.events()
  .calendar('concerts')
  .rangeStart('today')
  .rangeEnd('today +1 month')
  .all() %}

Concept mapping

  • Solspace calendars → Owl calendars (with per-calendar field layouts).
  • Solspace events → Owl events (custom Craft elements).
  • Solspace occurrences (expanded at query time) → Owl materialised occurrences (indexed rows).

Why the materialised model matters

Solspace expands recurrence rules at query time. Owl pre-materialises occurrences into indexed rows, which makes range queries and pagination faster and gives ticketing a real row to attach to. It’s also what lets Owl harden multisite — see Multisite.

Need a hand?

If you’re planning a migration and have a Solspace template or data question, open an issue on GitHub.

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.