ThemeEvents

Events

The theme ships a full events system for tournaments, leagues, and prerelease nights: a calendar-first events page, an individual page per event, and a homepage teaser. Almost all of it is managed for you. Sideboard publishes your calendar to your storefront on its own, ticket sales run through your normal Shopify checkout, and the theme keeps prices, “sold out,” and spots-left accurate without you touching anything. This page covers how the pieces fit and how to put them on your store.

The short version

  • Events live in a Shopify metaobject called event. Once your store is connected, Sideboard creates and maintains the entries itself: one per occurrence, covering a rolling 180-day window, pruned automatically as dates pass. You don’t create fields, entries, or ticket products by hand.
  • The theme reads those entries natively, so every surface is server-rendered and every event gets a real URL search engines can index.
  • Three sections do the rendering: Events Overview (the full calendar page), Event Details (each event’s own page, automatic), and Upcoming Events (the homepage teaser).
  • Free and in-person events are the normal case. A ticket product only exists for paid events collected through Shopify checkout; everything else shows a “Register in store” card.

How events reach your storefront

Sideboard publishes one entry per occurrence. A weekly Friday Night Magic isn’t one entry with a “repeats weekly” flag; it’s an entry for each Friday in the window, and a busy store can easily have 100+ live entries at once. Entries carry the name, description, date and time, price, capacity, status, and (for recurring events) a human-readable sentence like “Every Friday at 6:00 PM” that the theme uses to group a series.

Paid events through Shopify checkout get a ticket product created and linked automatically. That product’s inventory is the event’s capacity: when it sells out, the event shows sold out, and multi-tier tickets (General + VIP) count correctly because the theme sums every variant.

Paid events you collect at the door get no ticket product on purpose (set Payment collection to “Collect payment in person” on your Sideboard calendar). The price still reaches the storefront: a $19 event shows a price pill on its cards, an “Entry fee” line on its page, and a machine-readable offer for search engines. Only an event actually priced at zero shows as Free.

Cancelled events stay visible everywhere with a struck-through name and a “Cancelled” pill rather than vanishing, so nobody shows up to a cancelled event that silently disappeared. Past events stop being listed on their own once their day is behind today.

Putting it on your store

The events page. There’s a ready-made page.events.json template. In your Shopify admin, go to Online Store → Pages, create (or pick) an Events page, and set its Theme template to events. The Events Overview section is already on it: a month calendar with Prev/Next/Today, a List view, and game filter chips that appear on their own when you run more than one game. New to templates? See Working with Sections.

The homepage teaser. Add the Upcoming Events section anywhere on your homepage. It shows one card per event series (its next occurrence), so a weekly league doesn’t fill the grid with near-identical cards, and links out to the events page.

Event pages. Every entry gets its own page automatically at /pages/event/{handle}, rendered by the Event Details section. You never create these by hand.

Adding the detail Sideboard doesn’t know

Sideboard writes the operational fields. A second set of fields is yours to fill in per event, straight on the metaobject entry (Settings → Custom data → Metaobjects → Event in your Shopify admin): location, game, format, prizes, age restriction, organizer, and a featured image. The theme renders any of them when present and hides the row when absent, and Sideboard never overwrites them, so your additions persist through every sync.

Two of those punch above their weight:

  • Game drives the events page’s filter chips. Keep the names consistent (“Magic: The Gathering” everywhere, not “MTG” in one entry and “Magic” in another); the filter groups by exact match.
  • Location can fall back to your store’s address for events held at the shop. That fallback is a section setting on Event Details (“Use shop address”), off by default so nothing publishes your street address until you opt in.

You can also hand-author whole entries if you want events Sideboard doesn’t run. The theme treats them identically. Leave Sideboard’s own entries alone otherwise: don’t rename their handles (sb-evt-…) and don’t edit sort_date or status, which is how Sideboard finds and maintains them.

Good to know

  • Timezones need to agree. Event times are written in your Sideboard calendar’s time zone (Settings → Organization → Calendar → Time zone in Sideboard) and displayed in your Shopify store’s time zone (Settings → General → Standard time zone in Shopify). If those two don’t match, times display an hour or more off. When your Shopify store is connected and you haven’t picked a zone yet, Sideboard fills in your Shopify store’s zone for you; press Save changes once and your event listings update with the right times.
  • Registration is just checkout. A ticketed event’s register button adds the ticket product to the cart; there’s no separate registration system to run.
  • “Register in store” isn’t a bug. It’s the expected path for any event with no ticket product, which is most of them. You can turn that card into a link (a signup form, a Discord invite) with the Sign-up URL setting on Event Details.
  • The sections show nothing until entries exist. A brand-new connection with no upcoming events renders empty states, then fills in as Sideboard publishes.

Troubleshooting

No events are showing anywhere. Sideboard hasn’t published entries yet, or none are upcoming. Check Settings → Custom data → Metaobjects → Event in your Shopify admin: if there are no entries, the calendar sync hasn’t run for your store; if entries exist but the pages are empty, check each entry has an event date and its day isn’t already past.

An event’s time is wrong by an hour or more. Your Shopify store timezone and your Sideboard calendar timezone disagree. In Sideboard, open Settings → Organization → Calendar, set Time zone to match your Shopify store, and press Save changes. Sideboard then republishes your event listings with the corrected times; give it a little while before checking your storefront. See “Timezones need to agree” above.

Ticket purchase isn’t working. Check the entry actually links a ticket product, and that the product is active with tracked inventory. An event showing “Register in store” simply has no ticket product, which is the normal free/in-person path.

An event page 404s. The entry is in Draft, or the event metaobject definition doesn’t have Web pages enabled (Sideboard enables it at connect time; hand-built definitions need it switched on manually).

Two different events collapsed into one card on the homepage. Only events with a filled-in recurring sentence collapse into a series. Two one-off events that share a name keep their own cards; if they merged, one of them has a recurring value it shouldn’t.

What’s next


Was this page helpful?

Spotted something wrong, or want to suggest an improvement? Email support →. Your message goes straight to engineering.