How Do I Add a Custom Order Status to WooCommerce?

How to Register a WooCommerce Custom Status

A custom order status is registered as a WordPress post status, then added to WooCommerce's known list of order statuses via a filter so it appears correctly in the admin order screen's status dropdown and reporting logic.

add_action( 'init', function() {
    register_post_status( 'wc-awaiting-approval', [
        'label' => 'Awaiting Approval',
        'public' => true,
        'exclude_from_search' => false,
        'show_in_admin_all_list' => true,
        'show_in_admin_status_list' => true,
        'label_count' => _n_noop( 'Awaiting Approval (%s)', 'Awaiting Approval (%s)' ),
    ] );
} );

add_filter( 'wc_order_statuses', function( $statuses ) {
    $statuses['wc-awaiting-approval'] = 'Awaiting Approval';
    return $statuses;
} );

The Harder Design Decisions

  • Where the new status fits in the existing sequence — does it come before Processing, replace part of it, or sit alongside existing statuses for a specific workflow branch?
  • Whether it should trigger customer or admin emails, which needs its own explicit email template and trigger hook, since a custom status has no automatic email tied to it by default.
  • Whether it should count toward sales reports and analytics, which needs explicit inclusion since WooCommerce's default reporting logic only recognizes its own built-in statuses.
  • How stock behaves at this status — should it reduce, hold, or remain untouched, which needs to align with the store's actual fulfillment logic.

Implementing It Properly

  1. Register the status and add it to the order statuses filter as shown above.
  2. Map out exactly how emails, stock, and reporting should behave at this status before writing that supporting logic.
  3. Test the full order lifecycle including transitions into and out of the new status.

Need a custom order workflow designed and built properly? See custom WooCommerce development.

Available for new projects

NEXT STEP

Rather have it fixed than keep reading?

Based in Dhaka, Bangladesh — serving clients worldwide. Tell me what's happening and you'll have a reply within one working day.

  • Reply within one working day
  • Fixed quote before work starts
  • UK, EU and US hours covered