WooCommerce: Managing Initial Order Status

envelopes, letters, wooden stamp, stamp, mail, post office, envelopes, stamp, stamp, stamp, stamp, stamp, mail

In a recent Business Bloomer Club Slack thread, a member asked for help with setting the initial order status in WooCommerce based on specific cart conditions.

The challenge was that there are no payments involved in this store, so they had removed the payment methods using the following code:

add_filter( 'woocommerce_cart_needs_payment', '__return_false' );

The goal was to set the order status to “Processing” under certain conditions and to “RFQ” (Request for Quote) under others. Since there were no payments, the user needed to find the appropriate hook or filter to manage the initial status before any order events occurred.

Continue reading WooCommerce: Managing Initial Order Status

Change a Custom WooCommerce Order Status to “Paid”: Potential Impacts and Considerations

In a recent Business Bloomer Club discussion, a WooCommerce user sought advice on marking a custom order status, “pre-ordered,” as a paid status. Their primary concern was whether this adjustment could inadvertently affect WooCommerce reporting, analytics, or related plugins.

For WooCommerce store owners managing pre-ordered items, marking the “pre-ordered” status as paid enables further automation, especially in tools like FunnelKit, which triggers workflows based on paid orders. This allows for smoother handling of pre-ordered products by integrating them into existing paid status workflows.

Below is a guide to understanding the potential effects of adding a custom status to the array of wc_get_is_paid_statuses().

Continue reading Change a Custom WooCommerce Order Status to “Paid”: Potential Impacts and Considerations

WooCommerce: Complete Button @ Order Admin

When managing WooCommerce orders manually, efficiency is everything—especially if you’re dealing with high volumes or handling custom fulfillment workflows.

Typically, to mark an order as “Completed,” you’d have to open the order, change the status from the dropdown, and then click “Update”. That’s an extra step that can feel repetitive if you’re doing it often.

In this quick developer tutorial, I’ll show you how to add a “Complete Order” button directly to the single order edit page in the WooCommerce admin. This button appears alongside the existing “Update” action and lets you instantly complete the order with one click—no need to manually change the status first.

It’s a small UI enhancement, but one that can save time and reduce friction in your daily order management tasks. Best of all, the solution only requires a lightweight PHP snippet you can add to your theme or custom plugin. Enjoy!

Continue reading WooCommerce: Complete Button @ Order Admin

WooCommerce: Failed Orders Monitor & Temporary Lockdown

Sooner or later, every WooCommerce store will face a carding attack. It’s a matter of when, not if. We covered the ins and outs of this in a recent class (Preventing WooCommerce Checkout Carding Attacks), and now this post provides the code solution you’ve all been waiting for.

Want to temporarily lock down your WooCommerce site when too many failed orders happen?

This snippet does just that! When the 3rd order in a row fails, it triggers a 10-minute lockdown, disabling a specific payment gateway, and preventing purchases of low-ticket products. Plus, you’ll get an email notification when the lockdown is active.

It works by setting a temporary flag (a WordPress “transient“) and checking it before allowing payments and purchases.

This is a great way to prevent repeated failures, investigate payment issues, mitigate carding attacks, and ensure a smooth customer experience. Enjoy!

Continue reading WooCommerce: Failed Orders Monitor & Temporary Lockdown

Simulating Automatic Cancellation of Pending Payments in WooCommerce

In a recent Business Bloomer Club discussion, a WooCommerce store owner wanted to simulate the automatic cancellation of “Pending Payment” orders after a set time.

WooCommerce has a built-in feature to move pending payments to “Canceled” status, but in this case, the auto-cancellation wasn’t consistently triggering during testing with Mollie’s test API key. Since no actual order is created on Mollie’s platform with the test key, pending orders in the shop would remain in that status, causing issues with testing sub-orders in the Yith Deposit plugin.

For anyone facing similar challenges, here’s a potential solution using WooCommerce’s Action Scheduler.

Continue reading Simulating Automatic Cancellation of Pending Payments in WooCommerce

