figma guide

Designing order confirmation and thank you page UI in Figma: receipts, next steps, and handoff

Design order confirmation pages, thank-you receipts, email capture, tracking CTAs, and post-purchase upsells in Figma with component variants and Dev Mode specs for ecommerce teams.

Published
Updated
Jun 30, 2026
Read time
6 min
Level
Beginner

Quick answer

The order confirmation page is the last checkout screen: order number, summary, delivery estimate, and one primary next action—not a marketing landing page. Show success headline, order ID, email receipt note, line items, totals, and shipping address in a scannable receipt layout. Add track order, create account (guest checkout), and optional continue shopping as secondary actions. Post-purchase upsells belong below the receipt, never above the confirmation message. Reuse checkout summary and payment method rows for line-item consistency. Start from the Figma guides hub and templates pillar.


Who this is for

  • Product designers finishing the checkout funnel after cart, payment, and BNPL redirects.
  • Design system teams aligning confirmation, email receipt, and account order-detail views.
  • Engineers wiring order IDs, webhooks, analytics purchase events, and guest-to-account flows.

Confirmation page vs email receipt

SurfaceUser contextMust include
Thank-you pageJust completed paymentOrder number, success state, next steps
Email receiptAsync referenceSame totals; print-friendly
Account order detailReturn visitFull timeline + actions

Verdict: design the thank-you page first, then derive the email and account views from the same OrderReceipt component set—do not fork totals typography.


Page layout zones

ZonePriorityContent
Hero confirmation1Checkmark, “Thank you, [Name]”, order #
Receipt summary2Items, qty, price, tax, shipping, total
Fulfillment block3Address, method, estimated delivery
Payment line4Card last4, PayPal, or BNPL provider
Primary CTA row5Track order OR create account
Secondary zone6Continue shopping, help link
Upsell rail7Optional recommendations below fold
OrderConfirmationPage
├── Variant: checkoutType=guest | loggedIn
├── Variant: paymentType=card | wallet | bnpl
├── Property: orderNumber=ORD-12345
└── Layers:
    ├── ConfirmationHero
    ├── OrderReceipt
    ├── FulfillmentBlock
    ├── PaymentSummaryLine
    ├── ActionRow
    ├── HelpFooter
    └── PostPurchaseUpsell (optional)

Mobile: single column; keep order number copyable (mono font, tap-to-copy affordance in spec).


ConfirmationHero anatomy

ElementSpecNotes
Status iconSuccess checkmark or animated confirmAvoid confetti that blocks content
Headline”Order confirmed”Not “Payment successful” unless B2B
Subline”We’ve sent a receipt to email@example.comDynamic email
Order numberORD-12345 prominentLink to order history when logged in
TimestampOrder placed date/timeTimezone token for localization
ConfirmationHero
├── Variant: density=compact | standard
├── Property: customerName=Alex
├── Property: orderNumber=ORD-12345
└── Layers:
    ├── StatusIcon
    ├── Headline
    ├── EmailSubline
    ├── OrderNumberBlock
    └── Timestamp

For pending payment (bank transfer,某些 BNPL): swap icon and copy to “Order received—complete payment” with a primary pay-now CTA—do not show false success.


OrderReceipt block

Reuse structure from checkout order summary:

Row typeSpec
Line itemThumbnail 48px, title, variant, qty × unit price
SubtotalRight-aligned tabular nums
DiscountsCoupon lines in success color
ShippingMethod name + cost or “Free”
TaxJurisdiction label if required
TotalBold, largest number on page
BNPL footnote”4 payments of $X managed by Klarna”
OrderReceipt
├── Variant: itemDensity=standard | compact
└── Layers:
    ├── LineItemRow (repeat)
    ├── SubtotalRow
    ├── DiscountRow (optional)
    ├── ShippingRow
    ├── TaxRow
    ├── TotalRow
    └── BNPLFootnote (optional)

Link each line item to PDP only when the SKU is still active—annotate 404 fallback in Dev Mode.


FulfillmentBlock

FieldGuestLogged in
Ship toFull addressSame + edit in account
MethodStandard / Express
ETA”Arrives Jun 5–8”Link to tracking
PickupStore name + hoursIf BOPIS

Include digital goods branch: “Download link sent to email” instead of shipping block.


ActionRow patterns

User statePrimary CTASecondary
GuestCreate account (save order)Track order via email link
Logged inTrack orderContinue shopping
Subscription orderManage subscriptionView order details
Gift orderSend gift message previewTrack shipment

Use button hierarchy from checkout—one primary only.


Post-purchase upsell (optional)

PatternPlacementRisk
Product carouselBelow receiptFeels spammy if above confirmation
Single add-on”Complete the look” one SKULower noise
Survey NPSModal after 3s delayTest carefully
Referral inviteFooter cardGood for DTC

Reuse recommendations components but never block receipt visibility. Analytics: fire purchase before upsell_impression.


Guest account creation

StepUI
Prompt card”Save order history—create a password”
EmailPre-filled, read-only
PasswordWith strength hint
Skip link”Continue without account”
SuccessMerge into account order list

Pair with forms error states; do not force account creation.


Handoff checklist

ItemDev Mode annotation
Order ID formatPrefix, length, charset
Purchase analyticspurchase event payload once per order
Email triggerTemplate ID + dynamic fields
BNPL redirect returnSuccess vs pending states
Copy order numberClipboard API + toast
Deep link track/orders/{id} auth rules
Print stylesheetHide nav, show receipt only
LocalizationCurrency, date, address order
AccessibilitySuccess announced to screen readers

Use Dev Mode checklist and progress steppers if confirmation is step 4 of checkout.


Common mistakes

MistakeWhy it hurtsFix
Marketing hero above order #User cannot find receiptConfirmation first
Different totals vs emailTrust lossSingle source component
No guest track pathSupport ticketsEmail link + lookup form
Upsell modal on loadBlocks success momentBelow fold only
Missing BNPL pending stateFalse confirmationBranch on payment status
Order # not copyableFriction for supportMono + copy button
Reload creates duplicate anxietyUser thinks double charge”Already processed” state
Broken back button to paymentDouble submit riskReplace history entry

  1. Finalize checkout summary components—extend for read-only receipt mode.
  2. Build ConfirmationHero and OrderReceipt with guest and logged-in variants.
  3. Add FulfillmentBlock and PaymentSummaryLine including BNPL and pickup branches.
  4. Design ActionRow with track, account create, and continue shopping.
  5. Optional: PostPurchaseUpsell rail using recommendation cards.
  6. Document analytics, email fields, and pending-payment states in Dev Mode.

FAQ

Show full cart edit on confirmation?

No—read-only receipt. Link to support for changes before ship.

Include loyalty points earned?

Yes, one line under total—“You earned 120 points” with program link.

Multiple shipments?

Use shipment groups inside receipt—each with its own ETA and track link.

Failed payment redirect back?

Design “Payment failed—try again” with cart preserved, not empty confirmation.

Optional Print receipt secondary—hide upsells in print spec.


Next steps

Share on X

§ Keep reading

Related guides.