Order pizza, browse menus, optimize deals, and track delivery from the terminal — with a local SQLite store that powers reorder, price comparison, and deal stacking no other Domino's tool offers.
Every Domino's feature you would expect — store locator, menu browse, build cart, validate, price, place, and track — plus a local data layer that compounds. Save named templates with template save, find the cheapest store for your order with compare-prices, hunt for the best stacked deal with deals best, and watch your delivery in real-time with track --watch.
Created by @mvanhorn (Matt Van Horn).
Contributors: @rogilvy (Robert Ogilvy).
Authentication
Most US commands work without authentication: store locator, menu browse, cart building, anonymous order placement, and tracking-by-phone all succeed unauthenticated. For order history and account-scoped checkout inspection, run dominos-pp-cli auth login. Add --market ca for Domino's Canada; the selected market is persisted with the harvested session token and customer ID. The isolated Chrome window is used only for sign-in. Subsequent Canadian history, card-count, validation, pricing, and store-capability calls run directly through the CLI's HTTP client.
Canadian support currently covers the Power API used for stores, menus, order history, validation, pricing, and checkout inspection. The US GraphQL loyalty/cart BFF is not available on the Canadian storefront. Canadian checkout preview never places an order and never prints card metadata. orders place --market ca and confirmed quick/template placement are rejected until a Canadian payment and service-method contract is implemented.
Quick Start
# 1. Sign in once. Spawns Chrome, you sign in normally, token harvests automatically.
dominos-pp-cli auth login
# Canada: one-time sign-in, then direct CLI calls
dominos-pp-cli auth login --market ca
dominos-pp-cli customer orders --market ca --limit 5 --json
dominos-pp-cli customer cards --market ca --json
dominos-pp-cli checkout preview --market ca --last --json
# 2. Find your closest stores (no auth needed)
dominos-pp-cli stores find --street "709 19th Ave" --city "Seattle WA 98122"
# 3. Get a specific store's profile
dominos-pp-cli stores get 7144
# 4. Fetch the full menu (no auth needed; 68 products, 215 variants)
dominos-pp-cli menu 7144 --json | jq '.Variants | keys | .[0:10]'
# 5. List all coupons available at the store (no auth needed; 58 coupons)
dominos-pp-cli deals list --store-id 7144 --json | jq '.coupons[0:5]'
# 6. Build a cart locally
dominos-pp-cli cart new --store 7144 --service Delivery --address "709 19th Ave, Seattle WA 98122"
dominos-pp-cli cart add 12THIN --qty 1
dominos-pp-cli cart add F_PBITES --qty 1
dominos-pp-cli cart show
# 7. See which coupons auto-apply to YOUR cart
dominos-pp-cli deals best --json
dominos-pp-cli deals eligible --json
# 8. Save as template for future replay
dominos-pp-cli template save friday-night --from-cart
# 9. (Authenticated) See your order history
dominos-pp-cli customer orders --limit 5
# 10. (Authenticated) Loyalty points balance
dominos-pp-cli customer loyalty
# 11. Track an order (no auth — keyed by phone)
dominos-pp-cli track --phone 2065551234 --watch --interval 30s
# 12. Place a saved template (DRY-RUN by default; --confirm to actually place)
dominos-pp-cli order-quick --template friday-night --json
dominos-pp-cli order-quick --template friday-night --confirm --eta-watch --json
Canadian checkout preview (cannot place)
dominos-pp-cli checkout preview --market ca --last --json
Browser login harvests the customer ID automatically. If you authenticate with DOMINOS_TOKEN, auth login --paste, or auth login --stdin, pass the matching customer ID explicitly: checkout preview <customerID> --market ca --last --json.
This fetches the latest account order, removes historical payment and order identifiers, validates and reprices it, counts saved cards without emitting their metadata, and reports an allowlisted set of store payment capabilities. Its network path contains no /power/place-order request.
Unique Features
These capabilities aren't available in any other tool for this API.
Local state that compounds
-
template save — Save your usual order — store, address, items, toppings, payment ref — and replay it with one command.
Reach for this when an agent or user wants a one-command repeat of a known-good order without rebuilding the cart from scratch.
dominos-pp-cli template save friday-night --from-cart && dominos-pp-cli template order friday-night --eta-watch --json
-
reorder — Replay your last order against today's menu; FTS-substitute items the menu rotated out so the order still goes through.
Reach for this when a saved-order-style replay must survive Domino's menu rotation; substitution avoids the 'this item is no longer available' failure.
dominos-pp-cli reorder --last --substitute-unavailable --dry-run --json
-
deals best — Cross-reference your cart against every available deal (incl. loyalty-exclusive) and report the lowest-priced combination.
Reach for this before placing an order whenever the user cares about price; the flag enumerates 2-3-deal combinations the website never surfaces.
dominos-pp-cli deals best --agent
-
analytics — Aggregate your synced order history into spending totals, item frequency, favorite stores, and average order value.
Reach for this when 'how much have I spent on pizza this quarter' or 'what are my top 3 items' is the question. Powered entirely by the local SQLite order history.
dominos-pp-cli analytics --period 90d --group-by item --agent
Cross-source insights
-
compare-prices — Same cart priced at every nearby store; rank by total including delivery fee.
Reach for this when latency-or-price tradeoffs across nearby stores matter (delivery fee + wait time can offset a cheaper menu).
dominos-pp-cli compare-prices --street "421 N 63rd St" --city "Seattle WA" --items S_PIZPH,S_LAVA --agent
-
stores wait — Pull CartEtaMinutes for every store in radius and rank by ETA — the unique GraphQL BFF op every other wrapper ignores.
Reach for this when busy-hour delivery decisions need accurate wait estimates rather than a phone call to the store.
dominos-pp-cli stores wait --street "421 N 63rd St" --city "Seattle WA" --agent
-
deals eligible — List which advertised deals actually apply to your current cart and explain why each non-matching one fails.
Reach for this when the user is hunting for a coupon and needs to understand the predicate gap, not just whether 'a deal' applies.
dominos-pp-cli deals eligible --agent
Agent-native plumbing
-
track — Stream Domino's tracker stages — placed → prep → bake → quality check → out → delivered — until the order arrives.
Reach for this when an agent or user wants to know precisely when a placed order changes stage without holding open a browser tab.
dominos-pp-cli track --phone 2065551234 --watch --interval 30s --agent
-
order-quick — Replay a template, validate, price, place (with --confirm), and tail the tracker — all in one command emitting a final JSON envelope.
Reach for this when an agent or automation wants to trigger an order and exit cleanly with structured {order_id, eta_min, total, tracker_phone} output.
dominos-pp-cli order-quick --template friday-night --confirm --eta-watch --json
Usage
Run dominos-pp-cli --help for the full command reference and flag list.
Commands
customer
Customer profile, order history, and loyalty (requires auth login)
dominos-pp-cli customer loyalty - Loyalty points balance, tier status, and pending points for the customer.
dominos-pp-cli customer orders - List the customer's recent orders. Returns full Order objects (Address, Products, Amounts, Coupons, Status, etc.) for analytics, reorder, and order-history workflows.
dominos-pp-cli customer cards - Return only saved-card count and availability; card details and payment references are always redacted.
checkout
Inspect checkout readiness without placing an order.
dominos-pp-cli checkout preview --last - Fetch, sanitize, validate, and price the latest account order; summarize saved-card count and store payment capabilities. This command cannot place an order.
graphql
GraphQL BFF operations (discovered via sniff)
dominos-pp-cli graphql categories - Get menu categories for a store
dominos-pp-cli graphql create_cart - Create a new shopping cart
dominos-pp-cli graphql customer - Get authenticated customer profile with saved addresses and preferences
dominos-pp-cli graphql deals_list - Get available deals and coupons for a store
dominos-pp-cli graphql get_cart - Get cart by ID with items and pricing
dominos-pp-cli graphql loyalty_deals - Get member-exclusive deals
dominos-pp-cli graphql loyalty_points - Get loyalty points balance and status
dominos-pp-cli graphql loyalty_rewards - Get available loyalty rewards by tier
dominos-pp-cli graphql products - Get products in a category with customization options
dominos-pp-cli graphql quick_add_product - Quick-add a product to cart by code
dominos-pp-cli graphql summary_charges - Get cart totals including tax and delivery fee
menu
Browse store menus and search for items
dominos-pp-cli menu get_menu - Get the full menu for a store with categories, products, variants, and toppings
orders
Create, validate, price, and place orders
dominos-pp-cli orders place - Place an order for delivery or carryout
dominos-pp-cli orders price - Get the price for an order including taxes and fees
dominos-pp-cli orders validate - Validate an order before placing it
stores
Find and get information about Domino's stores
dominos-pp-cli stores find - Find nearby Domino's stores by street and city
dominos-pp-cli stores get - Get detailed store information including hours, capabilities, and wait times
tracking
Track active orders
dominos-pp-cli tracking track - Track an order by phone number
Output Formats
# Human-readable table (default in terminal, JSON when piped)
dominos-pp-cli stores get mock-value
# JSON for scripting and agents
dominos-pp-cli stores get mock-value --json
# Filter to specific fields
dominos-pp-cli stores get mock-value --json --select id,name,status
# Dry run — show the request without sending
dominos-pp-cli stores get mock-value --dry-run
# Agent mode — JSON + compact + no prompts in one flag
dominos-pp-cli stores get mock-value --agent
Agent Usage
This CLI is designed for AI agent consumption:
- Non-interactive - never prompts, every input is a flag
- Pipeable -
--json output to stdout, errors to stderr
- Filterable -
--select id,name returns only fields you need
- Previewable -
--dry-run shows the request without sending
- Explicit retries - add
--idempotent to create retries when a no-op success is acceptable
- Confirmable -
--yes for explicit confirmation of destructive actions
- Piped input - write commands can accept structured input when their help lists
--stdin
- Agent-safe by default - no colors or formatting unless
--human-friendly is set
Exit codes: 0 success, 2 usage error, 3 not found, 4 auth error, 5 API error, 7 rate limited, 10 config error.
Health Check
dominos-pp-cli doctor
Verifies configuration, credentials, and connectivity to the API.
Configuration
Config file: ~/.config/dominos-pp-cli/config.toml
Environment variables:
| Name | Kind | Required | Description |
|---|
DOMINOS_USERNAME | auth_flow_input | No | Domino's account email or phone consumed by auth login to obtain a bearer token. Read-only commands work without. |
DOMINOS_PASSWORD | auth_flow_input | No | Set during initial auth setup. |
DOMINOS_TOKEN | harvested | No | Populated automatically by auth login. |
Troubleshooting
Authentication errors (exit code 4)
- Run
dominos-pp-cli doctor to check credentials
- Verify the environment variable is set:
echo $DOMINOS_USERNAME
Not found errors (exit code 3)
- Check the resource ID is correct
- Run the
list command to see available items
API-specific
- Store finder returns no results — Domino's geocoder is strict; pass street and city/state separately:
--street "350 5th Ave" --city "New York NY 10118".
- Authenticated commands return 401 — Bearer token expired or missing. Run
auth login again (token TTL is ~1 hour). Check with auth status.
- auth login times out without harvesting — Increase
--timeout (default 5m). Make sure you're actually completing sign-in in the spawned Chrome window.
- Track command shows order not found — Use the phone number tied to the order, not your account phone. The tracker is keyed on the order phone field.
- deals best/eligible returns no fulfilled coupons — Coupons typically need 2+ items, mix-and-match qualifying combinations. Add more cart items (
cart add <code>).
HTTP Transport
This CLI uses Chrome-compatible HTTP transport for browser-facing endpoints. It does not require a resident browser process for normal API calls.
Discovery Signals
This CLI was generated with browser-captured traffic analysis.
- Capture coverage: 0 API entries from 0 total network entries
- Reachability: browser_http (90% confidence)
- Auth signals: bearer_token
Sources & Inspiration
This CLI was built by studying these projects and resources:
Generated by CLI Printing Press