← All documentation

Experiences

Sell tours, classes, and workshops with recurring time slots, a public booking page, Stripe checkout with fees and tips, waivers, and a waitlist.

Experiences are for anything you sell by the session to the public — a walking tour, a cooking class, a tasting, a workshop, a guided hike. You describe it once, set a recurring schedule, and VendorStreet generates bookable time slots on a public page where guests pick a time, pay, and get a confirmation.

Unlike markets, where vendors book spots from you, experiences sell directly to guests. If you run both, they live side by side in one organization and roll up into the same reports.

Find them under Experiences in the sidebar, or at /experiences. If your organization started out with markets or venues, the entry sits under Add a business in the sidebar and opens the same page.

Experiences live on two levels:

  • The Experiences page lists every experience with its status, holds the Performance card and the form to create a new one, and carries the lifecycle controls for each row.
  • Each experience’s own page opens when you click it (or its Sessions & bookings button). It holds everything about that one experience: its schedules and sessions, add-ons, waiver, checkout charges, bookings, and waitlist. Its address is /experiences/<id>, so you can bookmark it or share it with a colleague.

What do I need before I start?

Connect your payouts. Every experience on VendorStreet is a paid booking that runs through Stripe — there is no free-booking path, and the price must be greater than zero. So an experience can’t go live until your payouts are connected and Stripe has enabled charges on the account. You can still create and edit drafts in the meantime.

Set this up first on the Payouts card of your organization settings: Organization in the sidebar, or the account menu → Organization Settings. Until it’s done, the Experiences page and each experience’s own page show a Guests can’t pay for experiences yet notice with a link straight there. See Payments & Payouts.

How do I create an experience?

Use the Create a new experience card — “Set up the tour and pricing details.”

Describing it

  • Name — what guests see.
  • Slug — the URL-safe short name that appears in your public link. Lowercase letters, numbers, and hyphens only. Must be unique.
  • Short description — the one-liner on the listing page.
  • Full description — the detail on the experience page. There’s a ✨ Generate button that drafts a couple of sentences for you from the name and a few details; treat it as a starting point and edit it into your own voice.

Where it happens

  • City, State, Country
  • Meeting point — where guests actually turn up. Be precise; this is the field that generates the most day-of phone calls when it’s vague.
  • Location — an optional saved location from your organization’s locations list.
  • Instructor — an optional staff member, which also drives per-instructor utilization in your reports.

How it runs

  • Duration label — the human-readable version (“About 2 hours”).
  • Duration (minutes) — the real number, used to compute each slot’s end time. Required before you can generate slots.
  • Default capacity — how many guests per session. Must be at least 1.
  • Min attendees — the floor below which the session isn’t viable. Set it above 1 and you’ll get a notification (in-app and by email) when a session starting within about two days is still short of it, telling you the confirmed count and linking to the session so you can cancel it or run it anyway. The alert arrives once per session. Nothing is ever cancelled automatically — the call is yours, and a minimum of 1 is treated as “no minimum” and never alerts.

What it costs

  • Price (cents) — note the unit. 4500 is $45.00. Must be greater than zero.
  • Currency — defaults to USD.

Booking policy

  • Booking cutoff (hours) — how close to start time guests can still book. This is a hard gate: once a session is inside its cutoff it stops appearing in the guest’s time picker, and a checkout attempted against it is refused before any payment is taken. A cutoff of 0 still blocks a session that has already started.
  • Cancellation window (hours) — how far ahead a guest can cancel themselves for a full refund.

Then choose how to finish:

  • Save as draft — stores it privately. Nothing is public, and you don’t need an active membership to draft.
  • Create and go live — publishes it immediately, exactly as before. This is the go-live moment, so it requires an active operator membership and connected payouts. If either is missing, nothing is created and the message says which — save it as a draft instead and take it live once that’s sorted.

Either way, VendorStreet opens the new experience’s own page, because the next thing it needs is a schedule.

If you’re still writing copy, deciding a price, or waiting on a schedule, save the draft and take it live when you’re ready.

What do draft, live, paused, and archived mean?

Every experience is in one of four states, shown as a chip next to its name in Existing experiences:

StateWho can see itWhat you can do next
DraftYou onlyTake live, or archive
LivePublic — listed and bookablePause, or archive
PausedNobody new — hidden from your public pagesResume, or archive
ArchivedNobodyNothing — this is permanent

The controls sit on each row of the Experiences page, and at the top of each experience’s own page: Take live, Pause, Resume, and Archive, each asking you to confirm first.

