figma guide

Designing order history and order tracking UI in Figma: status, timeline, and handoff

Design order history lists, detail pages, shipment timelines, and reorder flows in Figma with status badges, tracking links, and Dev Mode specs for post-purchase UX.

Published
Updated
Jun 19, 2026
Read time
7 min
Level
Beginner

Quick answer

Order history UI is an account list of past orders—each row shows order ID, date, status badge, item preview, and total—drilling into an order detail page with line items (reuse cart LineItem), shipping address, payment summary, and a shipment timeline (ordered → shipped → out for delivery → delivered). Build OrderRow, OrderStatusBadge, and TrackingTimeline as components; model partial shipments, cancellations, and returns as first-class states. Pair with checkout confirmation, progress steppers, and tables. Start from the Figma guides hub.


Who this is for

  • Product designers shipping post-purchase account areas for DTC, marketplace, and subscription brands.
  • Design system teams standardizing order states across web, email, and mobile app shells.
  • Engineers implementing status webhooks, carrier tracking deep links, reorder APIs, and return flows.

Order account surfaces

SurfaceGoalKey components
Order history listScan past purchasesOrderRow, filters
Order detailFull receipt + actionsOrderDetail, read-only LineItem
Tracking viewShipment progressTrackingTimeline, carrier link
Confirmation (post-checkout)Immediate receiptConfirmationCard — same data model
Email receiptAsync confirmationStatic mock aligned to detail page

Verdict: design confirmation and order detail from one OrderSummary component set—confirmation is “detail without account chrome,” not a separate visual language.


OrderRow anatomy

PartPurposeSpec tip
Order IDReference#10482 monospace optional
Date placedContextRelative on mobile (“Jun 12”)
Status badgeCurrent stateOrderStatusBadge
Item preview1–3 thumbnails + “+2”Reuse product thumbs from cart
TotalOrder totalPrice display md
Primary actionContextualTrack / Reorder / View details
OrderRow
├── Variant: density=compact | comfortable
├── Property: status (enum)
├── Property: itemCount (number)
└── Layers:
    ├── MetaRow (ID + date + badge)
    ├── ItemPreviewStrip
    ├── TotalColumn
    └── ActionButton

List layout: table on desktop; stacked cards on mobile with chevron affordance for drill-down.


Order status system

StatusBadge color tokenUser-facing copyActions shown
ProcessingneutralProcessingCancel (if allowed)
ConfirmedinfoConfirmed
ShippedinfoShippedTrack package
Out for deliveryinfoOut for deliveryTrack
DeliveredsuccessDeliveredReorder, Return
CancelledneutralCancelledReorder
ReturnedwarningReturned
Partially shippedwarningPartially shippedView details

Use semantic color tokens—never hard-code green/red hex per row. Document enum in Dev Mode so backend status maps 1:1 to badge + copy.


Order detail page zones

ZoneContentComponent
HeaderOrder ID, date, status, actionsOrderDetailHeader
TimelineShipment progressTrackingTimeline
Line itemsRead-only productsLineItem variant mode=readonly
ShippingAddress, methodAddressBlock
PaymentLast4, method iconPaymentSummary
TotalsSubtotal, ship, tax, totalOrderSummary from checkout
HelpContact support, FAQ linkInline links
OrderDetailPage
├── Breadcrumb: Account > Orders > #10482
├── OrderDetailHeader
├── TrackingTimeline (if physical)
├── LineItemsSection
├── TwoColumn: Shipping | Payment
├── OrderSummary
└── HelpFooter

Link breadcrumb to account navigation patterns if orders live under a tabbed account shell.


TrackingTimeline component

StepIconCopyOptional detail
Order placedCheckJun 10, 2:14 PM
ProcessingCheckJun 10, 4:00 PMWarehouse name
ShippedCheckJun 11, 9:22 AMCarrier + tracking #
Out for deliveryCurrentJun 12, 7:00 AMMap pin (link out)
DeliveredPendingEstimated Jun 12Signature note
TrackingTimeline
├── Variant: orientation=vertical | horizontal
├── Property: currentStep (number)
├── Property: steps (number)
└── Layers:
    ├── StepRow × n (icon + label + timestamp)
    └── CarrierLink (external)

