๐Ÿ“š Managing Your Store

Setting up modifiers, flavors, and add-ons

Let customers customize their drinks โ€” extra boba, choice of flavor, oat milk upgrade. Here's how to model these in Amari.

6 min readUpdated April 8, 2026

Most milk tea menus aren't static โ€” customers pick a flavor, add boba, upgrade to oat milk, ask for less ice. Amari handles all of this with two related concepts: flavors (the main characteristic of the drink) and add-ons (extras layered on top). Both are modeled as separate product groups marked as "add-on" and linked to the parent product.

The mental model

  • A regular product (Matcha Milktea, Frappe, Pizza) is what the customer is ordering. They must pick a size.
  • An add-on group is a list of optional or mandatory extras. Customers can pick zero, one, or many from the group.
  • A flavor is just a special kind of add-on group where the items are mutually exclusive โ€” pick one. A flavored frappe needs exactly one flavor selected.

Behind the scenes, flavors and add-ons are the same data structure. The difference is convention โ€” "flavors" means single-select, "add-ons" means multi-select. Both are stored as ProductGroup withisAddOn=true.

Real example: a Matcha Milktea

Say you sell a Matcha Milktea with these options:

  • Sizes (mandatory, single-select): Regular โ‚ฑ70, Medium โ‚ฑ90, Large โ‚ฑ110, Buy 1 Take 1 โ‚ฑ138
  • Sweetness (optional, single-select): 0%, 25%, 50%, 75%, 100% โ€” all free
  • Add-ons (optional, multi-select): Extra Boba +โ‚ฑ15, Nata +โ‚ฑ10, Cheese Foam +โ‚ฑ20

Sizes are the variants of the main product โ€” already covered in "Adding your first products". Sweetness and add-ons are separate add-on groups linked to the main product.

How to create an add-on group

1

Go to Store โ†’ Products โ†’ + New Product

Same place you create regular products.

2

Set Type to Add-On

At the top of the create form, there's a toggle or dropdown for Type. Pick Add-On instead of Product. The form fields change slightly to fit the add-on use case.

3

Name the group

Use a clear name like "Milktea Add-Ons" or "Sweetness Level". The name appears as a section header in the customer-facing product popup.

4

Add variants for each option

For an add-on group called "Milktea Add-Ons", you might add:

  • Extra Boba โ€” โ‚ฑ15
  • Nata de Coco โ€” โ‚ฑ10
  • Coffee Jelly โ€” โ‚ฑ15
  • Cheese Foam โ€” โ‚ฑ20

Each variant is one specific add-on with its own price. You can also give each variant its own recipe (so e.g. Extra Boba deducts 30g of tapioca pearls + 1 boba straw).

5

Save the add-on group

Tap Save. The group now exists but isn't attached to anything yet. Time to link it.

6

Link the add-on group to a product

Open the regular product (e.g. Matcha Milktea) โ†’ Edit โ†’ scroll to Add-Ons section โ†’ tap Link Add-On Group โ†’ pick "Milktea Add-Ons" from the list โ†’ Save the product.

The add-ons are now visible in the product popup at the POS and on QR ordering.

Single-select (flavors) vs multi-select (add-ons)

In the add-on group settings, there's a flag for single-select:

  • OFF (default) โ€” multi-select. Customer can pick zero, one, or many. Use this for true add-ons (boba + nata + cheese foam = all three).
  • ON โ€” single-select. Customer must pick exactly one. Use this for flavors (Matcha or Strawberry, not both) and modifiers like sweetness level.

Add-on recipes

Add-ons have their own recipes, separate from the parent product's recipe. When a customer orders a Medium Milktea with Extra Boba, Amari deducts:

  • Everything in the Medium Milktea recipe (cup, powder, milk, ice, etc.)
  • PLUS everything in the Extra Boba recipe (30g tapioca pearls, 1 boba straw)

Set add-on recipes the same way you set product recipes โ€” open the add-on group, tap Edit Recipe on each variant, add the ingredients consumed. See the "Creating a recipe" article for details.

Tips for clean menu design

Group similar add-ons together

Don't make 10 separate add-on groups for one drink. Bundle related add-ons into 2โ€“3 groups (e.g. "Sinkers", "Toppings", "Milk Upgrade") so customers see them in clean sections instead of one long list.

Use mandatory vs optional intentionally

Sweetness is usually a mandatory single-select (you can't buy a drink without specifying sweetness). Cheese foam is optional. Mark them differently in the add-on group settings โ€” Amari will enforce mandatory selection at checkout.

Reuse add-on groups across products

Don't create a new "Sinkers" group for every single drink. Create it once and link it to every product that uses the same options. When you add a new sinker, all linked products get it automatically.

Check the customer view

After setting up flavors and add-ons, open the product on the POS and step through the popup as if you were ringing up a sale. Make sure the order of options makes sense, prices are right, and nothing is duplicated. Same for the QR ordering view.

Related articles

  • Adding your first products
  • Creating a recipe
  • Editing product prices

Still stuck?

Email us and a human will get back to you within 24 hours.

support@amaripos.com