Screen MapMobile app
Status matrices
Status, role and lifecycle tables for the mobile. Red cells are gaps.
Order status matrix
| Status | Label shown | Badge | Actions | Loyalty effect | Source |
|---|---|---|---|---|---|
| Pending | Pending | Amber text; awaiting confirmation | None; not reorderable | None yet; outcome awaiting_payment | use-convex-orders.ts:90 |
| Processing (paid, authorized, partially paid) | Processing | Blue; We're preparing your items | None | Paid awards stamps; authorized and partially paid never qualify | webhooks/shopify.ts:633,782 |
| Shipped (fulfilled or partial, no receivedAt) | Shipped | Blue; Package is on its way | Tracking card, Track parcel, Mark received; no reorder | None | use-convex-orders.ts:83 |
| Delivered (receivedAt set) | Delivered | Green; Order delivered, enjoy! | Received pill, Rate & Review, Reorder, Buy again | None beyond original award | use-convex-orders.ts:78 |
| Delivered via unfulfilled + receivedAt | Delivered | Green | As Delivered; not reachable through the UI | None | orderHistory/mutations.ts:114 |
| Cancelled via restocked fulfillment | Cancelled | Grey; This order has been cancelled | Reorder, Buy again | No reversal from this combination alone | use-convex-orders.ts:85 |
| Cancelled via orders/cancelled webhook | Cancelled | Grey; red pill replaces timeline | Reorder, Buy again, Cancelled chip | Reversed once; stampOutcome not cleared, row still says earned | webhooks/shopify.ts:974-1099 |
| Voided | Voided | Grey; red Voided pill | Reorder, Buy again (Cancelled chip) | No reversal path | use-convex-orders.ts:72 |
| Refunded | Refunded | Grey; Your refund has been processed | Reorder, Buy again (Cancelled chip) | None; stamps and vouchers stay; no refunds webhook | webhooks/shopify.ts:865-969 |
| Partially refunded | Partially Refunded | Grey; normal 4-step timeline, only Placed filled | Reorder, Buy again, Cancelled chip | None; total updates but stamps unchanged | use-convex-orders.ts:74 |
| Any other financial status (fallback) | Processing | Blue | None | None | use-convex-orders.ts:92 |
| Cancelled or Refunded with tracking number | Cancelled or Refunded | Grey; red pill | Tracking card and Mark received still tappable | None | order-detail.tsx:412,481 |
Stamp outcome matrix
| stampOutcome | Set by | Row text | Trigger |
|---|---|---|---|
| awarded | finalizeOrderRewards | You earned N stamp(s) | At least one stamp row exists for the order |
| below_min_spend | finalizeOrderRewards | No stamp. Subtotal was RMx under the stamp minimum. | Every active campaign minimum is above subtotal |
| no_active_campaign | finalizeOrderRewards | No stamp campaign was running for this order. | Zero active campaigns |
| not_awarded | finalizeOrderRewards | This order did not earn a stamp. | Eligible but award refused (ended, already stamped) |
| no_app_user | Order insert, paid update, reprocess | Row hidden | Order not linked to an app account |
| awaiting_payment | Order insert or dashboard link of unpaid order | Your stamp arrives once payment is confirmed. | financialStatus is not paid |
| needs_review | claimRecentOrdersForUser | Our team is checking this order's stamp. | Shipping-phone-only match or newer manual award |
| undefined | Predates field; backfill not run | Row hidden | Legacy order |
Voucher status matrix
| Backend status | Shown | Tap / Use | Trigger |
|---|---|---|---|
| active, not past expiry | Active; n days left within 7, Expires today | Copy code, or copy and open Shop | Shake win, admin issue, restored after cancel |
| active but past expiresAt | Expired (server rewrites on read) | Voucher Unavailable warning toast | Time passes before 30-minute expiry cron |
| expired | Expired | Voucher Unavailable warning toast | Expiry cron |
| used | Used | Voucher Unavailable warning toast | orders/create webhook discount codes |
| cancelled | Cancelled | Voucher Unavailable warning toast | Shake voucher voided by order cancellation |