Skip to content

How to Add a Shipped Step with a Custom Status

WooCommerce’s own statuses stop at Processing and Completed, which says nothing about the parcel leaving the warehouse. A custom status fills the gap, and the bar shows it like any other step.

Order Progress Bar shows the statuses WooCommerce knows. It does not create them. Add one with an order status plugin, or with a snippet. The demo registered Shipped with this one, placed after Processing:

add_action( 'init', function () {
register_post_status( 'wc-shipped', [
'label' => 'Shipped',
'public' => true,
'show_in_admin_status_list' => true,
'show_in_admin_all_list' => true,
'label_count' => _n_noop( 'Shipped (%s)', 'Shipped (%s)' ),
] );
} );
add_filter( 'wc_order_statuses', function ( $statuses ) {
$result = [];
foreach ( $statuses as $key => $label ) {
$result[ $key ] = $label;
if ( 'wc-processing' === $key ) {
$result['wc-shipped'] = 'Shipped';
}
}
return $result;
} );

Open Configuration → Status Flow. Shipped now appears under Add a step. Click it.

Shipped under Add a step

Step 3: Set its name, icon, message and days

Section titled “Step 3: Set its name, icon, message and days”

The row opens. A custom status starts with the Truck icon, 1 day and no message. The demo set:

  • Name: Shipped.
  • Icon: Truck.
  • Days to reach this step: 2.
  • Customer message: “Good news, {first_name}: your parcel is on its way.”

The Shipped step’s four fields

Drag Shipped by its handle so it sits between Processing and Completed. The last step must stay the end of the journey. Click Save Changes.

The saved flow: On hold, Processing, Shipped, Completed

Set an order’s status to Shipped and update it. The customer’s bar moves on, with the truck, the new message and the delivery estimate worked out again.

The bar on Shipped with Amara’s name in the message

WooCommerce sends no email for a custom status. Pick Shipped under Configuration → Emails → Send When Order Reaches, and the customer gets the Order update email. See How to Email Customers at a Custom Step.

  • Rename any step without touching the status. A step can read “Out for delivery” while the status stays Shipped.
  • The same steps work for In production, Ready for pickup or any other status your workflow has.