ProjectR Docs
Screen MapDashboard

Orders & checkout sessions

Dashboard: every screen, state and flow in Orders & checkout sessions.

6 screens and overlays, 33 states, 1 flows. Frames show a real screenshot where one was captured and a wireframe card where the state needs data or conditions a device run cannot produce.

Flows

Orders review

Step 1
Order Monitoring (Web)
Order table with funnel cards and filters
View Details
Step 2
Order detail, Linked customer (Web)
Order detail with items, customer and totals
Update status
Step 3
Update order status? (Web)
Confirm dialog for a status change
Confirm
Step 4
Wireframe

Update order status?

Success

Status updated

Toast: Order status updated

Needs data: Needs specific backend rows, a role, or a submitted write on a disposable record

Toast: status updated
Reprocess stamps
Step 5
Reprocess stamps for this order? (Web)
Confirm reprocess of stamps for this order
Confirm
Step 6
Wireframe

Reprocess stamps for this order?

Success

Stamps reprocessed

Toast with server message or Stamps reprocessed

Needs data: Needs specific backend rows, a role, or a submitted write on a disposable record

Toast: stamps reprocessed

Branches and edge cases

Errorfrom step 1
Wireframe

Order detail

Gate

Dashboard role sees not found

Query returns null for non-admin, so no AccessDenied, list then denies

Needs data: Needs specific backend rows, a role, or a submitted write on a disposable record

Order not found or dashboard role
Edgefrom step 1
Order detail, Unlinked order (Web)
Unlinked customer
Edgefrom step 1
Export dialog (Web)
Export
Edgefrom step 1
Checkout sessions (Web)
View all sessions
Gatefrom step 1
Wireframe

Force expire this checkout session?

Edge

Destructive confirm

Session key will be ended for the customer

Needs data: Needs specific backend rows, a role, or a submitted write on a disposable record

Force expire a session
Successfrom step 1
Wireframe

Checkout sessions

Success

Session expired

Toast after force expire

Needs data: Needs specific backend rows, a role, or a submitted write on a disposable record

Session expired
Errorfrom step 1
Wireframe

Checkout sessions

Error

Expire failed

Toast: Failed to expire session

Not reachable on a device: Needs a server error, crash, race or code change

Expire fails
Errorfrom step 4
Wireframe

Update order status?

Error

Update failed

Toast: Failed to update order status

Not reachable on a device: Needs a server error, crash, race or code change

Status update fails
Errorfrom step 6
Wireframe

Reprocess stamps for this order?

Error

Reprocess failed

Toast: Could not reprocess stamps

Not reachable on a device: Needs a server error, crash, race or code change

Reprocess fails
Flow diagram

Screens and states

Order Monitoring

Order Monitoring (Web)
Screendashboard/orders

Order Monitoring

Monitor Shopify orders and loyalty pipeline processing.

src/app/dashboard/orders/page.tsx

Entry

  • Sidebar Orders
  • Back to orders from sessions
  • Stamp and voucher rows
  • Audit log order links

Exits

  • View all sessions → /dashboard/orders/checkout-sessions
  • View Details → /dashboard/orders/id
  • View in Shopify → new tab
  • Export → ExportDialog
  • Load more orders

States · 8

Loading
Page loading · loading.tsx, table and chart skeletonssrc/app/dashboard/orders/page.tsx:39
Empty
No orders found · Also when filters match nothingsrc/features/orders/components/order-table.tsx:59
Edge
Funnel cards · Checkout funnel cards only when checkoutCounts existssrc/app/dashboard/orders/page.tsx:205
Edge
Load more window · Steps of 100, list holds about 500 rowssrc/app/dashboard/orders/page.tsx:475
Edge
Search capped · Note: search may not list every matching ordersrc/app/dashboard/orders/page.tsx:489
Edge
Unlinked customer · Customer cell shows Unlinked for empty or anonymous usersrc/features/orders/components/order-columns.tsx:181
Error
Processing error in row · Failed order shows errorMessage in row popoversrc/features/orders/components/order-columns.tsx:101
Gate
Admin required · AccessDenied: You need permission to view orderssrc/app/dashboard/orders/page.tsx:182

Order detail

Order detail (Web)
Screendashboard/orders/[id]

Order detail

Full order record with loyalty join, status editor and reprocess.

src/app/dashboard/orders/[id]/page.tsx

Entry

  • Orders row View Details
  • User detail stamp and voucher rows
  • Audit log order links

Exits

  • Back → /dashboard/orders
  • View in Shopify → new tab
  • Reprocess stamps → confirm
  • Update status → confirm

States · 9

