WooCommerce uses the Completed order status for all types of orders, regardless if the order is for Virtual products or physical products. But when your you sell both virtual and physical products on your store, you will want to have a different orders flow and email notifications for your Virtual orders than the orders flow for orders you ship.
For Example, the Advanced Shipment Tracking (AST) plugin uses the Completed order status to notify the customers that their order is Shipped and if your store sell a mix of physical and digital products,
The solution is to create 2 Workflows, one for the Shipped orders, and one for the Virtual Orders with custom email notifications and messages that fit the Virtual products orders flow.
The solution will be to create a custom order status with email notification that will be used for Virtual orders and to customize the email messages to fir Virtual products orders:
On this video, we will show how to create a custom Completed order status for the Virtual orders and to autoComplete the Virtual Orders to the new Custom Order Status using the Advanced Order Status Manager plugin:
STEP 1 – Create a Custom Order Status for the Virtual Completed orders.
If you use the Completed order status for your shipped orders and you rename it to Shipped, you can name your new Custom Order Status as Completed and set its slug to be “vcompleted” (please note the v we added to create a different slug then the existing one that you use for the Shipped status).
You can also enable email notification for the Custom Order Status that will be sent when orders status changes to Completed and to cystomize the email subject, header and content using email customizer.
STEP 2 – Autocomplete your Virtual orders to the Custom Completed Order Status
In the autoComplete orders option, we will tell WooCommerce to skip the Processing order status and to to the custom Completed status.
You can implement these steps and create a custom orders flow using the Advanced Order Status Manager plugin, or you can use a code snippets to register a Custom Order Status and to autocomplete virtual orders in functions.php file