Horizontal timeline suits desktop hero; vertical stack for mobile. Reuse patterns from progress steppers but read-only—no clickable future steps unless carrier API supports reroute.

Carrier tracking: primary button “Track on UPS” opens external URL; secondary “Copy tracking number” with toast confirmation.


Partial shipments and split orders

Marketplaces often ship items separately—design explicitly:

PatternUINotes
Split shipmentGroup line items under Shipment 1 / 2Each group has own timeline
Backordered itemRow badge “Ships later”Separate ETA line
Digital + physicalTabs or sectionsDownload link on digital rows

Do not show a single “Delivered” badge on the order row when only one of three shipments arrived—use Partially delivered or show worst-case status with detail on drill-down.


Reorder, cancel, and return actions

ActionPlacementStates
Reorder allDetail headerdefault, loading, partial OOS modal
Reorder itemPer line (optional)Disabled if discontinued
Cancel orderHeader when processingModal confirm
Start returnPost-deliveryLinks to return wizard (separate flow)
Download invoiceSecondaryPDF icon

Reorder flow: success → navigate to cart with items added; partial OOS → modal listing unavailable SKUs with option to add available items only.


Filters and search on order history

ControlOptions
Date rangeLast 30 days, 6 months, custom
StatusAll, In progress, Delivered, Cancelled
SearchOrder ID, product name

Use search UI patterns compact variant in toolbar. Empty results state: “No orders match” + clear filters.

Pagination for accounts with long histories—default 10 orders per page.


Subscription and repeat orders

If the store sells subscriptions, extend the row model:

FieldSubscription orderOne-time order
StatusActive / Paused / Next ship dateStandard shipment enum
ActionsManage subscriptionReorder
Badge”Subscription” chip

Keep one OrderRow with type=standard | subscription property rather than forked components.


Responsive behavior

BreakpointListDetail timeline
MobileCard stack; swipe optionalVertical steps
TabletTwo-column meta + previewVertical
DesktopFull tableHorizontal above line items

Sticky Track package CTA on mobile when status is in-transit—mirror PDP sticky buy box pattern with safe-area padding from mobile frames.


Handoff checklist

ItemDev Mode annotation
Status enum → badge mappingTable in spec page
Tracking URL template{carrier}/{trackingId}
Partial shipment rulesWhich status surfaces on list row
Reorder APIFull vs line-level
Cancel windowTime limit copy
Invoice PDFEndpoint + filename
Email parityField list must match detail page
Analyticsview_order, track_shipment, reorder

Use Dev Mode checklist and link to checkout handoff for shared OrderSummary props.


Common mistakes

MistakeWhy it hurtsFix
List row shows “Delivered” too earlyTrust lossAggregate status rules documented
No partial shipment UISupport overloadShipment groups + per-group timeline
Tracking number not copyableMobile UX frictionCopy button + toast
Reorder ignores variant OOSCart errorsOOS modal before add
Different totals on email vs accountFinance disputesSingle source field list
Timeline without timestamps”Where is my order?” ticketsAlways show date/time per step

  1. Extract read-only LineItem from checkout/cart components.
  2. Define status enum → badge + copy table with design tokens.
  3. Build OrderRow and list page with filters and pagination.
  4. Compose order detail with timeline, items, shipping, payment, totals.
  5. Align confirmation page to detail—remove account chrome only.
  6. Add split-shipment and subscription variants if in scope.
  7. Prototype list → detail → track external link flow.
  8. Spec email receipt frame using same components for parity.

FAQ

Show all items or collapse on the list row?

Show up to 3 thumbnails + “+N” overflow—full line list only on detail. Keeps scan speed on mobile.

Guest order lookup without account?

Design Track order page: order ID + email → detail view (read-only). Same OrderDetail component without reorder until sign-in.

Real-time map in Figma?

Use static map placeholder + note “Live map from carrier SDK.” Link out to carrier for MVP.

Returns in scope?

Add Start return CTA on delivered orders; return wizard is a separate post-checkout flow—link placeholder section in Dev Mode if not designed yet.


Next steps

Share on X

§ Keep reading

Related guides.