Add-ons
Build one catalog of optional extras and attach it across markets, venues, and experiences with inventory and availability rules.
Add-ons are the optional things people buy alongside a booking — an electricity hookup, a second table, a canopy rental, a parking pass, a glass of wine with the tour. You build each one once in a shared catalog and attach it to as many markets, venues, and experiences as you like.
That’s the core idea: “One catalog of optional extras — attach the same add-on to as many markets, experiences, and venues as you like.” If you sell power at four markets, that’s one add-on with four attachments, not four separate items to keep in sync.
Find the catalog at Commerce → Add-ons (/admin/commerce/addons). You’ll need an owner or admin role.
How do I create an add-on?
Click New add-on and fill in:
- Name — what buyers see. “15-amp electrical hookup,” not “Elec.”
- Description (optional) — the detail that prevents support questions.
- Code (optional) — a short internal reference like
ELEC, useful on rosters and exports. - Type — Physical, Digital, Upgrade, or Service. Organizational, and a useful filter as the catalog grows.
- Price — the amount, entered normally (
25.00). - Currency — defaults to USD.
- Requires approval — the purchase is recorded as unapproved rather than automatically confirmed.
- Taxable — flags the line for tax handling.
Then the inventory block, covered below.
How do I attach an add-on to a market, venue, or experience?
Creating an add-on doesn’t put it on sale anywhere — attaching does. Look for the Available add-ons card:
- Markets — under Market → Edit → Add-ons. “Optional priced extras vendors can add when booking.”
- Venues — the same tab on a Spaces-mode market. “Optional priced extras guests can add when reserving seats.” See Venues & Seating.
- Experiences — on the experience’s page. “Optional priced extras guests can add at checkout.” See Experiences.
It’s a checklist over your active catalog — tick to attach, untick to detach. There’s also an inline quick-create if you realize mid-setup that you need one more.
Detaching is safe and local: “Unticking removes an add-on from this market only — it stays in your catalog and keeps running anywhere else it’s used.”
How do I limit an add-on to part of a venue?
Some extras only make sense in certain places. A seat cushion is meaningless in a standing section; a suite catering package only applies to the suite. Availability rules narrow where an add-on is offered.
Availability rules are venue-only — they aren’t available on market or experience attachments, where an add-on simply applies to the whole thing.
In the availability editor, choose between Entire venue and Only for specific sections or seat types. Picking the second gives you three groups:
Sections — specific named sections from your seating layout.
Seat types — Seats, Tables, or Sections.
Sale modes — Reserved seating (assigned), General admission, or Whole unit (suite / private area).
Click Save availability. The collapsed summary then reads Entire venue or Only: … with an Edit availability link.
Rules combine as OR, not AND. If you select the “Balcony” section and the “Tables” seat type, the add-on is offered on everything in the Balcony and on every table anywhere — not only on tables in the Balcony. There’s no way to express an intersection, so build your rules with one dimension at a time where you can.
Seats inherit their parent section’s sale mode, so a sale-mode rule catches the seats inside matching sections.
How does inventory tracking work?
Tick Track inventory and set:
- Quantity available — how many you have. Required once tracking is on.
- Low-stock alert at (optional) — the threshold where the catalog starts flagging it.
- Hide when sold out — remove it from the buying UI entirely once it’s gone, rather than showing it greyed out.
- Allow overselling past the quantity — let sales continue past your stated number.
Leave Track inventory off and the add-on is unlimited.
Stock is one shared pool across everything it’s attached to. Twenty power hookups attached to three markets means twenty total, not twenty per market — which is exactly right when the constraint is physical equipment, and worth understanding before you attach a scarce item widely.
Sold quantities are counted from actual purchase records rather than a separate counter, so the number can’t drift out of sync.
Each catalog row shows remaining and sold counts, with a Sold out or Low stock pill as appropriate.
What happens when something sells out?
An add-on is sold out when it’s tracked, has nothing remaining, and overselling is off. At that point:
- If Hide when sold out is on, it disappears from the buying UI.
- If not, it’s shown but can’t be added.
- Any attempt to buy it is refused with a clear message: “[Name] is sold out (0 remaining).”
Enforcement happens at the moment the purchase is written, not just in the UI, so two people checking out simultaneously can’t both take the last one.
Turning on Allow overselling means the add-on is never considered sold out, and is therefore never hidden — useful for something you can always source more of at short notice.
Stock is not reserved during checkout. Unlike seat holds, add-on inventory is consumed only when the purchase completes. Someone with an item in an in-progress checkout hasn’t claimed it yet.
What are required add-ons?
An add-on can be marked required, meaning a buyer can’t complete the purchase without it — a mandatory cleaning fee, a compulsory safety briefing.
Two things to know:
- Enforcement is venue-only. Required add-ons are enforced on the venue seat-confirm path. On markets and experiences the flag isn’t enforced.
- There’s no way to set it from the admin UI yet. The catalog form doesn’t expose a “required” checkbox, so in practice add-ons are optional unless configured out of band.
If a required add-on sells out, the seats needing it become unbuyable — the request is refused with “[Name] is required for the selected seats but is sold out.” Watch inventory carefully on anything mandatory.
How do I retire an add-on?
Archive it. Archiving hides an add-on from new bookings but keeps its history — nothing is deleted, and you can restore it at any time.
Filter the catalog by Active, Archived, or All, and use Archive / Restore on each row. There’s no hard delete, which is deliberate: past purchases keep their records intact.
Purchased lines snapshot the name, price, currency, and taxable flag at the time of sale, so changing a catalog price never rewrites what someone was historically charged.
Common gotchas
- Creating isn’t attaching. A new add-on sells nowhere until you tick it onto something.
- Inventory is one pool across all attachments. Attach a scarce item narrowly.
- Availability rules are OR-combined, and venue-only.
- Keep currencies consistent. Venue seat confirmation rejects a mixed-currency selection outright; the experience checkout path does not, and will sum a differently-denominated add-on as though it matched. Price add-ons in the same currency as whatever you attach them to.
- No tiered or per-quantity pricing. Every add-on is one fixed price per unit.
- “Requires approval” has no review queue. It marks the purchase unapproved; there’s no admin screen to approve it.
- Venue add-ons are sold through the operator-side seat tool, not a public checkout. See Venues & Seating.
Next steps
- Venues & Seating — sections and sale modes that availability rules target
- Experiences — extras at guest checkout
- Reporting & KPIs — attach rate, the metric that tells you if add-ons are working