Pausing stops new bookings; it does not touch the ones you’ve already sold. Guests who have booked keep their seats and their confirmations, the session still runs, and you can still cancel and refund them normally. What changes is that the experience disappears from your public listing and its page stops selling — useful when your guide is ill, when you’re sold out through a busy month, or while you rework the pricing. Resume when you want.

Archiving is permanent. An archived experience is hidden from new bookings forever and cannot be un-archived — if you might want it back, pause it instead. As with pausing, bookings already made still stand and remain refundable.

Taking anything live — from draft or from paused — requires an active operator membership and connected payouts that Stripe has enabled for charges. Drafting, editing, pausing, and archiving are always free.

Can I change an experience after creating it?

Yes. Click Edit details on the row, or at the top of the experience’s page, to change the name, short and full descriptions, price, default capacity, duration, booking cutoff, cancellation window, and min attendees.

Changing the price only affects future bookings. Guests who have already booked keep the price they paid — repricing never retroactively charges or refunds anyone. The same is true of capacity and policy changes: they apply to bookings made from that point on.

Two things the edit form deliberately leaves alone: the slug (changing it would break links you’ve already shared) and the schedule (slots are managed on the experience’s own page, below).

How do I set up sessions and time slots?

Experiences use a two-level model: you define a schedule (a recurrence pattern), and VendorStreet materializes it into individual slots that guests book.

Open the experience, and under Experience schedules create a schedule with:

  • Start date and End date — the range to generate across.
  • Start time — the time of day each session begins.
  • Days of week — toggle the days it runs.
  • Capacity override — a different capacity for these sessions than the experience default.
  • Blackout dates (optional) — comma-separated YYYY-MM-DD dates to skip. Holidays, closures, your vacation.

Creating the schedule generates the slots immediately. Each slot’s end time is computed from your Duration (minutes), and times resolve in your organization’s timezone.

To change a pattern, edit the schedule and click Generate slots again.

This is the one to be careful with: regenerating deletes and rewrites every slot for that schedule. It’s not an incremental update. If any of the schedule’s sessions already have bookings, regeneration is refused — that guard protects your guests’ confirmed sessions, but it also means the time to get the pattern right is before bookings arrive. Generation is also capped at 365 days, so build a year at a time.

If what you actually need is to change one session rather than the whole pattern, don’t regenerate — use the per-session actions below.

Can I change just one session?

Yes. Each schedule lists the sessions it generated, with how full each one is, and every session can be acted on by itself — you don’t have to regenerate the whole pattern to deal with one bad morning.

Capacity — set a different number of seats for that one session. The room is smaller today, or a second guide turned up. You can’t set it below the number of seats already sold; VendorStreet refuses and tells you the count, so cancel those bookings first if you really need to shrink it.

Close — take a session off sale without cancelling it. Use this when it filled up by word of mouth, or you want to hold the last seats back. Existing bookings are untouched: the session still happens, guests keep their seats, nobody is refunded. It disappears from the public booking page immediately, and a guest who still has the old page open can’t book it either. Reopen puts it back on sale.

Cancel session — the weather one. This cancels the session, refunds every guest who paid for it, and emails them. You’ll be asked to confirm against the real numbers first: how many bookings, how many guests, and exactly how much is about to be refunded to guests’ cards, tax included. The guest emails and the summary afterwards quote the amount Stripe actually refunded. You can add a reason (“Storm warning — the harbour is closed”) and it goes into the email to guests.

A few things worth knowing about cancelling:

  • It’s permanent. A cancelled session can’t be reopened or re-capacitied — you’ve refunded the guests and told them it’s off. If it turns out to be on after all, generate a new session.
  • The rest of the schedule is untouched. Only that one session is affected.
  • One failed refund doesn’t stop the others. If your payment provider refuses a particular refund, the remaining guests still get theirs, and every booking on the session is still cancelled. You’ll see a warning saying how many refunds didn’t go through, and each of those bookings shows A refund needs a retry on the roster. Open Refund… on the booking to see what Stripe said and press Retry once the problem is sorted. The guest is told their refund is on its way, and gets a second email when it goes through. Nobody is refunded twice.
  • Waitlisted guests aren’t told a spot opened, because it didn’t. The session is gone.

Where do guests book?

Two public pages, no login required:

  • Your listing page — /<your-org-slug>/experiences, showing everything you offer with a View experience button on each.
  • The experience page — /<your-org-slug>/experiences/<experience-slug>, with the description, details, and the booking form.

On the experience page, guests use the Book a time slot card — “Select an available date and provide your details.” They choose a Time slot, enter their Full name, Email, and Quantity, pick any add-ons, accept the Waiver if you’ve published one, and click Continue to payment.

How does checkout work?

