Dockyard

VISITOR ATTRACTIONS

TMCA

A booking-led website for a Christmas attraction, with a live availability calendar wired into a custom engine. Visitors find their day in seconds, and the venue runs the season without a developer.

The brief

TMCA (The Magical Christmas Adventure) runs several experiences across the season: Classic, Twilight, VIP, Toddler, S.E.N.D and Adults Only. Each runs on different days. Tickets are sold through "Magic Maker", a custom booking system built by a third party. The site's job was simple to state: help families find the right day and get them to booking without friction.

The problem

The availability API wasn't built to be called from a public website. It needs a private key, doesn't expose prices or capacity, and gets slow under load. Calling it straight from the page would have leaked the key and made every visitor wait on someone else's server in the busiest weeks of the year.

What we built

A private, fast bridge to the booking system

A custom WordPress plugin sits between the site and Magic Maker. The API key stays on the server, and availability is cached and refreshed in the background after each response is sent. Visitors always get an instant answer. If Magic Maker goes down, the calendar keeps showing the last good copy and says how old it is, instead of breaking.

A calendar the venue runs themselves

Every date shows which experiences are on, as colour-coded dots, with filters by experience. Ticket types are discovered automatically from the feed, so a new experience appears on its own. The team gets an alert to set its colour, price and hours. Season dates, event listings and ticket details all live in WordPress admin, open to editors, not only administrators.

Built for everyone

The calendar works fully by keyboard, reads each day out to screen readers ("Monday 14 December: Adults only"), respects reduced-motion settings, and draws instantly from data carried in the page.

Getting people to the calendar

A "next available dates" strip puts upcoming days on the home page. Every date and experience has its own shareable link, so the team can drop "Adults Only dates" straight into a social post. Structured event data describes each date to Google, and visits from those listings are tagged so they can be measured separately.

Measuring what matters

We moved the site onto self-hosted, privacy-friendly analytics, running alongside the old tool so no history was lost, and migrated the existing data across. Custom events track the whole journey: dates viewed, filters used, dates booked, with weekday and lead time on each.

Looked after, not just launched

Outage and recovery alerts go to straight to stakeholders. A reminder fires when the season ends, and the plugin watches Magic Maker for next year's dates, then lets the team roll the calendar forward in one click. Every release runs the full test suite in GitHub Actions and ships as a normal WordPress update.

Screenshot of the custom calendar from the TMCA client project

Ease of use

"The venue changes a season, a price or a ticket type without ever calling a developer."

Irritating Integrations

Booking system that doesn't play nicely with your website?