All 11 Shopify Fulfillment Event Statuses Explained (When to Use Each)

All 11 Shopify Fulfillment Event Statuses — and When to Use Each
When you add tracking to a Shopify order and fulfill it, Shopify sets the fulfillment status to "In Transit". For merchants using integrated carriers like UPS or FedEx, tracking updates eventually push the order forward — through Out for Delivery, and finally to Delivered — automatically.
For everyone else — local couriers, regional carriers, 3PLs, manual delivery operations — the order stays stuck in "In Transit" indefinitely.
Mark Shipping Status gives you the ability to move those orders forward to any of the 11 official Shopify FulfillmentEventStatus values. Here is what each one means, when to use it, and how they typically sequence in real-world logistics.
The Full Status Table
| Display Label | API Value | When it applies |
|---|---|---|
| Confirmed | CONFIRMED | Order is accepted and shipment is planned |
| Label Purchased | LABEL_PURCHASED | Shipping label has been bought |
| Label Printed | LABEL_PRINTED | Label has been printed and attached |
| Carrier Picked Up | CARRIER_PICKED_UP | Carrier has collected the package |
| In Transit | IN_TRANSIT | Package is moving through the carrier network |
| Out for Delivery | OUT_FOR_DELIVERY | Package is on the final delivery vehicle |
| Attempted Delivery | ATTEMPTED_DELIVERY | Delivery was tried but not completed |
| Ready for Pickup | READY_FOR_PICKUP | Package is available at a pickup point |
| Delayed | DELAYED | Delivery is taking longer than expected |
| Delivered | DELIVERED | Package reached the customer |
| Failure | FAILURE | Delivery failed permanently |
Status-by-Status Breakdown
Confirmed
The order is accepted and a shipment is being planned. Use this as the first event after fulfillment is created, before a label is generated. Useful for 3PLs and custom workflows that have a confirmation step distinct from label generation.
Label Purchased
A shipping label has been bought. Use this from carrier APIs that report label purchase as a distinct event from printing or handoff. Less common in manual workflows.
Label Printed
The physical label has been printed and is ready to attach. Some warehouses distinguish this step from label purchase, especially in high-volume pick-and-pack operations.
Carrier Picked Up
The carrier collected the package from your facility. This is the moment the shipment leaves your hands. Use it for any operation where carrier handoff is a discrete, recordable moment.
In Transit
The package is actively moving through the carrier network — scanned at a sorting facility, in a delivery truck, crossing regional checkpoints. This is the most common intermediate status.
Out for Delivery
The package is on a delivery vehicle heading to the customer today. This is a meaningful customer-facing signal: customers expect their package that day when they see this status.
Attempted Delivery
A delivery was tried but the customer was not available, the address was inaccessible, or there was no safe delivery location. Always pair this status with a note explaining the reason and the redelivery plan.
Ready for Pickup
The package has arrived at a pickup point (locker, post office, third-party pickup location) and is waiting for the customer to collect it. Use this for BOPIS, locker delivery, and click-and-collect workflows.
Delayed
Something has slowed the shipment — weather, carrier backlog, customs hold. Use this proactively. Customers who see Delayed before they ask "where is my order?" are less likely to contact support.
Delivered
The package reached the customer. This is the status that closes the fulfillment loop, triggers post-purchase automations (review requests, loyalty points), and marks the order as operationally complete.
Failure
The delivery failed permanently. Note: Shopify may display this as "Failed delivery" in the order timeline — the underlying API value is FAILURE. Always pair a Failure event with a note explaining what happened. See our guide on Failure vs Failed Delivery in Shopify.
Typical Sequencing Patterns
These are common (not required) progressions:
Standard carrier shipment: Confirmed → Label Purchased → Carrier Picked Up → In Transit → Out for Delivery → Delivered
Local delivery exception: Carrier Picked Up → In Transit → Out for Delivery → Attempted Delivery → Delivered (next day)
Delayed shipment: In Transit → Delayed → In Transit → Out for Delivery → Delivered
Click and collect / locker pickup: In Transit → Ready for Pickup → Delivered
Note: Shopify does not enforce any sequence rules. You can set any status at any point.
Common Mistakes
Only using Delivered: The most common issue. Teams skip all intermediate states and jump straight to Delivered. This misses the ops and CX value of accurate in-transit visibility.
Not using Attempted Delivery: When a delivery attempt fails, marking the order as still In Transit leaves customers without the context they need. Use Attempted Delivery and add a note.
Setting Failure without a note: Failure is the most consequential status. Without a note, your support and ops teams have no context for what happened or what to do next.
Ignoring Delayed: Delayed is one of the most proactive statuses available. Using it before a customer notices a delay significantly reduces WISMO ticket volume.
Ready to set any of these statuses from Shopify? See how Mark Shipping Status makes all 11 available for single orders and bulk updates.
For questions about specific statuses, visit the Mark Shipping Status FAQ.
Related Articles
Bulk Update Mixed Shipping Statuses in Shopify (Delivered + In Transit + Delayed)
Not all orders in a batch have the same status. Here is how to run bulk fulfillment updates with per-row status, date, and note control — and a QA checklist to run after.
How to Backdate Fulfillment Events in Shopify (Without Data Chaos)
When carrier confirmations arrive late or batch corrections are needed, backdating fulfillment events keeps your timeline accurate. Here is the safe way to do it.
Using Fulfillment Events to Trigger Better Shopify Automations
Fulfillment events are one of the most underused automation triggers in Shopify. Here is how to use status-specific events to build smarter, delay-aware, and exception-handling flows.