> ## Documentation Index
> Fetch the complete documentation index at: https://docs.craveup.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Glossary

> Key terms and concepts used across the Crave platform.

## A

<ParamField path="API key" type="concept">
  A location-scoped secret (`sk_live_...` or `sk_test_...`) used to authenticate Storefront API requests. Generate keys from the Dashboard under **Settings > API Keys**. Each key is tied to a single location.
</ParamField>

<ParamField path="Analytics event" type="concept">
  A tracked action in the ordering funnel: `SCAN`, `CART_VIEW`, `CHECKOUT_VIEW`, or `ORDER_PLACED`. Fired via `storefront.analyticsEvents.track()`. See [Analytics guide](/guides/analytics).
</ParamField>

## C

<ParamField path="Cart" type="model">
  A temporary container holding a customer's selected items, modifiers, fulfillment method, and order timing. Created when an ordering session starts. Identified by `cartId`. Carts expire after inactivity.
</ParamField>

<ParamField path="Cart token" type="concept">
  The `cartId` string returned when starting an ordering session. Persist it in `localStorage` or a cookie so returning customers resume their cart.
</ParamField>

<ParamField path="Category" type="model">
  A grouping of products within a menu (e.g., "Appetizers", "Mains", "Drinks"). Contains an ordered list of `productIds`. Displayed as tabs or sections in the storefront.
</ParamField>

<ParamField path="Clerk" type="service">
  Authentication provider used for the Admin API and Dashboard. Clerk manages user sessions, organization memberships, and JWT tokens. Not used for storefront customer-facing flows.
</ParamField>

## D

<ParamField path="Delivery zone" type="concept">
  The geographic area a location delivers to. Checked via `storefront.locations.getDistance()` before setting a delivery address on a cart. Out-of-range addresses return a `DELIVERY_OUT_OF_RANGE` error.
</ParamField>

<ParamField path="Discount code" type="concept">
  A promo code (e.g., `SAVE10`) applied to a cart for a percentage or fixed discount. Applied via `storefront.discounts.apply()`, removed via `storefront.discounts.remove()`.
</ParamField>

## F

<ParamField path="Fulfillment method" type="concept">
  How a customer receives their order. Four options: `takeout` (counter pickup), `delivery` (address-based), `table_side` (dine-in to a table number), `room_service` (hotel room delivery). Set on the cart before checkout. See [Fulfillment Methods guide](/guides/fulfillment-methods).
</ParamField>

## G

<ParamField path="Gratuity / Tip" type="concept">
  An optional tip amount added during checkout. Locations configure whether tipping is enabled, suggested percentages, a default percentage, and whether custom amounts are allowed. Set via `storefront.cart.updateGratuity()`.
</ParamField>

## L

<ParamField path="Location" type="model">
  A physical or virtual restaurant location within a merchant organization. Each location has its own menus, hours, fulfillment methods, payment settings, and API keys. Identified by ObjectId or slug.
</ParamField>

## M

<ParamField path="Menu" type="model">
  A collection of categories and products for a location. Locations can have multiple menus (e.g., Lunch, Dinner, Weekend Brunch). The active menu depends on the current time and the location's schedule.
</ParamField>

<ParamField path="Merchant" type="model">
  The top-level business entity. A merchant has one or more locations. Looked up by slug via `storefront.merchant.getBySlug()`.
</ParamField>

<ParamField path="Modifier group" type="model">
  A set of customization options for a product (e.g., Size, Toppings, Extras). Each group has `min`/`max` selection rules. Contains modifier items.
</ParamField>

<ParamField path="Modifier item" type="model">
  A single option within a modifier group (e.g., "Large", "Extra Cheese", "Bacon"). Has an optional price and max quantity.
</ParamField>

## O

<ParamField path="Order status" type="concept">
  The lifecycle state of an order: `OPEN` (cart active) → `LOCKED` (payment processing) → `COMPLETED` (confirmed). Admin-side statuses include `confirmed`, `ready`, `dispatched`, `completed`, `cancelled`.
</ParamField>

<ParamField path="Ordering session" type="concept">
  The entry point for a customer interaction. Starting a session creates a cart and returns a `cartId`. Created via `storefront.orderingSessions.start()`.
</ParamField>

## P

<ParamField path="Payment intent" type="concept">
  A Stripe PaymentIntent created via `storefront.payments.createIntent()`. Returns a `clientSecret` for Stripe.js and a `stripeAccountId` for the restaurant's connected Stripe account. See [Accept Payments guide](/guides/accept-payments).
</ParamField>

<ParamField path="Product" type="model">
  A menu item with name, description, price, images, and optional modifier groups. Added to carts with quantity and modifier selections.
</ParamField>

## R

<ParamField path="Rating" type="concept">
  A post-order experience rating (1-5 stars) with optional comment. Submitted via `storefront.locations.submitRating()`.
</ParamField>

## S

<ParamField path="Sandbox mode" type="concept">
  A developer mode toggle that routes all operations through Stripe test mode. Orders are logged but not sent to the restaurant. Toggled via the Admin API's `/developer-mode` endpoint.
</ParamField>

<ParamField path="Slug" type="concept">
  A URL-safe identifier for merchants and locations (e.g., `downtown-pizza`). Used interchangeably with ObjectIds in API paths.
</ParamField>

<ParamField path="Storefront SDK" type="tool">
  The typed TypeScript client (`@craveup/storefront-sdk`) for the Storefront API. Wraps all endpoints with type-safe methods organized into namespaces: `merchant`, `locations`, `orderingSessions`, `cart`, `discounts`, `payments`, `analyticsEvents`. See [SDK Reference](/getting-started/storefront-sdk).
</ParamField>

<ParamField path="Stripe Connect" type="service">
  Stripe's platform for marketplace payments. Each restaurant connects their Stripe account to receive payouts. Crave handles the Connect setup; storefronts only need the publishable key for Stripe.js.
</ParamField>

## W

<ParamField path="Webhook" type="concept">
  An HTTP POST sent to your server when events occur (e.g., `order.created`, `order.completed`, `cart.abandoned`). Signed with HMAC-SHA256 for verification. See [Webhooks guide](/guides/webhooks).
</ParamField>
