> ## Documentation Index
> Fetch the complete documentation index at: https://docs.riservahq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Add-ons

An add-on is an optional extra a guest buys with their reservation — a cheese
board, a reserve pour, a bottle to take home — and **every add-on sells as its
own Shopify product**. Guests add it in the booking window, it goes into the
same checkout as the reservation, and it shows up on the reservation, at the
register and in your reports.

Add-ons live on each experience's page, in the **Add-ons** card.

***

## Where do guests see add-ons?

Guests see add-ons in the booking window on your website, after they pick a
time and press **Continue**. They sit under the heading "Add to your visit",
one card each, with the add-on's name, price and photo (if its product has
one).

Add-ons are an online-booking feature. When your team books a reservation in
Riserva's admin or with the POS **Book reservation** tile, no add-ons are offered. Each
add-on product is also on your Point of Sale channel, so staff can ring it up
at the register like any other product — but that sale is not listed as an
add-on on the reservation.

***

## How is an add-on priced?

The add-on window asks for a **Price** and how it's **Priced**:

| Priced | What the guest pays | What the guest sees |
| - | - | - |
| **Per party** | One price for the whole reservation | An **Add** button |
| **Per guest** | The price once for every guest in the party | An **Add** button |
| **Each (guest picks quantity)** | The price for each one they choose | A minus/plus counter |

For **Each**, you also set **Max quantity** — the most a guest can add to one
reservation, from 1 to 20.

**Worked example.** A party of four books a tasting. A "Cheese board, \$40 per
party" adds \$40. A "Reserve pour, \$12 per guest" adds \$48 — the cart line
has a quantity of 4, the party size. A "Bottle to take home, \$35 each, max 6"
lets the guest choose 0 to 6 bottles.

***

## Should I create a new product or link one I already sell?

The **Add add-on** button asks first:

* **Create a new product** — "Riserva creates it — hidden from search and
  collections". You fill in the add-on window and Riserva makes the product.
* **Link an existing product…** — "The product keeps its own price and
  content". Shopify's product picker opens straight away; after you pick, the
  add-on window opens with the product's name and price filled in.

**A product Riserva creates** is named after the add-on alone (no experience
name in front), gets the add-on's description and price, and is put on your
**Online Store** and **Point of Sale** channels. Its Shopify status is
**Unlisted**: guests can buy it through the booking window, but it does not
appear in your storefront's search, collections or recommendations. It is
marked as a service, so checkout doesn't ask for a shipping address because of
it.

**A product you link** stays exactly as it is when you link it. While you are
adding it, the price box is greyed out ("Pulled from the linked product") and
there is no photo section, because both come from the product. A linked
product keeps its own shipping settings, so a bottle you normally ship still
asks for shipping at checkout.

To point an add-on at a different product later, remove the add-on and add it
again. Linking is only offered from an add-on's menu while it has no product.

***

## Can one add-on offer several variants?

Yes. When you link, open the product in the picker and tick just the variants
you want to offer — a red, a white and a rosé, say. One add-on links to **one
product**; if you pick variants from two products, Riserva refuses with
"Choose variants from a single product".

On your add-on card the line reads like "From \$12.00 · per party · 3
variants": the cheapest variant's price, how it's priced, and how many
variants it offers. The add-on window has no price box for it; instead,
**Variants offered** lists each variant with its own price, and you change
those prices on the product in Shopify.

Guests see **one card with a dropdown** listing only the variants you chose.
The **Add** button or counter applies to the variant showing in the dropdown.
Variants they've already added appear as small labels with an "×" under the
dropdown, so they can add a second variant and still see the first. On the
reservation, the add-on carries the variant bought — "Souvenir Glass — Red".

***

## Which way do price and photo flow?

Both ways — the add-on and its product stay in step, and the last change wins.

**From the product to Riserva.** Change the price or the photo on the product
in Shopify, and the add-on follows. Riserva picks the change up when Shopify
reports the product was updated, and again whenever you open the experience's
page.

**From Riserva to the product.** When you edit an add-on and press **Save**,
Riserva writes the fields you actually changed — name, description or price —
to the product. A photo you add in the add-on window's **Photo** section goes
onto the product too. Fields you didn't touch are left alone, so saving an
add-on never wipes a description you wrote in Shopify.

> **Good to know**
> This applies to a linked product too. Rename a linked add-on in Riserva and
> the product in your store is renamed. Edits to the product's name or
> description in Shopify do not come back to Riserva — only price and photo do.

The add-on's **Description** goes on its Shopify product, and the booking
window shows it too: under the add-on's price, two lines of it, with a
**More** button to read the rest (**Less** folds it back). Keep the first
line or two the part that sells it. The window also shows the name, price and
photo.

***

## What do the badges on an add-on mean?

The card says out loud when an add-on can't sell.

