Your booking calendar is not your marketing calendar.

An event holds the show. Its dates hold the days. Each date can be split into named parts with their own rooms and times. Publication and booking are tracked separately, so a contracted, staffed, paid night can sit under an event you never announced — and a filter can never confuse the two.

How it works

From one record to a whole run, in four steps

1. Create the event

Every event is born a draft, whatever created it — the intake form, an import, the API. Each one names a producer, and a booking with genuinely no producer has to say so in writing rather than leave the field blank.

2. Add the dates

One row per calendar day, each attached to the rooms it uses, each carrying a show window and a separate setup and teardown window. Load-in time is booked, not guessed.

3. Shape the day

Split a date into named parts — doors, class, social — each with its own rooms and times. Define the shape once and apply it to every future date of the run.

4. Publish when ready

Publish now, or set a date and time and let it flip itself. The check runs every minute, so 10:00 on Tuesday means 10:00 on Tuesday.

Two statuses, because there are two questions

“Can the public see this?” and “is the room held?” are not the same question. Most tools give you one field for both, and then the calendar lies.

Publication status — on the event

Draft, pending, tentative, approved, published, denied, cancelled. Only published puts the event on your public page, the discovery feed and the sitemap; the rest are your own triage vocabulary. Cancelled is the one other status the system acts on.

Draft Pending Tentative Approved Published Denied Cancelled

Booking status — on each date, and each room

A date carries its own status, and so does every room attached to it. One Saturday can hold the main hall as approved and the studio as tentative, at different times of day, while the event above them stays a permanent draft. Your venue calendar reads the dates, not the announcement.

Main Hall · 18:00–23:00 Approved
Studio B · 10:00–13:00 Tentative
Lobby · all day Pending

Who can move it

The producer of record, anyone holding a grant on that event, and admins and managers of the organization that owns it. Every write is checked when it is made, not by hiding a button.

Producers propose, staff approve

When an outside producer edits an event, nothing is written. Each changed field becomes a proposal in a review queue. Staff edits apply straight away.

Approving a date move is a real move

Approving a proposed reschedule runs the whole reschedule path — conflict check, staff shifts carried across, ticket holders emailed — rather than quietly writing a new day into the column.

Split a day into parts

A Tuesday at a dance studio is not one thing. It is doors, then a class, then a social — three rooms, three clocks, one evening. Venue Family models that as parts of a single date rather than three separate bookings you have to keep in step.

Tuesday 14 April — Swing Night

One date · three parts · 18:30–23:00

Doors 18:30–19:00

Lobby · box office and bar open

Beginners class 19:00–20:30

Studio A · no partner needed · 24 places

Social 20:30–23:00

Main Floor and Lobby · live band from 21:00

The date's own window brackets the parts automatically: earliest start, latest end. Studio A is free again from 20:30, and the availability calendar knows it.

Each part carries its own everything

Name, description, start, end, rooms and capacity. Parts are real rows on the date, not a note in a description field, so the rest of the platform can read them.

Rooms are occupied part by part

Part times compile down to a per-room occupancy window on the date. Availability, conflict warnings, shift sizing and the Eventbrite listing all see the right room held for the right hours without knowing what a part is.

One evening, one ticket

Ticket types say which parts of which dates they admit, so a class-only pass and a whole-evening pass sell off the same night. The rules live on the Ticketing & Finance page.

Parts reach the outside world

The public event page and the JSON API publish the agenda — each part's name, description, times and rooms. Each part also becomes its own Google Calendar entry, keyed so that reordering two parts never swaps their identity, their invitees or their reminders.

Define the evening once, apply it to the term

Save the shape of the day as a pattern and apply it to every future date of the run in one action. The confirm panel tells you how many dates will change, how many are keeping a schedule you customised, and how many already happened.

Detach one date — the week the class runs long, the night the band needs a soundcheck — and it keeps its own shape. Later pattern changes skip it.

Apply pattern to 12 remaining dates

Will be updated 9
Kept — custom schedule 2
Skipped — already happened 1
Apply to 9 dates

Runs, rooms and moving a date

A season, a two-week run and a Saturday with four rooms in use are all the same record with more dates on it.

