1. Documentation /
  2. WooCommerce Order Status Manager

WooCommerce Order Status Manager

Overview

↑ Back to top
WooCommerce includes several core order statuses, but these may not fit the workflow for every eCommerce shop. WooCommerce Order Status Manager allows you to create extra order statuses you need, create a “next status” flow so that you can add action buttons to your orders page, add icons and bulk actions, and even tie emails to these new statuses to completely support your fulfillment workflow. Please note that custom statuses are manually applied and are not automatic at this time.  

Requirements

↑ Back to top
  • WooCommerce 3.0
  • PHP 5.6+ (You can see this under WooCommerce > Status)
 

Installation

↑ Back to top
  1. Download the extension from your WooCommerce dashboard
  2. Go to Plugins > Add New > Upload and select the ZIP file you just downloaded
  3. Click Install Now, and then Activate
  4. Go to WooCommerce > Settings > Order Statuses and read the next section to learn how to setup and configure the plugin.
 

Setup and Configuration

↑ Back to top
Go to WooCommerce > Settings > Order Statuses to view the available order statuses in your shop, and tie them to email triggers as needed. If you’ve already added some custom order statuses via a code snippet, or another plugin has added them, you can import them very quickly to get going! Click “Import custom statuses” below the order statuses table:
WooCommerce Order Status Manager import statuses
Import Statuses
This will import any statuses added via custom code or 3rd party plugins (such as Pre-Orders). You can run this action again in the future if you install other plugins.
WooCommerce Order Status Manager: Custom Statuses imported
Custom Statuses imported
You can now delete your custom code that has added these statuses and entirely manage them via Order Status Manager. You’ll be able to add icons, use them in emails, and do anything that you can do with a status created via the plugin.

Set up Statuses

↑ Back to top
Now that you’re viewing your order status list, you’ll be able to edit core statuses, re-order statuses, or add, edit, and delete your own custom WooCommerce order statuses. To re-order statuses, drag and drop them into your desired order. This changes the order in which they’re displayed on the “Edit Order” page and within the order bulk actions dropdown. You can add a new status by clicking “Add Order Status” at the top.
WooCommerce Order Status Manager view statuses
View & Add Statuses
Add the following information for your order status:
  • Name – The name to display in your Orders Table and on all order information.
  • Slug – Add a slug to identify this status, which can be used in custom code. For simplicity, we typically recommend adding a slug that’s a hyphenated version of your name, and not changing this in the future.
  • Description – (Optional) Add a description to display to customers when they view the order. If customers hover over the order status in the “View Order” screen, this description will be shown to provide more information.
  • Color – select a color for the order status icon
  • Icon – select an icon for this status. If chosen, this will be displayed on the “Orders” page if the order has this status, replacing the text badge for status. If no icon is selected, a text badge is used.
  • Action Icon – select an icon to use for the “Order Actions” button if this status is available as a next status (such as the “completed” action button)
  • Next Statuses – Select any statuses that would be used later than this status in your fulfillment flow; these can be custom or core statuses. This will display the appropriate order action buttons on the “Orders” page.
  • Bulk Action – Enable this to add a bulk action for this status on the “Orders” page. This will allow you to select orders, then assign this status in bulk.
  • Include in Reports – Enable this to include orders with this status in your sales reporting. This is helpful for order statuses that designate an order that has been paid for, but is not yet “complete”, such as one that’s been shipped.
  • – Select the payment status of this order status. For example, if an order has been paid (think of this as a status “between” Processing and Completed), you can mark it as such.WooCommerce Order Status Manager: payment status
    • Orders with this status have been paid – This status will be treated like “processing” or “completed”. Orders will include download link access (if you allow it for paid orders), show purchase notes (if set), and in general ensure the status behaves like the processing status in terms of what customers see on your site.
    • Orders with this status require payment – This status will be similar to “pending payment” or “failed”. Orders will show the “Pay” and “Cancel” links to customers in the account section, and will not allow access to downloads or other aspects of your store that require payment.
    • Orders are neither paid nor require payment (Default) – This status is similar to “on-hold” or “refunded”. A customer will not have access associated with a paid order (such as download access), but will not be shown payment or cancel links in the account.
Once you’ve created your status, click “Save Order Status” and your new status will be created.
WooCommerce Order Status Manager: Create a Status
Create a Status
Before you complete order status setup, you may want to edit core statuses and add any “Next Statuses” as needed. For example, after “processing” (paid), I may want to add some of my new statuses so that action buttons are displayed.
WooCommerce Order Status manager: Edit Core Status
Edit Core Status
 

