WooCommerce: How to Stop Spam Orders on Free Products

I’ve been hit once again by a bot attack.

This time, I woke up to dozens of fake orders for my best-selling free mini plugin: the WooCommerce Autocomplete Orders Mini-Plugin. All of them placed overnight, all using obviously fake email addresses, and all totally useless.

Besides clogging up my order list and analytics, these spam orders also triggered multiple admin emails and slowed down my workflow.

Free products are a great way to provide value and attract users — but they also open the door to abuse.

That’s why I decided to implement a simple solution: limit how many times each free product can be ordered per day. Once the daily limit is hit, the product becomes temporarily unavailable with a “come back tomorrow” message.

In this post (and the video below), I’ll show you exactly how I did it, with a custom snippet that targets all free products in a specific category.

Continue reading WooCommerce: How to Stop Spam Orders on Free Products

WooCommerce: Minimum Order Amount on Blocks

cash register, printer, receipt, store, sale, bookkeeping, hotel, restaurant, order, vat, clean, sum, tax office, control, computer, accountancy, cash register, printer, receipt, receipt, receipt, receipt, receipt, vat

In a recent Business Bloomer Club Slack thread, a question arose about integrating the “Minimum Order Amount” functionality with WooCommerce Blocks.

The original code provided an error notification on the Cart and Checkout pages if the order subtotal was below a specified threshold, but only worked with legacy Cart and Checkout shortcodes. However, with the rise of WooCommerce Blocks, ensuring compatibility with the block-based checkout flow is becoming increasingly important.

This article discusses how the minimum order amount logic can be adapted for blocks and includes a custom function that uses WooCommerce’s woocommerce_store_api_cart_errors hook. Keep reading to explore how this solution works for both traditional and block-based checkouts.

Continue reading WooCommerce: Minimum Order Amount on Blocks

WooCommerce Order Auto-Splitting for Multi-Location Shipping

In a recent Business Bloomer Club discussion, a WooCommerce store owner faced a unique logistics challenge: how to automatically split orders into separate shipments based on product origin, as items were shipping from various locations.

For stores dealing with multi-location shipping, it’s essential to manage orders efficiently to avoid fulfillment delays and streamline operations. In cases like these, creating separate orders post-checkout (rather than bundling items into multiple packages) can ensure each shipment is directed to the correct destination.

This post explores two main solutions: WooCommerce’s built-in multiple cart packages feature, which allows items in the cart to be assigned different shipping methods, and dedicated plugins that split orders into separate transactions post-checkout.

Leveraging these tools can enhance logistics, reduce manual processing, and boost customer satisfaction. Let’s dive into the options available and find the best fit for multi-location order management in WooCommerce.

Continue reading WooCommerce Order Auto-Splitting for Multi-Location Shipping

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

Filtering Out Billing State Data from WooCommerce Orders in the Admin

In a recent Business Bloomer Club discussion, a member asked about hiding the billing state data from order details displayed in the WooCommerce admin.

While WooCommerce provides extensive flexibility for managing orders and customizing the order view, certain data fields, like the billing state, might need to be filtered out for simplicity or privacy.

This guide will cover a solution to remove the billing state field from WooCommerce’s formatted billing address in the order view, making it possible to clean up the order display according to your preferences.

Continue reading Filtering Out Billing State Data from WooCommerce Orders in the Admin

Displaying Comprehensive Attribution Data in WooCommerce Orders

In a recent Business Bloomer Club discussion, a useful code snippet was shared to enhance the WooCommerce order overview table by displaying all available attribution data for each order.

Out of the box, WooCommerce typically shows only the “origin” of a customer’s order, which is a basic detail that lacks critical context for analyzing campaign performance. This snippet goes a step further by pulling in additional details, including the source, medium, and campaign associated with each order.

For WooCommerce merchants and marketing professionals, having this level of insight right in the order overview page can provide a clearer understanding of which campaigns drive sales, how customers are navigating to the store, and overall campaign effectiveness.

Continue reading Displaying Comprehensive Attribution Data in WooCommerce Orders

Adjusting Product Price on WooCommerce Order Admin Without Displaying a Discount