One day, one date row

A calendar day appears exactly once on an event. Two enquiries for the same day do not fight: the intake merges them, taking the union of the rooms and the widest window. That is what makes a four-room Saturday a single, coherent day.

Setup, rehearsal, show, strike

Four date types, colour-coded through the editor grid and the calendars, so a load-in day is a booking rather than a note. Renters choosing their own dates are offered three: performance or class, rehearsal, setup or cleanup.

Two windows per date

The show window is what the public and the door see. The rental window is what the room is actually held for. A night that ends after midnight rolls to the next day instead of collapsing to nothing.

See what a move breaks, first

Before a date moves, you are told how many tickets are sold, how many staff have claimed shifts, how many people signed in, whether an Eventbrite listing is linked, and which rooms clash on the target day. Then you decide.

Retime the whole run at once

Select the dates, set the new times, and the first press tells you how many dates change and how many ticket holders will be emailed. The second press does it. Claimed shifts travel with a moved date.

Cancel a night, not the season

Cancel the whole event or pick the dates. Cancelled dates release their rooms; cancelling the last remaining date cancels the event, recording who did it, when, and why. Staff are notified, and when staff cancel, the producer is too.

Eighty-seven fields, defined once

Tech, operations, seating, security, catering, access, deal terms, approvals and contacts. Each field is declared one time with its label, its group, its input type and the list of places it belongs. That single declaration renders the public rental enquiry form, the internal staff intake form, the event editor's tabs and the tech, operations and manage dashboard cards.

  • Add a field once and it appears on every surface it belongs to — no second list to keep in step
  • A renter cannot approve their own screening or set their own rate: staff-only fields are stripped at the write, not hidden in the browser
  • Rate basis, hourly rate, hours and tech charge belong to rental bookings only — they do not render on your own programming, because nobody is billed for it
  • Whether a night needs a technician is worked out from the lighting, sound and screening answers — and the AV lead shift opens or closes to match

Spring Showcase — editor

14 dates · 3 rooms

Event details Operations Tech Ticketing Finance Staffing Attendance Day structure Access Eventbrite Merge

A tab loads only when you open it, and a dot marks the ones holding unsaved changes. On an event with 127 dates the staffing panel alone was half the page weight, so it waits until you ask for it.

Publishing, links and duplicates

The awkward parts of running a public programme: announcing on time, showing a partner an unannounced page, renaming a show, and the Eventbrite duplicate somebody made in March.

Scheduled publishing

Set a publish date and time. A check runs every minute and flips the event when it arrives, which carries it onto your public page, your public calendar, the discovery feed, the API and your website embeds together. Publishing retires the schedule, so an old timer cannot fire twice and a live event never wears a “scheduled” badge.

Share the link before you announce

A signed preview link shows a performer or a funder the real event page while it is still unpublished. It lasts seven days by default, covers that one event, and cannot be widened by editing the address. Rename the event and the old link stops working — the safe direction to fail.

Renaming never breaks a poster

Rename a show and its address changes, but the old one is kept as an alias. The old link redirects to the new page and the API still answers it. New events are refused a name an alias already holds, so a printed URL from last month keeps landing where it should.

Merge the duplicate, in the direction you choose

Pick which event survives — usually the richer one you built, not the Eventbrite import. Everything moves: dates, orders, tickets, sign-ins, shifts, comments, images, tags, ticket types, contracts, calendar entries. Both events' old links keep resolving afterwards.

A merge cannot be undone. We say so, and we show you an itemised count of every category that will move before you confirm — 14 dates, 212 tickets, 8 shifts, 3 comments — because restoring the losing event afterwards does not bring its records back with it.

Eventbrite: pull, push, or freeze — per date

Not a global on-off switch. Each linked date says who owns its content, so the show Eventbrite sells and the show you sell yourself can live on the same programme without overwriting each other.

Direction What it does Use it when
Pull Eventbrite owns the content and sells the tickets. We mirror the listing in and keep the local copy current. A promoter runs the on-sale and you are hosting the room.
Push You own the content. Saving the date sends the name, description, times, venue, banner, ticket classes and discount codes out, and publishes the listing. You programme in Venue Family and want Eventbrite as a shop window.
Neutral The link stays, all automatic sync stops in both directions, and the manual Push and Pull buttons still work. A forced manual pull does not thaw it. You have replaced Eventbrite's ticket types with your own and want the listing left alone.