Set up Emails

↑ Back to top
Once your statuses have been created, you can create emails that will be triggered based on any status change(s). Go to WooCommerce > Settings > Order Statuses > Emails to view, create, and edit new WooCommerce order emails.
WooCommerce Order Status Manager email list
Add Emails
You can add a new email by clicking “Add Order Status Email”. Add the following information for your new email:
  • Name – The name to display in your Emails list for reference.
  • Type – Determine whether this should be sent to the admin email addresses or the customer.
  • Description – (Optional) add a description that’s solely for your reference in the emails list.
  • When to dispatch – add all order status changes that should trigger this email to be sent. You can dispatch when moving from any status to a particular status, when moving from a particular status to any status, or from one status to another.
  • Dispatch when a new order is created – (Optional) allows emails to be sent when a new order is created.
Click “Save Email” to add this to your emails list.
WooCommerce Order Status Manager new email
Create an email
Please note that in order for emails to send, the two statuses cannot be the same status. For example, if you have a custom status called Shipping and you want an email to get sent out when an order moves to that status, you’ll likely want to have the From Status be set to Any. If you have both statuses set to Shipping, then no emails will be sent, as the status will not have changed from Shipping to Shipping.
Now you’ll need to edit this email and enable it when ready. Go to WooCommerce > Settings > Emails or click either the Status icon or the email name links to find your new email.
WooCommerce Order Status Manager email list
Custom Emails Added
Once you’ve found your email, edit the subject line and content. Order details will automatically be displayed after your content, but this template can be overridden in your theme if desired for further editing. Enable the email once you’ve edited it, and it will be dispatched based on your status changes.
WooCommerce Order Status Manager Edit New Emails
Edit New email
 

Usage: Order Statuses

↑ Back to top
Your new order statuses, corresponding icons, bulk actions, and action buttons will now be displayed in your orders list if used. You’ll be able to view these icons if an order uses your custom status. If you’ve created “Next statuses” for your custom statuses, or added a custom status to the “Next status” for a core status, the appropriate action buttons will be displayed. For example, note the processing order in the screenshot below. I’ve added “Assembling” and “Awaiting shipment” as next statuses for processing orders, so these action buttons will now be displayed for any order marked as processing.
WooCommerce Order Status Manager: Statuses in action
Statuses in action
If you’ve enabled bulk actions for a status, it will be added to the “Bulk Actions” list in the top left of your orders screen. By selecting statuses and using a bulk action, they will all be updated to this status automatically.
WooCommerce Order Status Manager bulk actions
Bulk Order Actions

Deleting Statuses

↑ Back to top
If, at any point, you decide to delete an order status, Order Status Manager will check if orders use this status. If no orders currently use this status, it will be deleted automatically. If orders currently use this status, you’ll be asked to reassign these to a new status or delete automatically. If you want to reassign these to your new status, select the correct status to use and click “Reassign and delete”.
WooCommerce Order Status Manager delete status
Delete a status
If you do a simple “Delete”, any order that used this status will be moved to “On hold” so you can proceed from there. WooCommerce Order Status Manager Deleted Status In either situation, order notes will be added to all affected orders to indicate the change.  

Customer Experience

↑ Back to top
When using Order Status Manager, customers see the same thing they typically do with their WooCommerce orders, but with upgrades 🙂 When a customer views the “Recent Orders” list in the account section, or views a particular order, the status will still be displayed, even if it’s a custom status. For statuses that are marked “requires payment”, the “Pay” and “Cancel” actions will be shown. WooCommerce Order Status Manager: status needs payment If you’ve entered a description for any core or custom status, this will also be displayed to a customer while hovering over the status name so customers understand what the status means:
WooCommerce Order Status Manager customer view
Customer View
These description tooltips will also be shown in the “Recent Orders” table to give customers easy access to what this status means.
WooCommerce Order Status Manager Orders List
Orders List with Descriptions
If a customer views an order with a status designated as “Paid”, then information typically available for processing orders will also be viewable with this status. For example, if you opt to show download links when the order is paid for (processing), they’ll also be shown for this status. Other paid information, such as purchase notes, will be shown.
WooCommerce Order Status Manager Paid Status
A “Paid” order status
 

Incompatible plugins

↑ Back to top
The following plugins may cause issues with Order Status Manager sending emails related to custom statuses:  

Troubleshooting