Preventing Mass Email Sending After Order Status Deletion in WooCommerce

In a recent Business Bloomer Club discussion, a member sought advice on handling a sudden flood of 25,000 triggered emails after a client accidentally deleted a custom order status in WooCommerce.

This error caused orders to transition to default statuses, triggering an email for each one. Concerned about reconnecting the SMTP server and potentially sending all the emails, they were looking for ways to pause or prevent further email distribution.

Here’s a step-by-step guide to managing and preventing mass email sending after such incidents.

Continue reading Preventing Mass Email Sending After Order Status Deletion in WooCommerce

Creating a Custom Workflow for Tracking WooCommerce Order Status for Shipments

In a recent Business Bloomer Club Slack thread, a WooCommerce store owner sought a way to streamline their order fulfillment process.

Their challenge involved coordinating two departments—shipping and accounting—to ensure orders were only marked as “Completed” when fully processed and shipped. To track orders awaiting shipment, they wanted a solution that involved minimal setup and avoided external software.

Here’s an overview of the solutions and workflow improvements shared.

Continue reading Creating a Custom Workflow for Tracking WooCommerce Order Status for Shipments

WooCommerce: Send Default Order Email For Custom Status Transition

WooCommerce offers flexibility with custom order statuses, but email notifications can be limited. By default, in fact, WooCommerce triggers the “completed”, “processing”, “on-hold” and all the other default emails when the order status changes from X to Y as defined in the plugin code.

But what if you want to trigger the “Order Completed” email if the order status transitions from your custom order status to the “completed” one? Or what if you want to trigger the “Order On-hold” email beyond its default triggers?

This post unlocks a powerful technique: triggering a default order email for a custom order transition. Let’s see how it’s done!

Continue reading WooCommerce: Send Default Order Email For Custom Status Transition

WooCommerce: Allow Order Editing For Custom Order Status

WooCommerce admins are allowed to “edit” an order only when this is in the “on hold” or “pending payment” status. By “edit” I mean having the chance of modifying or adding products, fees, shipping and recalculating the totals, which are not allowed once the order has been placed (“processing“, “completed“, etc.).

However, there are many reasons why you’d want to have the right to edit a processing, completed, or custom status order – of course as long as you don’t end up changing the total, as customers already paid at that stage.

Think about the following scenarios:

  • you customized the items table and added a custom field, and you want to set the custom field value when the order is “processing
  • you need to edit the shipping method name AFTER checkout, and you want to be able to rename it when the order is “completed
  • you need to add a fee and a discount of equal amounts (so that the total stays the same) before completing the order

Either way, let’s enable the little “pencil icon” on a custom order status, so that the admin can customize the order whenever they wish!

Continue reading WooCommerce: Allow Order Editing For Custom Order Status

WooCommerce: Disable Restocking @ Order Cancelled

When an order that has previously reduced stock is “cancelled” or goes to “pending payment” because the payment failed or the store admin decided to change the order status, the wc_maybe_increase_stock_levels() function triggers and restores the order items’ stock quantity.

As usual, some WooCommerce entrepreneurs asked for a way to disable this automatic restocking given their custom setup. It often goes like that – you can’t really please everyone.

This is unless you’re a smart developer and can account for both options, thanks to a WordPress “filter“. Here’s a PHP one-liner that can immediately disable this default behavior, so that you can avoid the automatic restocking (and maybe doing it manually based on your business rules). Enjoy!

Continue reading WooCommerce: Disable Restocking @ Order Cancelled

WooCommerce: Resend Any Order Email

How annoying is the fact you can only resend the “New Order Notification” from the single order admin page? What if you’re testing out and customizing email templates, and need to email yourself the “processing” or the “completed” notification, without having to place a new test order or switching order status twice to re-trigger the notification?

Well, today we will see how to add a “Resend whatever email” function under the “order actions” on the single order edit page. Of course, make sure you switch the billing email to yours, otherwise the customer will get these emails and not you. Enjoy!

Continue reading WooCommerce: Resend Any Order Email