Guests are redirected to Stripe Checkout. The booking is created in a pending state and held for 30 minutes while they pay — that capacity is reserved for them and released automatically if they don’t complete.

When payment succeeds, the booking is confirmed. If a guest abandons checkout, the page tells them plainly: “Checkout canceled — your seat wasn’t booked. You can try again below.”

Confirmation isn’t shown on the experience page — guests get their own booking page at /booking/<booking-id>, which reads the real payment status rather than trusting the redirect. That page shows Confirmed, Pending payment, Cancelled, or Cancelled · refunded, and it’s where guests go to cancel.

Capacity is enforced at the moment of booking, counting both paid bookings and live holds. If a session fills while someone is mid-checkout, they’ll get a clear “not enough capacity” message rather than an oversold session.

Can I add a service fee or tips?

Yes. Experiences can carry the same optional checkout charges as venue seats, configured in the experience’s “Checkout charges” card:

  • A fixed service fee — a per-experience override, or a per-model default set once under organization settings. It shows as its own line and flows to you.
  • Tipping — off by default. Turn it on with optional preset percentages, or a compulsory floor the buyer can add to, plus a custom note like “100% of gratuities go to your guide.” Tips are never taxed.
  • A card processing surcharge and sales tax via Stripe Tax also apply.

On these sales you are the merchant of record — your name is on the buyer’s statement, you bear Stripe’s fee, and you collect and remit sales tax. Sales tax adds $0 until you register your jurisdictions in Stripe (Settings → Tax → Registrations). Full detail and a worked line-item breakdown are in Checkout Charges.

Who pays the $1 booking fee?

VendorStreet charges a flat $1 per booking. Either you pay it, out of your payout, or your guests pay it at checkout. Which one applies is a setting on your account.

If you pay it, guests see nothing extra. The $1 is taken from what Stripe pays out to you for the booking.

If your guests pay it, checkout adds a Booking fee line of $1.00, once per booking, not per guest. It is shown on your experience page before the guest reaches Stripe, with a sentence saying it is VendorStreet’s fee for booking online. It appears again on the Stripe page, in the confirmation email, and on the guest’s booking page. Your prices, your payout and your reports are unchanged: the fee is never part of your revenue, it is never taxed, and your card surcharge is not calculated on it.

The booking fee is not your service fee. The service fee is yours and is paid out to you. The booking fee is VendorStreet’s.

A booking that costs nothing, or that a gift card pays for in full, never reaches a card, so it carries no booking fee. A gift card only ever pays your part of a booking; the guest’s card pays the booking fee.

Can I add a waiver?

Yes. On the experience’s page, use the Waiver card to write your waiver text and click Save waiver. Once published, guests must tick “I have read and accept the waiver” before they can proceed to payment.

How does the waitlist work?

When a session is full — or a guest just wants to be told if something opens — they use the Join the waitlist link on your experience page. They get: “You’re on the waitlist — we’ll email you if a spot opens.”

When a booking is cancelled, VendorStreet automatically emails the earliest person waiting for that slot, telling them a spot has opened. It’s first-come, first-served from there — the email is a notification, not a reservation.

You can see your waitlist in the Waitlist card on the experience’s page. It’s read-only: there’s no manual promote or remove, and no way to convert a waitlist entry directly into a booking.

How do cancellations and refunds work?

Guests cancel from their booking page at /booking/<booking-id>, which tells them the policy: “You can cancel up to [N] hours before the session for a full refund” — the number you set as Cancellation window (hours). Past that window, self-service cancellation is refused and they’re pointed at your organization to sort it out directly.

You can cancel any paid booking at any time using Cancel & refund, regardless of the cancellation window. You’ll be asked to confirm first, and the confirmation names the guest, the session, and exactly how much goes back to their card. Refunds go back through Stripe, reversing the transfer to you by the amount refunded (the $1 per-booking platform fee is not refunded), and the guest is emailed with the amount refunded. Untick Email the guest if you’d rather tell them yourself.

The refund is what the guest’s card was charged: the booking total plus any tax Stripe collected. If part of the booking was paid with a gift card, that part was never charged to the card, so it is not in the card refund, and cancelling does not put it back on the gift card either. The confirmation says how much of the booking a gift card paid.

Keeping a cancellation fee. In the confirmation, choose A different amount… and enter how much to refund, before tax, with a reason. The tax on that amount goes back with it, the dialog shows exactly what the guest gets and what you keep, and the rest stays with you. The booking is cancelled and the seat goes back on sale either way. Enter 0 to keep everything. The reason is kept on your own record and is never sent to the guest.

