How to Sell Tickets for a Marathon, 5K or Running Race
Selling race entries is not like selling concert tickets. A runner who signs up for your 5K, 10K, or half marathon needs to tell you their shirt size, their emergency contact, and which distance they are running — and you need a clean way to verify those entrants at packet pickup and at the start line. If you have been juggling a Google Form for registrations, a separate spreadsheet for waivers, and a third-party platform that skims a fee off every entry, race day quickly becomes chaotic.
The good news: if your website already runs on WordPress and WooCommerce, you can handle the entire race — registration, custom runner details, payments, and on-site check-in — without sending entrants to an outside platform or paying a per-runner cut. This guide walks through how to set it up properly so that both you and your runners have a smooth experience from sign-up to finish line.
Why WooCommerce is a natural fit for race registration
A running event is, at its core, a product catalog. Each distance is a thing people buy, often at a price that climbs as the event gets closer. With Venuera, every ticket type is a real WooCommerce product, which means you inherit WooCommerce’s mature checkout, tax handling, and the payment gateways you already trust. There is no per-ticket platform fee on the free core plugin — you only pay your normal payment processor rates.
Because entries are WooCommerce products, you can lean on tools you may already know: coupon codes for running-club discounts, order reports for your accounting, and the built-in WooCommerce coupon system for early-bird or team pricing. Each entry also generates a unique QR code, which becomes the backbone of your packet-pickup and start-line process.
Step 1: Create a ticket type for each distance
Set up your race as an event, then add a separate ticket type for every distance you offer — for example “5K”, “10K”, and “Half Marathon (21.1K)”. Keeping distances as distinct ticket types matters for three reasons: each can have its own price, its own entry cap, and its own availability window. A capped 10K that sells out will stop accepting entries on its own, while your 5K stays open.
If you run waves or staggered start times for safety, you can model each wave as its own ticket type too, so a runner picks both their distance and their start group at checkout. This is the same multi-tier approach we describe in our guide to selling tickets for sports matches and tournaments, applied to a course instead of a stadium.
Step 2: Collect the runner details you actually need
This is where a race differs most from a typical event. You are not just selling a seat — you are registering a person who will physically exert themselves on your course. The Custom Attendee Fields add-on lets you ask for that information per entry, right at checkout, using nine field types: text, text area, dropdown select, checkbox, radio buttons, date, email, number, and telephone.
For a running race, a sensible set of fields looks like this:
- T-shirt size — a dropdown (S, M, L, XL) so your merchandise order matches your entrants exactly.
- Date of birth or age category — a date or dropdown field, used for age-group awards and any minimum-age rules.
- Emergency contact name and phone — a text field and a telephone field, so medical staff can reach someone fast.
- Waiver acknowledgement — a required checkbox confirming the runner accepts your liability terms.
Because every runner’s details are captured against their own entry, you end up with one clean, exportable list instead of a tangle of forms and emails. When you collect health-related or emergency data, treat it carefully: store only what you need, tell runners why you are collecting it, and follow data-protection rules such as the GDPR if you have entrants in the EU.
Step 3: Handle early-bird pricing and team discounts
Race entries almost always use tiered pricing: cheapest when registration opens, more expensive as the date nears. You can manage this with availability windows on each ticket type, or by issuing time-limited coupon codes. For running clubs and corporate teams, a percentage or fixed-amount coupon code is the cleanest way to offer group rates — share one code, let the club captain pass it around, and the discount applies automatically at checkout. Our write-up on reducing event no-shows explains why charging something (even a small early-bird fee) keeps commitment high compared with free sign-ups.
Step 4: Tickets and bib confirmations are created automatically
Once a runner completes checkout and the order reaches Processing or Completed status, Venuera generates their entry with a unique QR code automatically — no manual step on your side. That QR code is what you will scan at packet pickup to confirm the right person is collecting the right kit, and again on race morning if you control course access. You can design the confirmation itself to look the part: the optional Ticket Designer add-on ships with 27 templates and 21 bundled fonts, so your entry confirmation can carry your race branding, sponsor logos, and the runner’s distance. For a deeper look at that, see how to design professional event tickets.
Step 5: Check runners in fast on race day
Long queues at 6 a.m. on race morning set a bad tone for the whole event. The Check-in add-on turns a phone into a scanner: a volunteer scans each runner’s QR code, sees instantly whether the entry is valid, and marks them as collected. Check-in rules — such as the maximum number of entries allowed and the window during which scanning is permitted — resolve from your global settings down to the event and then the specific ticket type, so you can, for example, allow packet pickup over two days but lock start-line scanning to race morning only. Our door check-in walkthrough covers the scanning flow in more detail.
Staffing tip: put one volunteer per distance or per alphabetical range of surnames, each with the app open on their own phone. Because scans sync to the same event, your numbers stay consistent no matter how many people are checking runners in at once.
Step 6: Help search engines find your race
Runners search for events months ahead. Venuera automatically outputs Schema.org Event structured data for your race page, which is the markup Google uses to show rich event results with dates and details. You can read Google’s own requirements in its event structured data documentation. Pair that with a clear page title, the distances you offer, and the start location, and your race has a much better chance of appearing when someone searches “5K near me” in your area.
Bring it all together on race day
The payoff of this setup is that everything lives in one place: a runner picks their distance, enters their shirt size and emergency contact, pays through your normal gateway, and receives a QR-coded confirmation — and you walk into race morning with an accurate entrant list, a merch order that matches reality, and a scanner in every volunteer’s pocket. No outside platform, no per-runner fee, no spreadsheet reconciliation.
Ready to open registration for your next race?
Venuera’s free core plugin lets you sell race entries through WooCommerce with no per-ticket fee, and add-ons like Custom Attendee Fields and Check-in handle the race-day details. See the full breakdown on our pricing page, or browse every add-on to build the exact setup your event needs. Questions about your specific race? Get in touch.
Frequently asked questions
Can I collect each runner’s shirt size and emergency contact at checkout?
Yes. The Custom Attendee Fields add-on lets you add per-entry questions using nine field types, including dropdowns for shirt size and telephone fields for emergency contacts. Each runner’s answers are tied to their own entry, so you get one clean, exportable list instead of separate forms.
Does Venuera charge a fee for every race entry I sell?
No. The free core plugin has no per-ticket platform fee. Because entries are sold as standard WooCommerce products, you only pay your own payment processor’s normal transaction rates. Pricing and add-on availability can change over time, so check the current pricing page for details.
How do I check runners in on race morning?
The Check-in add-on turns a phone into a QR scanner. A volunteer scans each runner’s QR-coded confirmation to validate the entry and mark them as collected. Check-in rules such as maximum entries and the allowed scanning window resolve from global to event to ticket-type level, so you can separate packet pickup from start-line access.
Can I offer different prices for the 5K, 10K, and half marathon?
Yes. Each distance is set up as its own ticket type with its own price, entry cap, and availability window. That lets you run early-bird pricing per distance and close any distance automatically once it sells out, while keeping the others open.