WooCommerce Profit Reports
Like You've Never Seen Before

Mark Orders As Complete As Soon As They're Submitted In WooCommerce

If you are selling software or other downloadable / virtual products, there’s not really any need to have the order “processing”.

As soon as the customer checks out, the product is usually delivered.

Therefore, it makes sense for us to just automatically mark it as complete.

The below snippet will show you exactly how to do this.

Copy and paste the following code into your functions.php file.

 *	@author 	Christopher Davies, WP Davies
 *	@link 		https://wpdavies.dev/
 *	@link 		https://wpdavies.dev/automatically-complete-virtual-orders-woocommerce/
 *	@snippet 	Automatically complete orders in WooCommerce
add_action('woocommerce_thankyou', 'wpd_autocomplete_virtual_orders', 10, 1 );
function wpd_autocomplete_virtual_orders( $order_id ) {

    if( ! $order_id ) return;

    // Get order
    $order = wc_get_order( $order_id );

    // get order items = each product in the order
    $items = $order->get_items();

    // Set variable
    $only_virtual = true;

    foreach ( $items as $item ) {
        // Get product id
        $product = wc_get_product( $item['product_id'] );

        // Is virtual
        $is_virtual = $product->is_virtual();

        // Is_downloadable
        $is_downloadable = $product->is_downloadable();

        if ( ! $is_virtual && ! $is_downloadable  ) {

            $only_virtual = false;



    // true
    if ( $only_virtual ) {

        $order->update_status( 'completed' );


Automatically Complete WooCommerce Orders

That’s basically it, the critical thing is toward the end of the snippet where it says $order->update_status( ‘completed’ );

This is the section which actually performs the action, everything before it is basically looping through the order to check that all the products are downloadable or virtual.

You can modify this to set the status to whatever you want, you can find a list of the standard WooCommerce statuses here.

And That's How We AutoComplete WooCommerce Orders

Happy WooCommercing friends!

If you have any questions or it’s not working for you feel free to leave a comment below and I will be able to assist you.

Thanks, Chris!

Related Post

Notify of
Newest Most Voted
Inline Feedbacks
View all comments
27 days ago

This doesn’t seem to be working in the latest version of Woocommerce (6.8.2).

Recent Posts