Add-ons are the paid extras a customer can attach to a booking at checkout — equipment rental, an extra guest, a premium upgrade, a treatment on top of a service. Instead of building a separate bookable service for every option, you create an add-on once and let it appear on the services it belongs to. This guide covers creating an add-on, pricing it, controlling quantity, and deciding exactly where it shows up.
Add-ons live under Products → Add-ons. Each one has a title, a price, and a few switches — Taxable, Duration-multiplied quantity, and a Max quantity cap. Leave the assignments empty and the add-on is offered on every service; assign specific services, locations, or staff to narrow where it appears. Add-ons show at checkout after the customer picks a time slot, and their price is snapshotted onto the order.
Before you start
You'll need admin access to your Opencals dashboard and at least one bookable service, since add-ons attach to bookings. If you want an add-on to appear only on certain services, create those services first — see Set up your services.
Step 1 — Open Add-ons
From the dashboard, go to Products → Add-ons. The list shows every add-on you offer with its title, price, type (Fixed or Per duration unit), how many services it's assigned to, and its status.
| Title | Price | Type | Products | Status |
|---|---|---|---|---|
YYoga mat rental | $4.00 | Fixed | 2 service(s) | Active |
EExtra guest | $15.00 | Fixed | — | Active |
GGPS device | $6.00 | Per duration unit | 1 service(s) | Active |
PPremium oils upgrade | $12.00 | Fixed | 3 service(s) | Inactive |
If you haven't created any yet, the list is empty and offers a Create Add-on button to get started.
No add-ons found
Create Add-onStep 2 — Create an add-on
Click Create Add-on. The General info card is where you name the extra and describe it.
General info
This add-on is currently enabled and available to customers.
The slug is used in the add-on URL. Auto-generated from the title — lowercase letters, numbers, and hyphens.
Upload Image
Click to select an image or drag and drop it here to upload- Enabled — the status toggle. When on the add-on is available to customers; turn it off to hide it at checkout without deleting it (the list shows it as Inactive).
- Title — the name customers see, e.g. "Yoga mat rental". Required.
- Description — an optional line explaining what the extra includes.
- Slug — the URL identifier. It's generated automatically from the title (lowercase letters, numbers, and hyphens) so you rarely need to touch it.
- Images — upload one or more images. The first becomes the default shown in the selection UI.
Step 3 — Set the price and tax
Open the Pricing card and enter what the customer pays for one unit of this add-on.
Pricing
Set the price customers pay for this add-on.
- Price — the unit price, in your store's currency. It must be zero or more.
- Taxable — on by default. Tax is calculated per unit from your store's tax settings. Turn it off for items where tax doesn't apply, such as a tip or a donation.
Prices are locked to the order
When a customer adds an extra to their cart, Opencals snapshots the price onto that order. Changing the catalog price later never rewrites orders that already exist, so your historical totals and invoices stay accurate.
Step 4 — Choose the quantity behavior
The Quantity card controls how many of the add-on a customer can attach to a single booking.
Quantity
Control how many of this add-on a customer can add to a single booking.
Quantity automatically mirrors the appointment duration units.
Maximum a customer can add per booking. Leave empty for unlimited.
- Duration-multiplied quantity — off by default. Turn it on and the quantity automatically mirrors the appointment's duration units — ideal for per-time charges. If your base duration is 30 minutes and a customer books 90 minutes (three units), a duration-multiplied add-on priced at $5 charges $15. This only matters for services that allow a custom duration.
- Max quantity — the cap on how many a customer can add per booking. Leave it empty for unlimited. This field is hidden while duration-multiplied is on, since the quantity is then set automatically.
Pick one quantity model per add-on
Use Max quantity for countable one-off items — a child seat, an extra towel, an additional guest. Use Duration-multiplied quantity for anything billed by time, like equipment hire or an extended session. Don't ask customers to do the math themselves.
Step 5 — Scope where the add-on appears
By default an add-on with no assignments is global — it's offered on every service, at every location, with any staff member. The assignment fields on the side are filters: fill one in and the add-on only shows where it's assigned.
Assign services that offer this add-on
Assign locations where this add-on is available
Assign staff members who can deliver this add-on
- Services — assign the services that should offer this add-on. Empty means every service.
- Locations — restrict the add-on to specific locations. Empty means all locations.
- Staff members — restrict it to specific staff. Empty means any staff member.
Each filter is independent and only narrows availability when you set it. A yoga mat scoped to two classes won't appear on a haircut; leave it unscoped and it's offered everywhere.
Over-scoping hides the extra
Every filter you add makes the add-on appear in fewer places. If an add-on isn't showing up at checkout, check that the customer's chosen service, location, and staff member all match its assignments — or clear the assignments to make it global again.
Frequently asked questions
Frequently Asked Questions
Keep going
Add-ons overview
See how paid extras work across the booking flow, from selection at checkout to fulfillment.
Set up your services
Create the bookable services that add-ons attach to, with schedules, staff, and durations.
Discounts & promo codes
Run promotions on bookings — and choose whether a discount includes add-ons in its calculation.
Send invoices & collect payments
Invoice for a booking and its extras, then track payment status from any order.
Group appointments
Take multiple attendees on one booking — pair it with an extra-guest add-on for per-head charges.
Opencals pricing
Pay-as-you-go at $0.99 per booking or custom monthly from $15 — no per-seat tax.
Early Access — 3 Months Free
Ready to transform your service business?
Join 150+ businesses already using Opencals. Get 3 months completely free with all features unlocked.