If the guest paid the booking fee, it goes back to them only with a refund of everything that is left. A full cancellation refunds it; a cancellation that keeps a fee, and any partial refund, does not, and the guest’s email says so. When it does go back, VendorStreet returns its $1 to your Stripe balance at the same time, so refunding the guest’s booking fee never costs you anything. The dialogs show the fee separately whenever it is part of the refund.

Refunds without cancelling. Refund… on a booking refunds an amount you choose, with a reason, at any time — a late start, a goodwill gesture, or later on the fee you kept when you cancelled. The tax on the amount goes back with it. While a booking is still on the roster, part of it must stay paid, because a paid booking is what holds the guest’s seat; to refund everything, cancel it instead. Refund… also shows every refund the booking has had — yours, the guest’s own cancellation, and any made directly in Stripe — with Retry on one that didn’t go through.

Refunds made in Stripe show up in the booking’s refund history too. A partial one leaves the guest booked. One that refunds the whole charge cancels the booking and frees the seat, since nothing is paid for it any more.

When a guest cancels from their booking page, they get the same email as a receipt of what went back to their card.

Cancelling also triggers the waitlist notification for that slot.

What else ships with experiences?

  • Bookings roster on each experience’s page, grouped by session — your guest list for each date. Cancelled bookings stay on it, with what was refunded, so a fee you kept or a refund that needs a retry stays in view. The “collected” figure is what guests’ cards were charged for your part of the booking, tax included, less everything refunded; a booking fee the guest paid is never in it. Where a refund included the guest’s booking fee, the row says so, as in “$98.36 refunded (incl. $1.00 booking fee)”.
  • Performance card on the Experiences page, with revenue collected, guests, upcoming sessions, upcoming occupancy, repeat customers, and per-instructor utilization. More in Reporting & KPIs.
  • Add-ons attached per experience, priced server-side with inventory enforcement. See Add-ons.

What should I tell guests about the booking fee?

Only if your guests pay it. You can copy these onto your own FAQ page, replacing [your phone number].

What’s the booking fee?

Booking online adds a $1.00 booking fee to your total, once per booking. It’s shown on its own line before you pay, on the payment page, and in your confirmation email, so the figure on your card statement is never a surprise.

Who gets the booking fee?

It goes to VendorStreet, who run our booking system, not to us. It covers taking your booking online, holding your place while you pay, your confirmation, reminders, and the page where you can view or cancel your booking.

Do I get the booking fee back if I cancel?

Yes, in full, whenever your whole booking is refunded — for example when you cancel within our cancellation window, or if we cancel the session. If only part of your booking is refunded, the booking fee isn’t. The refund email tells you whether it included the booking fee.

Can I book without paying the fee?

Call us on [your phone number] and we’ll talk you through your options.

Common gotchas

  • Price is in cents. 45 is forty-five cents, not forty-five dollars.
  • Regenerating slots wipes and rewrites them. Never a partial update — and it’s refused entirely once any session has bookings.
  • Guests get three automatic emails you never have to send: a confirmation on payment, a reminder about 48 hours before the session, and a feedback request after it. Times in them are in your organization’s timezone — set it under Organization settings, because until you do they fall back to UTC.
  • The reminder is yours to change. On the Experiences page, Reminders lists what guests are sent before a session. Edit the wording, add more rungs (“2 hours before”), or turn one off — messages are switched off, never deleted. Press a placeholder to insert it, and check the preview, which fills them with example details and sends nothing. Two limits worth knowing: reminders are the only thing you can write — the booking confirmation is built in — and a text-message reminder can be written but not yet delivered, because bookings don’t collect a mobile number. The page says so wherever it matters; use email for anything that has to arrive.
  • Duration (minutes) is mandatory for slot generation even though it looks optional next to the friendly duration label.
  • “Create and go live” publishes immediately. Use Save as draft if you’re not ready to sell.
  • Archiving cannot be undone. Pause instead if there’s any chance you’ll want it back.
  • Pausing doesn’t cancel anything. It stops new bookings; existing guests keep their seats. If you need a session called off, cancel and refund those bookings yourself.
  • No free experiences. Price must exceed zero.
  • No operator-side booking creation. You can’t add a guest manually — everyone goes through the public checkout.
  • Payouts must be connected before you go live. Taking an experience live is refused until Stripe has enabled charges on your account. If charges are switched off later on an account that was working, a live experience stays listed but guests are told online booking isn’t available until you fix it — the notice at the top of the Experiences page tells you when that’s the case.
  • Add-ons must share the experience’s currency. A mixed-currency booking is rejected before checkout, so price your add-ons in the experience’s currency from the start.

Next steps