Confirmation page displays order number and next steps
Why it matters
A confirmation page that shows only "Thank you!" with no order number leaves the customer with no reference to use for support, returns, or tracking. ISO 25010:2011 functional correctness requires the system to confirm what actually happened: without a real order ID rendered from database data, the customer cannot verify the transaction completed, cannot initiate a return, and cannot contact support with a reference. CWE-20 applies when a hardcoded placeholder like Order #12345 appears instead of the actual order ID — the system is presenting false information as confirmation. Post-purchase anxiety that goes unresolved by a clear confirmation page directly increases support ticket volume.
Severity rationale
High because customers who cannot reference an order ID after payment cannot self-serve returns or tracking, driving support load and undermining purchase confidence.
Remediation
Build the confirmation page at src/app/checkout/confirmation/page.tsx to render the order ID from the database and list at least one next step. Fetch the order server-side using the session or order token:
// src/app/checkout/confirmation/page.tsx
export default async function ConfirmationPage({ searchParams }: { searchParams: { orderId: string } }) {
const order = await db.order.findUnique({ where: { id: searchParams.orderId } })
if (!order) notFound()
return (
<main>
<h1>Order Confirmed</h1>
<p>Order <strong>#{order.id}</strong> placed on {order.createdAt.toLocaleDateString()}</p>
<p>Confirmation email sent to {order.email}</p>
<a href={`/orders/${order.id}/tracking`}>Track your order</a>
</main>
)
}
Never hardcode an order number. If the order ID is unavailable, surface an error rather than a false confirmation.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Cart & Checkout UX Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- cwe · CWE-20 — Improper Input Validation
- iso-25010:2011 · functional-suitability.functional-correctness — Functional Suitability — Functional Correctness
Taxons
History
- 2026-04-18·v1.0.0·Initial import from ecommerce-cart-ux·automated