ProjectR Docs
Screen MapMobile app

Status matrices

Status, role and lifecycle tables for the mobile. Red cells are gaps.

Order status matrix

StatusLabel shownBadgeActionsLoyalty effectSource
PendingPendingAmber text; awaiting confirmationNone; not reorderableNone yet; outcome awaiting_paymentuse-convex-orders.ts:90
Processing (paid, authorized, partially paid)ProcessingBlue; We're preparing your itemsNonePaid awards stamps; authorized and partially paid never qualifywebhooks/shopify.ts:633,782
Shipped (fulfilled or partial, no receivedAt)ShippedBlue; Package is on its wayTracking card, Track parcel, Mark received; no reorderNoneuse-convex-orders.ts:83
Delivered (receivedAt set)DeliveredGreen; Order delivered, enjoy!Received pill, Rate & Review, Reorder, Buy againNone beyond original awarduse-convex-orders.ts:78
Delivered via unfulfilled + receivedAtDeliveredGreenAs Delivered; not reachable through the UINoneorderHistory/mutations.ts:114
Cancelled via restocked fulfillmentCancelledGrey; This order has been cancelledReorder, Buy againNo reversal from this combination aloneuse-convex-orders.ts:85
Cancelled via orders/cancelled webhookCancelledGrey; red pill replaces timelineReorder, Buy again, Cancelled chipReversed once; stampOutcome not cleared, row still says earnedwebhooks/shopify.ts:974-1099
VoidedVoidedGrey; red Voided pillReorder, Buy again (Cancelled chip)No reversal pathuse-convex-orders.ts:72
RefundedRefundedGrey; Your refund has been processedReorder, Buy again (Cancelled chip)None; stamps and vouchers stay; no refunds webhookwebhooks/shopify.ts:865-969
Partially refundedPartially RefundedGrey; normal 4-step timeline, only Placed filledReorder, Buy again, Cancelled chipNone; total updates but stamps unchangeduse-convex-orders.ts:74
Any other financial status (fallback)ProcessingBlueNoneNoneuse-convex-orders.ts:92
Cancelled or Refunded with tracking numberCancelled or RefundedGrey; red pillTracking card and Mark received still tappableNoneorder-detail.tsx:412,481

Stamp outcome matrix

stampOutcomeSet byRow textTrigger
awardedfinalizeOrderRewardsYou earned N stamp(s)At least one stamp row exists for the order
below_min_spendfinalizeOrderRewardsNo stamp. Subtotal was RMx under the stamp minimum.Every active campaign minimum is above subtotal
no_active_campaignfinalizeOrderRewardsNo stamp campaign was running for this order.Zero active campaigns
not_awardedfinalizeOrderRewardsThis order did not earn a stamp.Eligible but award refused (ended, already stamped)
no_app_userOrder insert, paid update, reprocessRow hiddenOrder not linked to an app account
awaiting_paymentOrder insert or dashboard link of unpaid orderYour stamp arrives once payment is confirmed.financialStatus is not paid
needs_reviewclaimRecentOrdersForUserOur team is checking this order's stamp.Shipping-phone-only match or newer manual award
undefinedPredates field; backfill not runRow hiddenLegacy order

Voucher status matrix

Backend statusShownTap / UseTrigger
active, not past expiryActive; n days left within 7, Expires todayCopy code, or copy and open ShopShake win, admin issue, restored after cancel
active but past expiresAtExpired (server rewrites on read)Voucher Unavailable warning toastTime passes before 30-minute expiry cron
expiredExpiredVoucher Unavailable warning toastExpiry cron
usedUsedVoucher Unavailable warning toastorders/create webhook discount codes
cancelledCancelledVoucher Unavailable warning toastShake voucher voided by order cancellation