No echo, no overwrite

Eventbrite fires updates back at us mid-push. Those are recognised as our own and skipped, so a push never re-imports the old copy over the content it is still sending.

Unsolicited events wait at the door

Imported events are matched against what you already have. A confident match links itself; an uncertain one waits for a person, with a digest at 08:00 and reminders. Anything you dismiss is never quietly re-imported.

Drift is visible

Save without pushing and the listing is flagged as behind, so you can see it rather than discover it. The flag clears itself on the next successful push.

Attendees reconcile hourly

Every hour we walk each connected account and pull attendee changes for every linked date, so a missed webhook does not leave the door list short.

Eventbrite sync is a $25/month add-on on top of any plan. Without it the connection exists but nothing pushes or reconciles automatically. See the add-ons.

What happens on its own when a date changes

The point of one record is that everything hanging off it moves together. Nobody re-sends an invite, and nobody updates the building calendar by hand.

Google Calendar, the moment you save

  • A booking is written to the room's own calendar, every parent venue above it, and your organization's public and internal calendars
  • A split day arrives as one entry per part, so a 10:00 workshop and a 20:00 show are two events rather than one long block
  • Venue calendar entries are coloured by the room's approval state — red denied, orange tentative, green live — so a month can be triaged from a phone
  • Cancel a date and the entry is removed, not re-titled. A released room looks released
  • Your audience can subscribe to the organization's public calendar — an Add to Google Calendar button and an iCal link that works in Apple Calendar and Outlook
  • Money is structurally excluded from what can be written to a calendar. Rates and deposits stay in the app

We ask Google for the narrowest access it offers: we can only touch calendars this app created, and your personal calendar is not readable by us. Sync runs one way, out of Venue Family — an edit made in Google is replaced the next time that record syncs.

Jobs that fire off a date, without being asked

Scheduled publish

The event goes live at the minute you named

Every minute

Guest list to your inbox

Emailed to the organization and the producer, once per date

2h before doors

Sales and attendance report

To programming, admin and the producer. Quiet nights are skipped

1h after the end

Missing artwork reminder

Producers of upcoming events with no image, in your own email branding

Mon & Thu, 09:00

Calendar self-repair

Anything Google refused is re-sent; an expired login is flagged for one-click reconnection

Hourly

Eventbrite attendee reconcile

Requires the Eventbrite add-on

Hourly

Calendar sync is on every plan, including the smallest. There is no calendar upsell.

One definition of “public”

Published and not private. That single rule serves the event page, the discovery feed and the sitemap, so the three cannot disagree about what your audience is allowed to see.

Calendar, map and list

The discovery feed shows published dates as a month calendar, a map of the venues and a filterable list. Date and venue filters drive all three at once.

Put it on your own site

Three embeds: your events calendar, an archive of past events, and a compact upcoming-events widget. They drop into the site you already have.

Private events stay private

Mark an event private and it leaves the page, the feed and the sitemap. The API still reports the slot as taken, as “Private Event”, with no identifying detail. Your own team sees it in full.

An API that knows who is asking

The same URLs serve the world a published, redacted picture, and serve a token belonging to one of your own members every status and every date. One integration drives your public site and your internal tools.

Images that never come out blank

Assign images to named slots — banner and slider at 2:1, list at 1:1, page at 4:5, plus background, gallery and logo. If a slot is empty, the page falls back to another of the event's slotted images, then to the parent event's, then to any image it holds at all. An event with a picture never renders a placeholder.

A board for what needs attention

The programming overview surfaces the events with unapproved dates, the ones waiting on approval, the ones with no description and the ones with no image, alongside a count of everything at each stage. Per event, a read-only health report lists each date with its status, its sign-in count and whether it sells tickets.

Put the season in one place

Bring your dates, your rooms and your programme across. We will help you work out which plan fits and what a migration looks like.

Or read about Ticketing & Finance, Venues & Bookings, Shifts & Volunteers and the rest of the platform.