Order Workflows

Overview

↑ Back to top

Order Workflows turns WooCommerce order management into an orchestrated workflow: define the statuses your fulfillment actually uses, the transitions between them, and the rules that trigger them automatically. Each status gets a color-coded badge with an icon, optional email notifications fully integrated with WooCommerce’s email system, workflow transitions with one-click action buttons, and automation rules that assign statuses based on order conditions. Every status change is recorded in a transition log.

Installation

↑ Back to top
  1. Upload the order-workflows folder to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Navigate to WooCommerce > Settings > Advanced > Order Workflows and toggle Enable Plugin on (it ships disabled by default)

Requirements

↑ Back to top
  • WordPress 6.4 or higher
  • WooCommerce 9.0 or higher
  • PHP 7.4 or higher

Settings

↑ Back to top

Access settings at WooCommerce > Settings > Advanced > Order Workflows.

General

↑ Back to top
SettingDescriptionDefault
Enable PluginMaster switch: when disabled, no custom statuses, workflows, emails, or automation rules are active. Your configuration is kept.Disabled

Statuses

↑ Back to top

Create and manage custom order statuses, and customize the appearance of core WooCommerce statuses.

Each custom status has:

FieldDescription
NameDisplay name shown everywhere (orders list, order edit, My Account, emails)
SlugInternal identifier (stored as wc-{slug})
DescriptionInternal note about the status purpose
Color / Text colorBadge background and text colors
IconDashicon shown next to the status
Badge styleFilled or outlined
Counts as paidTreat orders in this status as paid for payment logic
Include in reportsInclude orders in WooCommerce reports and analytics
Customer descriptionOptional text shown to the customer in My Account

Core WooCommerce statuses (Pending payment, Processing, On hold, Completed, Cancelled, Refunded, Failed) can be customized too: change their badge color and icon.

Drag and drop to reorder statuses.

Workflow

↑ Back to top

Define which statuses can follow each status. When a workflow is configured:

  • Next-status action buttons appear in the orders list for one-click transitions
  • “Change to X” actions are added to the order actions dropdown on the order edit screen

Both custom and core statuses support workflow transitions, an action button label, and an action button icon.

Emails

↑ Back to top

Each custom status automatically registers an email notification in WooCommerce’s native email system (WooCommerce > Settings > Emails). For each status email you can configure:

  • Enable/disable
  • Recipient: customer, admin, both, or a custom address
  • Subject and heading with placeholders: {site_title}, {order_date}, {order_number}, {status_name}
  • Additional content shown below the order table
  • Email type (HTML or plain text)

Email templates can be overridden in your theme: copy templates/emails/customer-order-status.php (and templates/emails/plain/customer-order-status.php) from the plugin.

Automation

↑ Back to top

Auto-assignment rules automatically set an order’s status at checkout or when payment completes. The first matching rule (by priority) wins.

Each rule has:

FieldDescription
NameRule label
Target statusStatus assigned when the rule matches
TriggerAt checkout, on payment complete, or both
Match typeAll conditions (AND) or any condition (OR)
PriorityLower runs first
ConditionsPayment method, order total, user role, shipping method, product type, product category, coupon used, customer country

Advanced

↑ Back to top
FeatureDescription
Import / ExportExport your full configuration (settings, statuses, rules) as JSON, and import it on another site
Workflow TemplatesApply pre-built status workflows (e.g. Local Pickup) in one click
Custom CSSAdd custom CSS for status badges and styling

Transition Log

↑ Back to top

Every order status change is recorded with the order ID, old and new status, the user who made the change, the source (manual, bulk, auto rule, system), and a timestamp. The log offers:

  • Statistics: total transitions, last 30 days, per-status counts
  • Filters: order ID, status, source, date range
  • CSV export

Orders List Integration

↑ Back to top
  • The order status column shows color-coded badges with your configured colors and icons
  • Next-status action buttons appear based on your workflow configuration
  • Bulk actions let you change the status of multiple orders at once
  • Custom statuses appear in the orders list status filter

My Account Integration

↑ Back to top

Customers see the custom status name for their orders in My Account. If a status has a customer description, it is displayed on the order view page.

How It Works

↑ Back to top
  1. Create a custom status in the Statuses tab (e.g. “Ready for Pickup”)
  2. The plugin registers it as a WordPress post status and a WooCommerce order status
  3. Optionally define workflow transitions, enable the email notification, and create automation rules
  4. Change order statuses from the order edit screen, the orders list action buttons, bulk actions, or automatically via rules
  5. Every transition is recorded in the log

Deactivation & Uninstall

↑ Back to top
  • On deactivation: no data is deleted. Orders keep their status value; custom status labels display as raw slugs until reactivation.
  • On uninstall (deletion): the plugin removes its database tables, options, and per-status email settings.

Developer Hooks

↑ Back to top

The plugin uses WooCommerce’s native hooks throughout. Key integration points:

HookTypeDescription
wc_order_statusesfilterCustom statuses are added here
woocommerce_order_is_paid_statusesfilterStatuses with “Counts as paid” are added here
woocommerce_reports_order_statusesfilterStatuses with “Include in reports” are added here
woocommerce_valid_order_statuses_for_paymentfilterCustom statuses are valid for payment
woocommerce_email_classesfilterPer-status email classes are registered here
woocommerce_order_status_changedactionTransitions are logged from this hook

Database

↑ Back to top

The plugin creates two tables:

  • {prefix}osm_custom_statuses: status definitions (custom and core overrides)
  • {prefix}osm_transition_log: status change history

REST API

↑ Back to top

Namespace: osm/v1. All routes require the manage_woocommerce capability.

RouteMethodsDescription
/settingsGET, POSTPlugin settings
/statusesGET, POSTList / create custom statuses
/statuses/{slug}PUT, DELETEUpdate / delete a status
/statuses/reorderPOSTReorder statuses
/core-statusesGETCore statuses with overrides
/core-statuses/{slug}PUTUpdate a core status override
/rulesGET, POSTAutomation rules
/rules/{id}PUT, DELETEUpdate / delete a rule
/templatesGETWorkflow templates
/templates/{id}/applyPOSTApply a template
/transition-logGETLog entries with filters
/transition-log/statsGETLog statistics
/transition-log/exportGETCSV export
/exportGETFull configuration export
/importPOSTFull configuration import

HPOS Compatibility

↑ Back to top

Order Workflows is fully compatible with WooCommerce High-Performance Order Storage (HPOS) and Cart/Checkout Blocks.

Support

↑ Back to top

For support, feature requests, or bug reports:

Related Products

WooCommerce Subscriptions is a WooCommerce extension that lets customers subscribe to your products or...

Offer add-ons like gift wrapping, special messages or other special options for your products.

Use of your personal data
We and our partners process your personal data (such as browsing data, IP Addresses, cookie information, and other unique identifiers) based on your consent and/or our legitimate interest to optimize our website, marketing activities, and your user experience.