Skip to main content
June 13, 2026
New featureSDK v0.3.0

Add-Ons — new feature

Service businesses can now attach optional extras to any bookable service. Customers select add-ons during the booking flow — after picking a service and time slot, before checkout — and pay the combined total in one transaction.What’s in the release:
  • GET /storefront/add-ons — list add-ons, filter by productId
  • GET /storefront/products/:id/add-ons — add-ons for a specific service
  • POST /storefront/cart/add-ons — add an add-on to a cart item
  • PATCH /storefront/cart/add-ons/:id — update quantity
  • DELETE /storefront/cart/add-ons/:id — remove from cart
Key behaviors:
  • Add-ons are scoped to products. Only add-ons linked to the booked service appear.
  • Two pricing modes: fixed (customer picks quantity) and duration-multiplied (quantity auto-set to the number of duration units, useful for per-day or per-hour charges).
  • Prices are snapshotted at cart creation — later catalog changes don’t affect existing orders.
  • Add-ons appear in order line items (OrderAddOnLineItem) and on appointment records (AppointmentAddOn). Partial quantity refunds are supported.
  • Works on both platform='opencals' and platform='shopify'.
SDK support — available in @opencals/storefront-sdk v0.3.0 and higher (via AddonService). Older versions do not include add-on methods or types.
# List add-ons for a service
curl -H "X-Api-Key: sfk_your_key" \
  https://api.opencals.com/storefront/products/{productId}/add-ons

# Add to cart
curl -X POST -H "X-Api-Key: sfk_your_key" \
  -H "X-Cart-Id: {cartId}" \
  -H "Content-Type: application/json" \
  -d '{"cartItemId": "...", "addOnId": "...", "quantity": 1}' \
  https://api.opencals.com/storefront/cart/add-ons
See the Add-Ons feature page for the full overview and use cases.
Last modified on June 21, 2026