Loading
Skeleton · Skeleton inside ProtectedRoutesrc/app/dashboard/orders/[id]/page.tsx:102
Error
Order not found · Toast and redirect to list; render returns nullsrc/app/dashboard/orders/[id]/page.tsx:75
Gate
Dashboard role sees not found · Query returns null for non-admin, so no AccessDenied, list then deniespackages/backend/convex/orderHistory/queries.ts:543
Edge
Unlinked order · Text only; no UI to link (mutation has no caller)packages/backend/convex/orderHistory/mutations.ts:400
Edge
Linked customer · Avatar, name (fallback Linked customer), email, phonesrc/app/dashboard/orders/[id]/page.tsx:227
Empty
No items · Items (n) list empty textsrc/app/dashboard/orders/[id]/page.tsx:271
Error
Processing error card · Red card with message and metadata JSONsrc/app/dashboard/orders/[id]/page.tsx:524
Edge
Stamp outcome block · Badge, campaign id, shake reward and voucher codesrc/app/dashboard/orders/[id]/page.tsx:337
Edge
HMAC verified, tracking · Verified badge and tracking number shown when presentsrc/app/dashboard/orders/[id]/page.tsx:424

Captured states

Order detail, Unlinked order (Web)
Unlinked order
Order detail, Linked customer (Web)
Linked customer

Reprocess stamps for this order?

Reprocess stamps for this order? (Web)
DialogReprocessStampsDialog

Reprocess stamps for this order?

Re-run stamp rewards for one order.

src/app/dashboard/orders/[id]/page.tsx:512

Entry

  • Reprocess stamps button (AdminOnly)

Exits

  • Confirm → reprocess
  • Cancel

States · 3

Success
Stamps reprocessed · Toast with server message or Stamps reprocessedsrc/app/dashboard/orders/[id]/page.tsx:93
Error
Reprocess failed · Toast: Could not reprocess stampssrc/app/dashboard/orders/[id]/page.tsx:95
Gate
Admin only · Disabled with tooltip: requires admin rolesrc/app/dashboard/orders/[id]/page.tsx:344

Update order status?

Update order status? (Web)
DialogUpdateOrderStatusDialog

Update order status?

Change financial and fulfillment status of the local record.

src/features/orders/components/order-status-editor.tsx

Entry

  • Update status button after selecting values

Exits

  • Confirm → update status
  • Cancel

States · 4

Edge
Local record only · Copy says Shopify is not changed and action is audit-loggedsrc/features/orders/components/order-status-editor.tsx
Edge
Button disabled until dirty · Update status needs a changed valuesrc/features/orders/components/order-status-editor.tsx
Success
Status updated · Toast: Order status updatedpackages/backend/convex/orderHistory/mutations.ts:329
Error
Update failed · Toast: Failed to update order statuspackages/backend/convex/orderHistory/mutations.ts:329

Checkout sessions

Checkout sessions (Web)
Screendashboard/orders/checkout-sessions

Checkout sessions

Every prepared checkout, with force expiry.

src/app/dashboard/orders/checkout-sessions/page.tsx

Entry

  • Orders View all sessions

Exits

  • Back to orders → /dashboard/orders
  • Export → ExportDialog
  • Force expire → confirm
  • Load more

States · 8

Loading
Loading sessions · Loading row in tablesrc/app/dashboard/orders/checkout-sessions/page.tsx:238
Empty
No checkout sessions found · Empty rowsrc/app/dashboard/orders/checkout-sessions/page.tsx:247
Edge
Pagination cap · 25 per load, hard cap 500 with narrow-the-range notesrc/app/dashboard/orders/checkout-sessions/page.tsx:96
Edge
Failure reason · Reason shown under status when presentsrc/app/dashboard/orders/checkout-sessions/page.tsx:276
Edge
Force expire only on active · Shown for prepared, presented, client_completedsrc/app/dashboard/orders/checkout-sessions/page.tsx:60
Success
Session expired · Toast after force expiresrc/app/dashboard/orders/checkout-sessions/page.tsx:140
Error
Expire failed · Toast: Failed to expire sessionsrc/app/dashboard/orders/checkout-sessions/page.tsx:150
Gate
Admin required · AccessDenied: You need permission to view checkout sessionssrc/app/dashboard/orders/checkout-sessions/page.tsx:156

Force expire this checkout session?

Wireframe

Force expire this checkout session?

Needs data: Needs an active checkout session

DialogForceExpireDialog

Force expire this checkout session?

End a session for the customer.

src/app/dashboard/orders/checkout-sessions/page.tsx:318

Entry

  • Row Force expire

Exits

  • Confirm → force expire
  • Cancel

States · 1

Edge
Destructive confirm · Session key will be ended for the customerpackages/backend/convex/checkoutSessions/mutations.ts:342

On this page