Skip to content

Badges and offers

An item can carry up to two badges at once, chosen from a fixed set: Best seller, New, Offer, Chef’s special, Limited and Seasonal. Set them from the item drawer or across several items at once with your agent — asking for a third badge is refused rather than silently trimmed to two.

Offer is a price promotion, not just a label. It needs either a “was” compare-at price on the item or an offer label (“Weekend deal”) — set neither, and the save is refused with an error naming the item. An offer can also carry an end date and time; give one, and the badge (and the offer itself) stops showing to visitors once it passes, even though the selection is still stored on the item.

New carries its own clock: it drops off automatically 30 days after you add it, unless you set a specific expiry yourself. Offer drops off at whatever end date you gave it, or never if you left it open. Both are worked out fresh every time the menu is read — nothing rewrites the item when a badge lapses, so clearing an expired badge from the drawer afterward is tidying, not a requirement.

Any item with a live offer appears at the top of the public menu in an offers strip, showing its end time and label if you gave one. On the item itself, up to two badge chips sit next to the name, and a compare-at price renders struck through beside the current price.

Mark the lamb ouzi and the mixed grill as Best seller, and put an Offer on the chicken shawarma ending Friday at 8pm — it already has a compare-at price set

calls set_item_badges with the item ids, the badge list, and offer: { ends_at } — add dry_run: true first if you want to check it before it saves.