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.
From one record to a whole run, in four steps
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.
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.
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.
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.
“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.
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.
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.
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.
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 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.
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
Lobby · box office and bar open
Studio A · no partner needed · 24 places
Main Floor and Lobby · live band from 21:00
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.
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.
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.
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.
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
A season, a two-week run and a Saturday with four rooms in use are all the same record with more dates on it.
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.
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.
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.
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.
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 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.
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.
Spring Showcase — editor
14 dates · 3 rooms
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.
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.
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.
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.
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.
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.
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. |
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.
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.
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.
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.
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.
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.
Scheduled publish
The event goes live at the minute you named
Guest list to your inbox
Emailed to the organization and the producer, once per date
Sales and attendance report
To programming, admin and the producer. Quiet nights are skipped
Missing artwork reminder
Producers of upcoming events with no image, in your own email branding
Calendar self-repair
Anything Google refused is re-sent; an expired login is flagged for one-click reconnection
Eventbrite attendee reconcile
Requires the Eventbrite add-on
Calendar sync is on every plan, including the smallest. There is no calendar upsell.
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.
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.
Three embeds: your events calendar, an archive of past events, and a compact upcoming-events widget. They drop into the site you already have.
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.
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.
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.
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.
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.