Understand the data model behind merchants, locations, menus, carts, and orders.
The Storefront API is built around five entities: merchants, locations, menus, carts, and orders. This page explains how they relate to each other and what data each one carries.
Use merchant.getBySlug() to resolve a brand slug into its list of locations. Each location in the response includes an id, display name, address, logo, and a methodsStatus object indicating which fulfillment methods are enabled.
Modifiers let customers customize a product (e.g., size, toppings, extras). Each modifier group has selection rules:
interface Modifier { id: string; name: string; // "Choose your size" rule: { min: number; // 1 — must select at least one max: number; // 1 — can select at most one }; items: ModifierItem[]; // [{ id, name, price, maxQuantity }]}
Modifier items can have nested child groups for multi-level customization (e.g., “Choose your protein” > “Choose your preparation”).
Orders are created automatically when a payment succeeds — you do not create them via the API. After payment, the order appears in the restaurant’s merchant dashboard for fulfillment.The Storefront API does not expose order management endpoints. To track order completion from the customer’s perspective, poll the cart status until it reaches COMPLETED.