What’s included

Showtime bundles the complete, current release of three plugins. Nothing is a reimplementation and nothing is cut down — each mounted module is the real plugin class, running its own services, templates, controllers, element types, migration track, and tables.

At a glance

ModuleHandleElement typeTablesSold alone for
Owl — events & calendarsowlEvent5$149 (Pro)
Stub — bookings & appointmentsstubBooking9$79
Headcount — membershipsheadcountSubscription6$99
Showtime — the glueshowtime1$249, all of it

There is zero overlap between the three schemas — distinct table prefixes, distinct migration tracks, distinct Twig variables, template roots, control-panel routes, permissions, and element types. That is what made bundling them viable in the first place.

Owl — events and calendars

Included at the Pro edition, which is the $149 tier when bought on its own.

  • Event element type, unlimited calendars, per-calendar field layouts
  • RRULE recurrence with exceptions and single-occurrence overrides, materialised into an indexed occurrence table by a queue job — so range queries and pagination are plain, fast SQL
  • Month, week, day and list views, plus FullCalendar demo templates
  • ICS export and subscribable calendar feeds
  • Front-end event submission
  • Multisite
  • Twig query API and GraphQL
  • Craft Commerce ticketing — ticket types, pricing, and capacity, each ticket a Commerce purchasable with transactional sold-count enforcement

Front-end surfaces, unchanged from standalone:

GET /owl/events.json?start=2026-07-01&end=2026-08-01&calendar=concerts
GET /owl/calendar/<handle>.ics      # a calendar's subscribable feed
GET /owl/event/<id>.ics             # a single event
{% set upcoming = craft.owl.events
    .startsAfter(now)
    .orderBy('startDate ASC')
    .limit(10)
    .all() %}

Full Owl documentation →

Stub — bookings and appointments

  • Booking element type — element index, column customisation, search, status filters (pending, confirmed, completed, cancelled, no-show), trash and restore, payment status, and reference numbers like STB-20260215-A1B2
  • Services with duration, price, buffer times before and after, per-slot capacity, colour coding, soft delete, and drag-to-reorder
  • Multi-provider scheduling — weekly hours in the provider’s own timezone, recurring breaks, blocked date ranges, per-provider service assignments, and an optional link to a Craft user
  • An availability engine that honours all of the above plus minimum notice and the maximum advance-booking window
  • A six-step vanilla-JS booking wizard with browser-timezone detection — no React or Vue dependency
  • Stripe Payment Element with SCA/3DS, a signature-verified webhook, and auto-confirmation of free bookings — no Craft Commerce required
  • Three editable system messages in Utilities → System Messages: booking confirmation, admin notification, and cancellation
  • A FullCalendar week/day/month view in the control panel, with a provider filter
{{ craft.stub.bookingForm() }}

Full Stub documentation →

Headcount — memberships and subscriptions

  • Subscription element type and a complete lifecycle
  • Recurring payments through Stripe Checkout and the PayPal Subscriptions API v2
  • Tiered plans with day/week/month/year intervals, trial periods, and per-plan pricing, synced to Stripe Prices
  • Content gating by section, entry type, category, or individual entry, with redirect, paywall, or hide behaviours
  • Drip content — unlock N days after subscription start
  • Craft user-group sync, added and removed automatically as subscriptions change state
  • Coupons and discounts, percentage or flat, synced to Stripe Coupons
  • A self-service member portal via the Stripe Customer Portal
  • Reporting — MRR, churn rate, trial conversion, growth — with control-panel widgets
  • Transactional emails: welcome, receipt, payment failed, trial ending, cancellation, drip unlock
  • A JSON REST API for plans, subscriptions, checkout, portal, and member info
{% headcountGate planHandle='pro-monthly' %}
    Members-only content here.
{% endheadcountGate %}

Full Headcount documentation →

What Showtime itself adds

Beyond hosting the three, the host plugin contributes:

Things that behave exactly as they do standalone

This is the short list of what people usually want to confirm before committing:

  • Element types — registered normally, with full element index, search, trash, and eager loading
  • Twig variablescraft.owl, craft.stub, craft.headcount, and the headcountGate tag
  • Action routes/actions/<handle>/… resolves for all three
  • Control-panel routes/admin/stub/bookings, /admin/owl/events, and the rest are unchanged
  • GraphQL, queue jobs, console commands, dashboard widgets, and asset bundles all work as normal
  • Database tables and migration tracks — identical names, which is what makes adoption safe in both directions