Build JSON snippets for new specific events, tours, repertoire shows, and podcast series.
Search existing performers and venues as you go โ if one doesn't exist yet,
just type its name and use "+ details" to add it on the fly.
Loading existing performers and venuesโฆ
Batch (not yet exported)
Nothing added yet โ fill in a form below and click "Add to batch".
Specific / Music Event
The "name" field is built automatically as "Showname [Performer]" unless you
override it below.
e.g. 15/10/2025 or 15/10/2025, 16/10/2025
Leave blank for a standalone show with no club night.
Saved as `wider_event`. Leave blank if this isn't part of a festival. New
festivals added via the Festival tab in this session will appear here automatically.
Structured pricing is optional and additive โ the plain text price above is
still what gets saved as `price`; this just also fills in `price_breakdown` alongside it. See
events-schema-costings.md for the rationale.
Tour
Optional. If this tour is a touring run of an already-registered
repertoire show, link it here (saved as `repertoire_id`) so show name, performer, video
trailer and headline flyer are inherited automatically at load time โ filter by performer
first to keep the list short. You can still fill in the fields below to override any of
those for just this tour.
One flyer is the common case (saved as `touring_event_flyer`). Add more if
this tour has had different artwork over time, e.g. a redesigned poster partway through the run
โ those get saved as `touring_event_flyers` (with each flyer's optional label shown as a
caption on the flyers page and tour gallery).
Controls which colour band this tour gets on the events calendar, tours
page, and performer/venue listings.
Tour dates
Repertoire Show
Show dates
Festival
One flyer saves as event_flyer; add more, or give one a caption, to save
as event_flyers.
Performers
Stages
The full day-by-day running order (`schedule`) isn't built here yet โ add that
directly in the exported JSON once you know the programme, referencing these stage ids and
performers.
New Performer
Adds straight to the batch as a standalone performer record โ no event/tour/show
needed.
Other ids this performer is sometimes tagged under in tour/event records โ
e.g. a legacy slug, or a combined-billing id from before they went solo. Anything matched
against an alias is treated as this performer everywhere on the site (search, filters,
listings).
One or more links this performer gives for a podcast they run
themself โ episode pages, show pages, or "listen on X" links. Leave blank if they
don't run one (use "Podcast appearances" below for guest spots on someone else's
show instead).
Only used if "Troupe / group" above is checked. Pick existing
performers (or type a new name to create one) for each member โ saved as `performer_ids`,
with their names also saved as `members` for a display-name fallback. Leave empty if you'd
rather set membership later, or via the "Combined/troupe billing name" option on the
Performer field when building a tour/show/event featuring this group.
Recorded performances of this performer on YouTube. Each is shown
as its own collapsible on their profile page, so its embed is only created if/when a
visitor opens that specific video.
One-off guest spots on other people's podcasts (as opposed to the
podcast links above, which are shows this performer runs themself). Type a series name
that matches an existing entry from the Podcast Series tab where possible โ it'll be
recorded as an episode of that series instead of on this performer, so its name/link
stay in one place; otherwise it's saved here as a one-off inline podcast name.
New Venue
Adds straight to the batch as a standalone venue record โ no event/tour/show needed.
Podcast Series
Adds an entry to the top-level podcasts registry โ a podcast
series in its own right, as opposed to a one-off guest spot. Give it here once so any guest
appearances on it (added via "Podcast appearances" on a performer) can reference it by id
instead of repeating its name/link everywhere.
Optional โ seed the series with known episodes now, in particular
ones featuring a performer as guest. Leave the performer field on a row blank for an
ordinary episode with no particular performer attached. More episodes can always be
added later; this doesn't need to be exhaustive.
Enrich existing data
Load your current events_normalized.json to run some assistive checks over it.
Nothing here edits that file automatically โ each tool below produces a patch or a report for
you to review and merge in by hand.
No file loaded yet.
Enabled once you've applied at least one accepted suggestion below. Downloads the entire loaded
file with only those accepted additions folded in โ everything else is untouched.
๐ท Price breakdown suggestions
Parses each free-text price/cost string it can confidently make sense of into a candidate
price_breakdown (see events-schema-costings.md), marked draft: true
so you can review and correct it later. Complex, prose-like pricing (festival weekend deals,
deposits, etc.) is deliberately left alone rather than force-fit.
๐ฎ Missing postcodes
Scans venues that have a full address but no postcode, and tries to extract one
from the address text.
๐ Possible duplicate venues
Flags venue pairs with similar names, a matching postcode, or coordinates within about
150m of each other. This is a report only โ merging two venue records (and repointing
every event/tour date that references the one you drop) needs to be done by hand.
Generated JSON
Copy the relevant section(s) into events_normalized.json: merge
newPerformers into performers, newVenues into
venues, then merge each record into its matching top-level array/object
(specificEvents, musicEvents, tours,
repertoire_shows, podcasts). podcastEpisodeAdditions
is different: each entry's item needs appending, by hand, into the
items array of the existing podcast named by its podcast_id โ
it's a patch against a podcast that already exists, not a new top-level record.