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
| Module | Handle | Element type | Tables | Sold alone for |
|---|---|---|---|---|
| Owl — events & calendars | owl | Event | 5 | $149 (Pro) |
| Stub — bookings & appointments | stub | Booking | 9 | $79 |
| Headcount — memberships | headcount | Subscription | 6 | $99 |
| Showtime — the glue | showtime | — | 1 | $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.
Eventelement 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() %}
Stub — bookings and appointments
Bookingelement type — element index, column customisation, search, status filters (pending, confirmed, completed, cancelled, no-show), trash and restore, payment status, and reference numbers likeSTB-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() }}
Headcount — memberships and subscriptions
Subscriptionelement 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:
- Member perks — the cross-module feature, and the one table Showtime owns
- A bundle dashboard and a unified nav
- Composite settings — one Stripe account, one from-address, one currency
- One permission heading instead of three
showtime/migrate/all— the deploy-safe schema command- Adoption of already-installed standalone plugins (see Upgrading)
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 variables —
craft.owl,craft.stub,craft.headcount, and theheadcountGatetag - 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