Get Started

The Ultimate Guide to WooCommerce Order Status

Editorial Team
September 4, 2023
The Ultimate Guide to WooCommerce Order Status

WooCommerce order status provides crucial information about the progress of an order from the time it gets placed to when it’s delivered.

These order statuses are paramount in streamlining business operations, enhancing customer experience and monitoring revenue.

The default WooCommerce has multiple order statuses that help store owners organize their fulfillment process.

However, every business has its own way of handling their orders.

That’s why many companies look to extend WooCommerce’s default functionality to manage their order statuses as per their requirements.

In this post, we’ll look at the default WooCommerce order status and how the orders are processed.

Further, we’ll expand on managing the orders and creating custom order statuses in WooCommerce for efficiently carrying out business operations.

What is WooCommerce Order Status?

WooCommerce order status refers to distinct stages through which an order gets processed within WooCommerce.

It represents the current stage of an order that provides information about its processing and fulfillment status.

These statuses convey the progress of an order from the moment it gets placed to the time it gets delivered to the customer.

WooCommerce orders

The WooCommerce order statuses help both store owners and customers by:

  • Helping the staff to keep track of all orders in the fulfillment process
  • Keeping customers informed of the progress of their purchases

These statuses are quite crucial in managing orders, ensuring smooth business operations and enhancing customer satisfaction.

Understanding the Default WooCommerce Order Statuses

WooCommerce has the default order statuses in its order fulfillment process. Here is the complete WooCommerce order status list below:

  • Processing - The processing status is usually automatically assigned to an order once the payment is successfully made on the checkout page. All product orders require processing except the orders that are both virtual and downloadable.
  • Completed - The completed order status indicates that the order has been successfully processed, shipped and delivered to the customer.
  • On hold - The order status may be put on hold when there is a delay in processing your payment. In this case, you must confirm the payment to process your order successfully.
  • Cancelled - The WooCommerce order status changes to cancelled when the store owner or customer cancels the order. The order stock increases to its previous quantity and will not be fulfilled.
  • Failed - The order gets a failed status when there is an issue with the payment processing or if it fails for some reason. Please note that this status may not show immediately but instead show as ‘Pending’ until the confirmation.
  • Pending payment - This is the initial status when a customer places an order. This order status represents that the order is awaiting payment confirmation.
  • Refunded - The order status changes to refunded when a customer successfully processes and gets an order refunded.
  • Draft - The draft order gets created when shoppers start the checkout process in WooCommerce.

To clarify further, we’ll help you understand the order processing status for different products in a WooCommerce store.

How Does Order Status in WooCommerce Work?

The order status goes through different stages for different types of products to ensure its fulfillment.

Simply put, physical products are processed differently than digital products in an eCommerce store.

Let’s understand the WooCommerce order status for different products.

Physical (simple) products

Physical products go through the journey of order processing, shipping and delivery. Therefore, it takes some time to process the order and change the order status.

Initially, the order status changes to ‘Processing’ once the payment is successful. After the order gets delivered to the customer, the order status changes to ‘Completed’.

Virtual products

Virtual products are digital, non-tangible items such as memberships, services, warranties, subscriptions, etc.

These virtual items can be accessed with a username and password or a website URL hosted on a server.

Upon successful order placement, the order status goes to ‘Processing’.

Since the virtual products cannot be delivered to you, it continues to show the order status in processing.

However, you can use a plugin called Autocomplete WooCommerce Orders that allows you to complete the order status for virtual products.

We’ve discussed the autoprocessing of order status later in this post.

Both virtual and downloadable products

Virtual + downloadable products are digital products that can be downloaded, such as ebooks, music files, PDFs, etc. These can be downloaded straight to your device.

Once you’ve made the successful purchase, the order status instantly changes to ‘Completed’.

How to Add Custom Order Status in WooCommerce?

We already know a lot about the default order statuses in WooCommerce. These help track the progress of orders placed in your store.

