looking for woocommerce custom order status with conditional settings plugin

i’m looking woocommerce plugin to create custom status order with conditional settings

I’m using woocommerce with dokan multi vendor, and i need to create a custom status order where after user successfully make payment, then the status order will go to example [pending-vendor] (vendor have to accept the order first) if in certain time vendor didn’t accept order after several days (set by admin) then the status order will be change to example [vendor-canceled]

after accept order, vendor must shipped the product by entering tracking number(will be limited again by certain days), after enter tracking number then status order will automatically changed to another custom order status

after product delivered then customer have to mark [received] or [dispute]
if received then order status changed to [mark completed] if have dispute then will go to another custom order status

so it’s like automatically change woocommerce status order based on number of days, and can be assign to certain user roles (customer/vendor)

I would recommend you to create custom Woocommerce order status and define custom rules according to your requirement rather than using any order manager plugin. Whereas you can use the plugin as well and customize it. If you are considering the custom method then this code snippet can be helpful:

function register_shipment_arrival_order_status() {
register_post_status( ‘wc-arrival-shipment’, array(
‘label’ => ‘Shipment Arrival’,
‘public’ => true,
‘show_in_admin_status_list’ => true,
‘show_in_admin_all_list’ => true,
‘exclude_from_search’ => false,
‘label_count’ => _n_noop( ‘Shipment Arrival (%s)’, ‘Shipment Arrival (%s)’ )
) );
add_action( ‘init’, ‘register_shipment_arrival_order_status’ );

function add_awaiting_shipment_to_order_statuses( $order_statuses ) {

$new_order_statuses = array();

foreach ( $order_statuses as $key => $status ) {

    $new_order_statuses[ $key ] = $status;

    if ( 'wc-processing' === $key ) {
        $new_order_statuses['wc-arrival-shipment'] = 'Shipment Arrival';

return $new_order_statuses;

add_filter( ‘wc_order_statuses’, ‘add_awaiting_shipment_to_order_statuses’ );