| Badge | What it means | What to do |
| - | - | - |
| **Hidden** (grey) | Guests aren't offered it any more | **Show to guests** in its three-dot menu |
| **Product is draft** (red) | Its Shopify product is a draft, so guests can't buy it | Set the product to Active or Unlisted in Shopify, then reload the page |
| **Product is archived** (red) | Its Shopify product is archived | Unarchive it in Shopify, or remove the add-on and add it again |
| **Not on Online Store** (yellow) | The product isn't on your Online Store channel, so the storefront cart can refuse it | Add it to the Online Store channel in Shopify; saving the add-on again also tries to fix it |
| **No product — retry from the menu** (yellow) | The experience is Active but this add-on has no product | **Create Shopify product** or **Link to existing product…** in its menu |
| **Charged at checkout — retry** (yellow) | The experience charges later, but this add-on didn't join that charge | **Charge this with the reservation** in its menu |
| **Ships to the guest** (yellow) | The linked product is set to ship. Guests who add it online are asked for a shipping address and a shipping method at checkout, and the Shopify order lists it as an item to ship | For something served at the visit, create the add-on in Riserva instead (Riserva's own add-on products never ship) |

A line reading "Product is created when the experience is published" is not a
problem — see the Draft section below.

***

## What's the difference between Hide from guests and Remove?

Both are in the add-on's three-dot menu.

**Hide from guests** stops offering the add-on in the booking window. The
add-on stays on the card with a **Hidden** badge, its product is untouched,
and reservations that already include it keep it. **Show to guests** brings it
back. Use this for a seasonal extra.

**Remove** takes the add-on off this experience. Its Shopify product **stays
in your store** — Riserva doesn't delete it — and past reservations keep the
add-ons guests bought. Delete or archive the product in Shopify yourself if
you no longer want it.

***

## What happens on a Draft experience?

You can create add-ons on a Draft experience; their products wait. The card
says "Product is created when the experience is published", and when you set
the experience to **Active**, Riserva creates every waiting add-on product at
the same time as the experience's own product. A photo you added while it was
a draft goes onto the product then.

If one doesn't create, a yellow banner reads "Published — but some add-on
products didn't create", and that add-on shows **No product — retry from the
menu**.

On an experience that is already Active, a new add-on's product is created the
moment you press **Add**.

***

## How are add-ons charged?

Add-ons follow the experience's payment timing. Each one is its own line in
the cart, labelled "Add-on" with its name, in the same checkout as the
reservation.

* **Paid at checkout** — the guest pays for the add-ons with everything else.
* **Charged later** (**Before the visit**, **At check-in** or **At the visit**) — the add-ons
  are charged **on the same date as the reservation**: one checkout, one charge. Riserva puts
  every add-on product on the experience's pay-later option to make that true,
  a linked product included. The amount quoted in the booking window's fine
  print includes them.
* **Booked inside the charge window** — when the experience charges at
  checkout for a visit that close, add-ons are paid at checkout too.
* **At the visit — charged when closing out** — add-ons are charged with the fee
  at close-out. If the register settles the fee or you waive it, Riserva takes
  only the fee line off the guest's checkout order and the card is charged for
  the add-ons alone.

If an add-on's product couldn't join the pay-later option, that one line is
charged at checkout. The card shows **Charged at checkout — retry**, and the
guest is told "Some add-ons are charged today." Use **Charge this with the
reservation** in the add-on's menu to try again.

## Can I add an add-on after the reservation is made?

Yes, while the balance is still on the guest's saved card (Card on file or
Charge scheduled). On the reservation's page, press **Add add-on** under Add-
ons, pick the add-on (and **Which one** for a variant, **Quantity** for one
sold each), and press **Add to saved-card order**. Riserva adds it to the
reservation's Shopify order without emailing the guest, and it is charged with
the rest of the balance. Once a reservation is paid, or the card is being
charged, sell the add-on at the register instead. A card shared by several
reservations also goes to the register.

If Shopify doesn't confirm the change, the reservation page says so and the
card waits: press **Check the Shopify order** and Riserva records the add-on
if it is on the order, or notes that nothing was added.

On the Shopify order, the add-on joins the reservation's fulfillment group,
so the order shows one **Unfulfilled** group. A product set to ship stays in a
group of its own — Shopify does not combine a shipping item with a visit —
and it is still marked fulfilled with the rest when the party checks in.

***

## Where do add-ons show up after the reservation is made?

* **The reservation's page.** The Reservation card lists each add-on — "Cheese
  board × 1" — with its price and a small photo. The Payment card splits the
  money into **Experience** and **Add-ons** rows, with "(due)" on them while a
  saved card hasn't been charged yet.
* **Shopify POS.** The reservation's page on the **Reservations** tile has an
  **Add-ons** row in its **Reservation** section — "2 × Cheese plate" — to use
  as your hand-over checklist. A refunded add-on reads
  "(refunded — don't deliver)".
* **Reports.** Collected includes add-ons, and the money breakdown shows the
  add-on share as its own **Add-ons** line.

If a reservation moves to a different experience, its add-ons come with it,
and Riserva warns "Add-ons belong to the previous experience — review or
refund them."

***

## What happens to add-ons in a refund?

**Cancelling a reservation.** The cancellation policy's percentage applies to
everything the guest paid, add-ons included. When any money is refunded, the
add-ons are marked refunded, so the POS checklist stops listing them as
something to hand over. On the reservation's page the refund shows as its own
**Refunded** row; the add-on lines keep their prices.

**Refunding one add-on in Shopify.** Refund the add-on's whole line on the
Shopify order. On the reservation's page that add-on is crossed out with a
**Refunded** badge, and the timeline reads "Add-on "Cheese plate" refunded".
A refund of only part of the line's quantity is not marked.

***

## Where you'll see this

* Experience page › **Add-ons** card, the **Add add-on** window, each add-on's
  three-dot menu
* Storefront › booking window › "Add to your visit"
* Reservation page › Reservation card and Payment card
* POS › **Reservations** tile › a reservation's page › **Reservation** section › **Add-ons**

What things mean on this screen →
[Experiences reference](/reference/experiences)

***

## Related

* [Publish an experience](/getting-started/publish-an-experience)
* [What guests see, end to end](/guest-experience/what-guests-see)
* [Payment policies and money states](/core-concepts/payment-policies)
* [Cancellations and refunds](/daily-operations/cancellations-and-refunds)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.