beginner
shop-rentals
add-ons
inventory

Configuring Add-ons

Sell helmets, locks, child seats, delivery, and insurance alongside rentals — with bookable inventory limits, categories, and per-reservation snapshots

Levy Fleets TeamMay 7, 20266 min read

Add-ons are anything you sell alongside the rental — helmets, locks, child seats, delivery, insurance. They appear in the walk-in wizard and on the public booking page, get charged with the reservation, and show up as line items on receipts.

Configure them at Shop Rentals → Add-ons.

Categories

Every add-on belongs to one of six categories. The category drives display tone (color in the catalog) and sometimes UX behavior:

CategoryUse forExample
safetyHelmets, knee pads, lightsBicycle helmet
accessoryLocks, baskets, child seatsU-Lock
serviceTune-up, delivery setupPre-rental tune-up
deliveryDelivery to addressDelivery (3 mi radius)
insuranceDamage protection plans$10 damage coverage
otherAnything elseTour map

Categories are display-only — they don't affect pricing or inventory math.

Bookable vs. unlimited

The most important decision per add-on: is it bookable?

  • Bookable — you have a finite inventory. The system tracks usage across overlapping reservations and refuses to oversell.
  • Not bookable — unlimited supply (services, insurance, digital items).

For a 10-helmet shop, mark Helmet as bookable with quantity_total = 10. If five overlapping reservations have each booked 2 helmets, the next reservation that asks for a helmet gets available: 0.

For services like Damage Insurance, leave bookable unchecked — you can sell as many as customers want.

Pricing semantics

Add-on prices are per-unit, fixed. There's no per-day pricing on add-ons today.

If you want a "$10/day insurance" add-on, the customer pays $10 once per reservation, not $10 per rental day. You can work around this by either:

  • (a) folding the daily charge into the base rental rate
  • (b) creating multiple variants ("Insurance — 1 day," "Insurance — 7 days")

Most operators just charge a flat per-rental price; customers don't notice the difference.

Quantity per reservation

Customers can buy multiple of the same add-on (e.g., 2 helmets for a couple). The walk-in wizard and public booking page expose +/- quantity buttons. The total for that line is quantity × price_cents.

Snapshot behavior — important

When an add-on is added to a reservation, the system snapshots the current name, category, and currency into the reservation_addons row. This means:

  • If you rename "Helmet" to "Bicycle Helmet" later, existing receipts still say "Helmet" — historical accuracy is preserved.
  • If you raise the price from $5 to $7, existing reservations stay at $5; only new bookings see $7.
  • If you delete (deactivate) an add-on, existing receipts still render.

This matches how pricing_snapshot works on the reservation itself.

Editing and deleting

  • Edit any field at any time. Only new bookings see changes.
  • Delete soft-deletes by setting deleted_at. The add-on disappears from the catalog but historical receipts remain valid.
  • Deactivate (uncheck Active) hides the add-on from new bookings without deleting. Use this for seasonal items.

Sort order

Each add-on has a sort_order integer. Lower numbers appear first. The walk-in wizard and public page render in this order. We recommend:

  1. Safety first (helmets) — usually required
  2. Common accessories (locks, lights)
  3. Optional accessories (child seats)
  4. Services (delivery, tune-up)
  5. Insurance (last — customers decide after seeing the total)

Image URLs

The image_url field is shown on the public booking page (rendered above the price). It's optional but helps conversion — customers who can see the helmet are more likely to add one. Use a public HTTPS URL, not a local file.

Bulk add-on operations

There's no bulk-edit UI today. To run a price change across multiple add-ons (e.g., 10% increase across the board), use the database editor with a SQL update, or edit them one at a time.

Common configurations

  • Bike shop minimum — Helmet (bookable), U-Lock (bookable), Damage Insurance (unlimited)
  • Family shop — add Child Seat (bookable, low qty)
  • Tour shop — add Tour Map ($2, accessory) and Pre-rental Tune-up ($15, service)
  • Delivery shop — add Delivery (variable price, delivery category) with bookable unchecked

Add-ons in checkout

For how add-ons appear at checkout (walk-in and public booking), inventory cap enforcement, and per-rider quantity limits, see Selling add-ons at checkout.

Running a fleet on this hardware?

Levy Fleets runs scooters, e-bikes, mopeds and golf carts on the IoT hardware you already have, with integration pages for 29 vendors including Segway, Okai, Omni, Queclink, Invers and Comodule. Keyless unlock, geofencing, rider payments and rider support are included, and the Managed plan is a share of revenue with no per-vehicle software fee.