In a recent Business Bloomer Club discussion, a WooCommerce user raised an interesting question regarding price adjustments on orders.

When manually reducing a product’s price within an order on the admin side, WooCommerce automatically displays this change as a “coupon” rather than a direct price adjustment.

This setup can lead to confusion for customers, as they might see what appears to be an unexpected discount on their “My Account” page instead of a simple adjusted price.

Understanding WooCommerce’s approach to price adjustments and exploring alternative methods can help achieve this functionality without affecting the customer experience. From using direct database adjustments to implementing custom code solutions, there are ways to bypass WooCommerce’s default display for a cleaner and clearer transaction summary on customer pages.

Continue reading Adjusting Product Price on WooCommerce Order Admin Without Displaying a Discount

Optimizing WooCommerce Customer Purchases Checks

In a recent Business Bloomer Club discussion, a member explored an efficient way to validate customer memberships for accessing restricted pages in WooCommerce.

The challenge was ensuring quick performance when checking if customers have purchased any one of a series of products upon login. Typically, using the wc_customer_bought_product function works well for single product checks, but this case involved verifying around 10-15 products.

Running such multiple checks, especially on member-only pages, risks slowing down the user experience.

Continue reading Optimizing WooCommerce Customer Purchases Checks

WooCommerce Duplicate Orders: What Can Cause Them?

minions guitar, music, fun, characters, double, cute, two, music, double, double, double, double, double

Something odd happened for the first time on my WooCommerce store: a customer placed an order, got charged, and then—without any visible retry or user error—the exact same order came through again, just milliseconds later.

I had to issue a refund manually, and of course, this raises questions. The only recent change? I switched to the WooCommerce Stripe Gateway’s new “enhanced checkout“. Could it be responsible?

I took the issue to Twitter and got some very insightful responses. Here’s a breakdown of what I found and what you should check if this happens to you.

Continue reading WooCommerce Duplicate Orders: What Can Cause Them?

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

Generating Fake WooCommerce Orders for Testing: Tools and Tips

In a recent Business Bloomer Club discussion, a member sought advice on creating large volumes of fake WooCommerce orders for testing purposes.

Fake data is invaluable in testing environments to simulate real-life store operations, such as checking server load, analyzing database queries, or evaluating order workflows.

Generating such data can be done efficiently without affecting live store data. Here are some practical solutions for generating bulk WooCommerce orders.

Continue reading Generating Fake WooCommerce Orders for Testing: Tools and Tips

Quickly Anonymize Customer and Order Data in WooCommerce

In a recent Business Bloomer Club discussion, a member asked if there’s an efficient way to anonymize customer and order data across their WooCommerce store. While WooCommerce includes GDPR compliance features that allow manual anonymization for individual users, it lacks a bulk anonymization function.

This article explores solutions, including custom code options to anonymize all customer and order data quickly, especially useful when creating a staging environment.

Continue reading Quickly Anonymize Customer and Order Data in WooCommerce

Displaying Order Language in WooCommerce Backend Using WPML

In a recent Business Bloomer Club thread, a member asked how to display the language in which an order was placed in the WooCommerce backend, specifically in the order list or single order page.

This feature can be useful for managing orders across multiple languages in a WooCommerce store that uses WPML for multilingual capabilities. Below, we’ll explore ways to retrieve and display the order language, including a solution that leverages order meta fields.

Continue reading Displaying Order Language in WooCommerce Backend Using WPML

WooCommerce: Duplicate Order @ WordPress Dashboard

In WooCommerce, the ability to quickly duplicate orders can save time when managing repeat purchases or creating similar orders. However, this feature isn’t available by default. While plugins exist to add it, they can be complex or overengineered for simple use cases.

This custom PHP snippet adds a “Duplicate” button to the order actions in the WordPress dashboard. It duplicates the order directly in the database wherever possible, offering a lightweight solution without unnecessary overhead.

If you need a practical and efficient way to duplicate WooCommerce orders directly from the “Orders” admin page, this approach offers a tailored solution that integrates seamlessly with your existing workflow.

Continue reading WooCommerce: Duplicate Order @ WordPress Dashboard