↑ Back to top
If you’re experiencing issues with custom emails being dispatched, please check the WooCommerce Email settings to ensure that you’ve enabled it. We leave this disabled by default so that you have a chance to edit the subject line and email content, but then the email must be enabled to send. If you experience further issues, we’d be happy to troubleshoot! Please get in touch via the help desk.  

Frequently Asked Questions

↑ Back to top
Q: Why aren’t my statuses switching automatically? A: At this time, the use of custom statuses is not automatic and requires an action from a shop manager or administrator. This means you should either use the bulk action method on the order page or click the appropriate status button on the orders page for a single order. You can also manually change the order status on the specific order page itself.
Q: Why can’t I delete core order statuses like I can with custom statuses? A: All core order statuses, even those that you may not typically use in your workflow, are used by plugins. As these plugins expect core order statuses to be present, we cannot remove them so that we don’t break the plugins, like payment gateways, that depend on them. You can edit the names for these statuses if desired, but cannot delete these statuses or change the slugs.
Q: Why can’t I edit orders with custom statuses? A: WooCommerce disables editing for orders once they have a “paid” status. However, this is filterable, and Order Status Manager will try to follow this format depending on whether you’ve designated a status as “Paid” or not. If this does not suit your workflow, you can use this code snippet to pass your custom status slugs to WooCommerce to tell it which statuses should be editable (please read this post if you’re not sure how to add custom snippets to your site): https://gist-it.appspot.com/github/skyverge/wc-plugins-snippets/blob/master/woocommerce-order-status-manager/allow-order-editing-with-custom-status.php?footer=minimal
Q: Can I translate custom order statuses? A: If WPML is being used to manage translations, you can create new statuses to translate, but make sure the new status has the same slug as the existing one for the translation, as statuses are treated like posts. You can also use the filters wc_order_status_manager_order_status_name and wc_order_status_manager_order_status_description to translate the names without WPML (or ask WPML to add support for these filters and exclude the status post type OSM adds).
Q: What happens if I delete an order status? A: If you delete an order status that’s in use by orders, then any orders that have that status can be re-assigned to a new status. See our section on deleting statuses for more information.
Q: Do custom statuses show up in the REST API? A: Yes, if you use the WooCommerce REST API to pull the details of an order that has a custom status, you’ll see the slug associated with that custom status.
Q: Can I use my custom order status with WooCommerce API? A: Yes! When you create a custom order status, a new status registers in WooCommerce. Therefore, any update_status call made by WooCommerce to the custom status will work. So, updating the order through an API, PHP snippet, or otherwise will behave in the same way.
Q: Do custom statuses show up in the WooCommerce mobile app? A: Custom statuses will show up in the WooCommerce app, and you can filter by them. However, the app generally only displays core statuses, so you may not be able to assign custom statuses to orders through the app.  

For Developers

↑ Back to top
If you’d like to customize the order status emails, it’s possible to override the included template files based on the following heirarchy:
  • The /yourtheme/woocommerce/emails/{type}-order-status-email-{$slug}.php template is loaded first, where “type” is “customer” or “admin”, and the “slug” is the name of your custom Order Status Email.
  • Next, the /yourtheme/woocommerce/emails/{type}-order-status-email-{$post_id}.php template is loaded, where the type is the same as above, and the post_id is the ID of the custom order status.
  • Finally, the plugin will attempt to load /yourtheme/woocommerce/emails/{type}-order-status-email.php which can be used as a general override for all custom order status emails.
Of course, we recommend using the available hooks instead if possible, and keeping templates up-to-date if you do choose to override them. Most of the standard WooCommerce hooks for editing email contents are available, and the list of actions can be seen in the woocommerce-order-status-manager/templates/emails/customer-order-status-email.php template file. It’s also possible to include new merge tags for the existing email fields by using the filter:
apply_filters( 'wc_order_status_manager_order_status_email_find_variables', $this->find, $this->id, $this->type, $this->object );
This would allow you to add a custom merge tag, that can then be replaced with data based on the following filter:
apply_filters( 'wc_order_status_manager_order_status_email_replace_variables', $this->replace, $this->id, $this->type, $this->object );
where “ID” is the custom email ID, which can be found in the URL bar from the “section” query argument, when customizing the email template in admin. “type” is either “customer” or “admin”, and the “object” is the custom email instance. The email body can also be overriden using a filter, rather than a template override:
apply_filters( "wc_order_status_manager_order_status_email_body_text_{$this->id}", $this->format_string( $this->body_text ), $this->object );
 

Questions & Support

↑ Back to top
Have a question before you buy? Please fill out this pre-sales form. Already purchased and need some assistance? Get in touch with support via the help desk.