Promotions on a variant and a presentation together
A promotion item can target a presentation sold with its variant, as its own item with its own price and previous price. Five updated promotions operations and two updated MCP tools.
5 November 2026 — A product without declared configurations is sold as a variant plus a presentation ("Soft · Box of 12"), and that pair has its own price. A promotion can now target it.
- New field on each item —
variant_id(UUID, optional). Withtarget_typepresentation, it is the variant of the same product the presentation is sold with. Omit it, or sendnull, for the presentation on its own. - Its own item — the pair is a different item from the presentation alone and from the variant alone, so the three can live in the same promotion. It only covers that pair, and it has its own price history and legal previous price.
- Declared configurations — a product that declares its combinations keeps
targeting the configuration with
target_typeconfiguration. - Rejected values — a variant of another product, or
variant_idwith any othertarget_type, returns422invalid_promotion_itemwithparamitems.N.target_id. - Where it is returned — every item of a promotion returns
variant_id,nullwhen there is no pair, andselection_labelreads "Soft · Box of 12". - MCP tools —
create_promotionandupdate_promotionacceptvariant_idon each item.
Integrations that do not send the field need no changes: an item without
variant_id behaves as before.
Updated endpoints5
| Endpoint | Description |
|---|---|
GET/v1/companies/{company}/promotions | List all promotions |
POST/v1/companies/{company}/promotions | Create a promotion |
GET/v1/companies/{company}/promotions/{promotion} | Retrieve a promotion |
PATCH/v1/companies/{company}/promotions/{promotion} | Update a promotion |
POST/v1/companies/{company}/promotions/{promotion}/cancel | Cancel a promotion |