However, the default options may not be suitable for everyone’s needs. What if you want your customers updated about their orders more granularly?

That’s where the ability to add WooCommerce custom order status comes in.

Adding custom order statuses in WooCommerce assists store owners in better managing their orders and providing personalized experiences to their customers.

With custom order status, store owners can create their own order statuses based on their specific needs.

You can add WooCommerce custom order status in two ways:

  • Adding a code snippet
  • Using a WordPress plugin

Let’s look at both of these processes.

Creating a custom WooCommerce order status by adding a code snippet

First, you must install a free WordPress plugin called WPCode Insert Headers and Footers + Custom Code Snippets.

Next, go to ‘Snippets’ and click the ‘Add New’ button.

Click on add new snippet to create a custom woocommerce order status

Add the following snippet code and select the option below to run it everywhere on the website.

Once done, hit ‘Update’ and activate the snippet.

Paste the code snippet and activate it to  run everywhere on the website.

Orders in WooCommerce have a special ‘post_status’ value attached to them on the wp_posts table in the database, like any other posts.

Therefore, we’ll use the register_post_status() inbuilt function to include our custom order status.

This is the code you need to copy and paste on the code snippet.

// Register new status
function register_order_shipped_order_status() {
register_post_status( 'wc-order-shipped', array(
'label' => 'Order Shipped',
'public' => true,
'show_in_admin_status_list' => true,
'show_in_admin_all_list' => true,
'exclude_from_search' => false,
'label_count' => _n_noop( 'Order Shipped (%s)', 'Order Shipped (%s)' )
) );
// Add custom status to order status list
function add_order_shipped_to_order_statuses( $order_statuses ) {
$new_order_statuses = array();
foreach ( $order_statuses as $key => $status ) {
$new_order_statuses[ $key ] = $status;
if ( 'wc-on-hold' === $key ) {
$new_order_statuses['wc-order-shipped'] = 'Order Shipped';
return $new_order_statuses;
add_action( 'init', 'register_order_shipped_order_status' );
add_filter( 'wc_order_statuses', 'add_order_shipped_to_order_statuses' );

Well done! This is how you can create a custom WooCommerce order status using a code snippet.

Creating a custom WooCommerce order status using a WordPress plugin

The easiest way to create a custom order status in WooCommerce is by installing a WordPress plugin like Custom Order Status Manager for WooCommerce.

This plugin lets you create, edit and remove custom order statuses to manage your WooCommerce orders better.

Make sure to install and activate this plugin on your WordPress dashboard.

Once done, go to WooCommerce ⇨ Order Status and click on ‘Add New’.

Once you have installed the custom order status manager for woocommerce plugin, go to WooCommerce - Order Statuses and click on add new

Fill in the details related to your new custom order status:

  • Order status name - Name of your custom WooCommerce order status
  • Slug - Type in a unique slug for your order status
  • Status icon - Add an icon of your custom order status
  • Status view - Choose whether the status name or status icon will be displayed on the WooCommerce orders page
  • Color - Set the color that gets applied to the text and icon of this order status
  • Text background color - Set the background color of the order status text
  • Paid status - Enable or disable whether the order on this status has been paid
  • Download access - Turn on this option to allow download access when orders are on this status
  • Add to actions on orders page - Turn on this option if you want to add this order status to the order actions
  • Add to bulk actions list - Enable or disable this option to add this order status to the bulk actions list
  • Edit mode - Turn on this option to allow editing the WooCommerce order data for this status
  • Email notification - Enable this option to get email notifications when the order status changes to this custom status
Enter the data related to the creation of custom woocommerce order status. Once done, hit publish

Once done, hit the ‘Publish’ button.

As you can see, the new custom order status has successfully been created in your WooCommerce store.

Here you can see your custom order status created in your WooCommerce store

From this dashboard, you can edit this custom status, view, edit the email template, or even delete your custom order status.

You can even take bulk actions if you have set up multiple order statuses.

This plugin perfectly handles and helps you efficiently manage all your custom WooCommerce order statuses.

How Payment Methods Impact WooCommerce Order Statuses?

WooCommerce uses different factors to determine the status of an order. The order status and handling of payment failure may not be as straightforward as expected.

Depending on whether or not the payment was successful, your payment methods also impact the order statuses.

Here are the order statuses for different payment methods used to make transactions in WooCommerce:

Credit cards / Debit cards / Paypal

Upon successful payment, the order status goes to ‘Processing’. The orders get automatically completed once the order is processed and fulfilled.

If the payment fails, the status goes to ‘Pending’ but ultimately changes to ‘Failed’ upon confirmation.

Check payments / Direct bank transfer / Cash on delivery

In the case of check payments, direct bank transfers and cash on deliveries, the order status will not auto-complete. But the stock of those products will reduce.

It is because the transactions are dependent on offline payment methods. Therefore, in such cases, product access doesn’t happen until the payment is successfully received.

Here, the order status remains on ‘Processing’. The store owner or admin has to verify and manually change the order status to ‘Completed’ or ‘Failed’ in case of successful or unsuccessful transactions.

How to Automatically Change Order Status in WooCommerce?

By default, WooCommerce automatically completes the paid orders for only virtual + downloadable products after a successful purchase.

However, for only virtual products, the order status goes to ‘Processing’, which shouldn’t be the case.

WooCommerce should also mark the order as ‘Completed’ for digital (virtual) products.

But you can alter this behavior in your store.

You can change the WooCommerce order status automatically (programmatically) to ensure it’s convenient for store owners and customers.


To automatically change WooCommerce order status, you must install a WordPress plugin called Autocomplete WooCommerce Orders by QuadLayers.

Once you have the plugin, you can set the autocomplete configurations from the WooCommerce settings.

To do that, go to WooCommerce ⇨ Settings ⇨ Autocomplete Orders tab.

Go to woocommerce settings - autocomplete orders section after installing the autocomplete woocommerce orders plugin

Click on the Mode options and select ‘Paid orders of virtual products only’.

You also get different options to configure from here that let you autocomplete your WooCommerce orders.

Choose the autocomplete orders mode to virtual orders and save it.

Once done, hit the ‘Save Changes’ button.

When a user successfully places a virtual order, the order status will automatically be moved to ‘Completed’.

Please note that you can configure autocomplete orders for all orders as well.


Now, if you try a test purchase of your virtual product in your store, go from the product page to checkout order page and test purchase it.

Test purchase a virtual product in your store - fill out the details in your checkout page

As you can see, we can see the thank you page here, signifying our purchase is complete.

Make the purchase and you'll be taken to the order confirmation page
🔔 Quick Note: We have changed the default WooCommerce checkout and thank you page to beautiful and elegant custom pages using the FunnelKit Funnel Builder

Now, if you go to WooCommerce orders, you’ll be able to see the order status - Completed.

That means this plugin works!

Alternatively, you can use other WordPress plugins as well. Here are some recommendations:

These WooCommerce order status manager plugins effectively let you streamline the order fulfillment process in your business.

In the next blogs, we'll be set up and send custom emails for different WooCommerce order statuses. So stay tuned for that!

Last Words About WooCommerce Order Status

We hope this post has provided a detailed understanding of WooCommerce order status, which will help you successfully manage your store.

By grasping the significance of each status, you can ensure a seamless experience for you and your customers.

You can even add custom order status in WooCommerce to help streamline the order management and fulfillment process per your business requirements.

Further, you can manage and automatically change the order status for different products using WordPress plugins.

This way, you can carry out your business operations and enhance customer satisfaction efficiently.

In the next blog post, we'll explore how you can custom emails for specific WooCommerce order statuses.

Author: Editorial Team
The Editorial Team at FunnelKit (formerly WooFunnels) is a passionate group of writers and copy editors. We create well-researched posts on topics such as WordPress automation, sales funnels, online course creation, and more. We aim to deliver content that is interesting and actionable.