How To Change Order Status In Woocommerce Programmatically

Having the ability to alter order status in WooCommerce through programming can be beneficial for automating tasks and modifying the order fulfillment process. This article will walk you through the process of changing order status in WooCommerce using code, while also providing some personal tips.

Understanding the Order Status in WooCommerce

Before we dive into the code, let’s first understand the order status in WooCommerce. In WooCommerce, an order can have various statuses such as “pending”, “processing”, “completed”, “on-hold”, and more. Each status represents a different stage in the order fulfillment process.

In some cases, you may need to programmatically change the order status based on certain conditions or triggers. This could be useful when integrating with external systems, automating post-purchase actions, or implementing custom workflows.

Accessing the Order Object

In order to change the order status programmatically, we need to access the order object. In WooCommerce, the order object can be obtained using the order ID. We can use the following code snippet to get the order object:

$order = wc_get_order( $order_id );

Once we have the order object, we can modify its properties, including the order status.

Changing the Order Status

Now that we have the order object, let’s programmatically change its status. To change the order status, we can use the following code:

$order->update_status( $new_status );

Replace “$new_status” with the desired order status you want to set for the order. This could be any valid order status such as “completed”, “processing”, or custom status you’ve defined.

It’s important to note that changing the order status programmatically will trigger any related actions or hooks associated with the specific status change. This can include sending order confirmation emails, updating stock quantities, or performing other automated actions.

Putting It All Together

Let’s put everything we’ve learned into a practical example. Suppose we want to change the order status to “completed” when a specific condition is met. Here’s how we can achieve that:

$order = wc_get_order( $order_id );

if ( $condition ) {
$order->update_status( 'completed' );
// Additional actions or custom logic

In this example, we first obtain the order object using the order ID. Then, we check if a specific condition is met. If the condition is true, we change the order status to “completed”. You can add any additional actions or custom logic after updating the status.


Changing order status in WooCommerce programmatically can be a powerful tool for automating processes and customizing your order fulfillment workflow. By accessing the order object and using the update_status() method, you can easily modify the order status to fit your specific requirements.

Remember to handle order status changes with caution, as they can trigger other automated actions and affect the overall order processing. Test your code thoroughly before implementing it in a production environment.

With this knowledge, you’re ready to dive into WooCommerce’s order management system and start programmatically changing order statuses to streamline your e-commerce operations.