Imagine your online store bustling with orders. Each time a customer completes a purchase, their order promptly moves into the ‘Processing’ status. But here’s the exciting part: What if, exactly 5 days later, these orders seamlessly transitioned to a new status like ‘Awaiting Shipping’ all on their own?
Solution: Automate WooCommerce Order Status Change after Specific Days
The code snippet will change the order statuses from ‘Processing’ to ‘Awaiting Shipping’ after 5 days from the processing status was set.
add_action( 'woocommerce_order_status_changed', 'ts_mark_order_complete_if_within_timeframe', 10, 4 );
function ts_mark_order_complete_if_within_timeframe( $order_id, $from_status, $to_status, $order ) {
// Check if the order status is changing to 'processing'
if ( $to_status === 'processing' ) {
// Set the timezone
date_default_timezone_set( 'Asia/Kolkata' ); // Adjust timezone as needed
// Define the start time (order creation time)
$start_time = strtotime( $order->get_date_created()->format( 'Y-m-d H:i:s' ) );
// Calculate the end time (start time + 0 business days)
$end_time = strtotime( '+5 weekdays', $start_time );
// Get the current time
$current_time = strtotime( "now" );
// Check if the current time is after the end time
if ( $current_time >= $end_time ) {
// Update order status to 'completed'
$order->update_status( 'completed' );
}
}
}
add_filter( 'wc_order_statuses', 'ts_rename_order_status_msg', 20, 1 );
function ts_rename_order_status_msg( $order_statuses ) {
$order_statuses['wc-completed'] = _x( 'Awaiting Shipping', 'Order status', 'woocommerce' );
return $order_statuses;
}
Output
Orders in ‘Processing’ status will be automatically marked as ‘Awaiting Shipping’ if they have been in the ‘processing’ status for more than 5 days.

Just want to automate the WooCommerce order status regardless of the number of days. You can also automatically complete WooCommerce orders when they go to the Processing status.

2 thoughts on “How to Automate WooCommerce Order Status Change after Specific Days?”
Hi Saranya,
Is it possible to change Orders in ‘Processing’ status to automatically mark as ‘Completed’ status on a set day and time?
IE: On Friday at 9:00AM change all Orders in ‘Processing’ status to ‘Completed” status.
Thanks
Tom
Hi Tom,
Regarding your specific request, we’ve written a new blog post. Please check it out here: ‘How to Automatically Update Order Status Based on Set Day and Time in WooCommerce.’
Hi Saranya!
Thank you for this post! I was wondering, is it possible to change the order status on a date that is entered in a custom field?
Marcela
Hi Marcela,
I’m glad you found the post helpful. Regarding your query about changing the order status on a specific date entered in a custom field, could you let me know how the custom field was added? Was it created using a plugin, or was it added via a custom code snippet? Please share additional details about the plugin or snippet that will helps us to provide a precise solution.