Shipped status includes or links to tracking information
Why it matters
Marking an order 'shipped' with no tracking information means the customer cannot follow their package, support staff cannot look up the shipment when a delivery dispute arises, and the shipment email (if it exists) contains nothing actionable. A 'your order has shipped' notification with no tracking number is effectively a lie by omission — it closes the customer's window of action while giving them nothing to work with. This gap also cascades into the OWASP A01 risk surface if the tracking update endpoint accepts shipping confirmation without validating that the actor has captured required fulfillment data.
Severity rationale
High because an order marked shipped without tracking data leaves customers unable to monitor delivery and support staff unable to investigate loss or delay claims.
Remediation
Add trackingNumber, trackingCarrier, and shippedAt fields to the order schema in prisma/schema.prisma, then require them in lib/orders/shipping.ts when marking an order shipped.
// lib/orders/shipping.ts
export async function markOrderShipped(
orderId: string,
trackingNumber: string,
carrier: string,
actorId: string
) {
if (!trackingNumber) throw new Error('Tracking number required to mark order shipped')
await transitionOrder(orderId, 'shipped', actorId)
await db.orders.update({
where: { id: orderId },
data: { trackingNumber, trackingCarrier: carrier, shippedAt: new Date() },
})
}
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 Order Management Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- iso-25010:2011 · functional-correctness — Functional Correctness
Taxons
History
- 2026-04-18·v1.0.0·Initial import from ecommerce-order-management·automated