Offers
Offers are promotional discounts and incentives that can be applied at the POS or browsed by shoppers.
Offer Types
| Type | Description | POS Application |
|---|---|---|
Standard | Fixed or percentage discount on specific UPCs | Auto-applied when UPC scanned |
MustBuy | Requires purchase of qualifying items | Applied when all qualifier UPCs present |
Employee | Restricted to verified employee members | Applied if member has employee flag |
Ecom | E-commerce exclusive, feature-gated | Not applied at physical POS |
Recurring | Repeating discount on a schedule | Applied per schedule cycle |
Offer Lifecycle
Draft → Active → Deactivated
↑
(can reactivate from Deactivated)
| Transition | Endpoint |
|---|---|
| Draft → Active | PUT /admin/api/v1/offers/{id}/activate |
| Active → Deactivated | PUT /admin/api/v1/offers/{id}/deactivate |
Only Active offers are visible to shoppers via the Shopper API and applied at POS. Creating an offer leaves it in Draft state — you must explicitly activate it.
UPC Mapping
Each offer is associated with one or more UPCs (Universal Product Codes). At POS, the offer resolution engine (POST /pos/api/v1/offers/resolve) matches basket UPCs against active offer UPCs.
Offer Visibility
| API | What Offers Are Returned |
|---|---|
Shopper API /api/v1/offers | Active, non-employee offers visible to this member |
Shopper API /api/v1/offers/featured | Featured subset (5-min cache) |
Shopper API /api/v1/offers/fuel | Fuel offers (feature-gated: fuel-offers) |
Shopper API /api/v1/offers/ecom | Ecom offers (feature-gated: ecom-offers) |
POS API /pos/api/v1/offers/resolve | Applicable offers for a specific basket |
Campaigns and Offers
Campaigns group offers into enrollment-based programs. A member enrolls in a campaign and earns progress toward a bonus. See Loyalty for points integration.