Here is a collection of tips, snippets, customizations and how-to tutorials to answer your biggest WooCommerce questions, curated by Rodolfo Melogli.
Please remember feedback is vital and that your social media shares, blog comments and WooWeekly newsletter sign ups help me understand which WooCommerce content works and which not, so that I can fine-tune my writing :)
Thank you in advance and enjoy!
In a recent Business Bloomer Club discussion, a user with over 1600 guest checkouts wanted to convert these previous guest users into registered WooCommerce customers. Since these customers had previously checked out as guests, they didn’t have accounts created, but the user needed a way to retroactively register them with the ‘customer’ role.
Solution Recommendation: A one-off PHP script could be used to loop through all guest orders, check if a customer already has an account, and register those who don’t. This would effectively create accounts for each past guest, assigning them the ‘customer’ role and ensuring that no duplicates are created for users who already have accounts.
Continue reading Bulk Converting Guest Checkout Users to Registered Customers in WooCommerce
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
Want to customize the WooCommerce “Downloads” table on the My Account page? By default, WooCommerce displays multiple columns (“Product”, “Downloads remaining”, “Expires”, “Download”), but you may want to remove some for a cleaner look or to focus on essential information.
Whether you’re simplifying the layout or tailoring the table to your store’s needs, a simple PHP snippet can help you hide unwanted columns effortlessly.
For example, on Business Bloomer I definitely don’t need the “Downloads remaining” column and the “Expires” one, because all my downloadable products – WooCommerce Mini Plugins – come with unlimited downloads and they never expires!
In this post, I’ll show you how to remove specific columns using a WooCommerce filter. Just add the snippet to your theme’s functions.php file or in a custom plugin, and you’re good to go!
Continue reading WooCommerce: Hide Columns @ My Account Downloads Table
In a recent Business Bloomer Club discussion, a user faced a challenge with WooCommerce’s country dropdown on a Bulgarian-language site. While the checkout country field displayed country names in Bulgarian by default, international customers needed to search using English names, creating a usability gap.
The user sought a way to add English names alongside Bulgarian in the dropdown, allowing search functionality for both languages.
Through a collaboration in the forum, the user leveraged the woocommerce_countries_allowed_countries filter to display country names in both Bulgarian and English. By setting up an array of English country names and merging them with the default Bulgarian names, they successfully enabled bilingual search functionality in the country dropdown.
Continue reading Displaying Country Names in Multiple Languages on WooCommerce Checkout
In a recent Business Bloomer Club discussion, a member faced an issue with the Flycart Woo Discount Rules plugin when trying to add a free gift product based on cart totals. While a discount rule applied a free gift when the cart subtotal reached €200, the rule didn’t adjust if a coupon reduced the cart total below this threshold.
The plugin settings allowed checks only against the subtotal, not the updated cart total after a coupon was applied. Seeking a solution, the member explored alternative discount plugins and custom setups.
A community member suggested trying Studio Wombat’s WooCommerce Discounts plugin, which offers more flexibility with cart total conditions. The plugin author added an option for tracking the cart total, enabling more precise control over free gift rules, particularly when coupons are involved.
Continue reading Managing Free Gift Rules Based on Cart Total in WooCommerce
In a recent Business Bloomer Club query, a member aimed to create a product page with form-like steps, requiring customers to complete multiple fields before adding the product to their cart. This setup provides a guided experience for users, ideal for products with customization options or detailed specifications. Several solutions were suggested, with options ranging from WooCommerce-specific plugins to advanced form integrations.
For simpler use cases, plugins like WooCommerce’s Product Add-Ons or Advanced Product Fields by Studio Wombat provide additional input options (e.g., dropdowns, checkboxes, text fields). These plugins allow you to add extra fields directly on the product page, although they lack multi-step form functionality.
Continue reading Creating a Multi-Step Form on WooCommerce Product Pages
In a recent Business Bloomer Club discussion, a member needed a solution to move the WooCommerce coupon field from its default top position on the checkout page to a location after the order review section.
Directly modifying templates posed issues due to WooCommerce’s default form structure, so a more customized approach was required.
Below is an effective solution that hides the default coupon field and adds a custom form that triggers the WooCommerce coupon functionality.
This solution involves hiding the original coupon field, adding a new custom field in the desired location, and using jQuery to handle its visibility and functionality. This setup will allow customers to enter their coupon code below the order review table, providing a more intuitive checkout experience.
Continue reading Moving the WooCommerce Coupon Field to a Custom Location on the Checkout Page
This is a guest post by Misha Rudrastyh of rudrastyh.com. If you like the content, make sure to thank him in the comments!
In this post, we will discuss different ways of syncing product stock levels between multiple WooCommerce stores, more specifically, we will take a look at the following topics:
- What is a multisite installation of WooCommerce stores, and what is the difference between syncing products across stores within a single multisite network and standalone stores?
- Is there any difference between when we do the sync after updating a product via the WooCommerce admin dashboard and when an order is created by a customer?
- Some caveats when working with orders which can contain lots of products.
- What do we need to do to run the bulk stock synchronization for all products on a WooCommerce store?
If you’re interested in syncing more product data, not just the stock information, you can take a look at this article.
This tutorial is mostly about using Inventory Sync for WooCommerce plugin, however, if you’re a developer, you will also find some hook and performance recommendations here.
Continue reading WooCommerce: Synchronizing Product Stock Between Stores
In a recent Business Bloomer Club discussion, a member faced a challenge with product IDs after migrating a WooCommerce store. During the import/export process, product IDs changed, impacting shopping feeds that relied on the original IDs for platforms like Google Shopping and Amazon.
While fixing the issue by changing product IDs in the live database might seem straightforward, it’s a complex and high-risk process, as WooCommerce and various plugins reference product IDs extensively across the database.
Here’s a breakdown of why this issue occurred, the possible solutions, and best practices for future migrations.
Continue reading Changing Product IDs in WooCommerce: Feeds and Migration Considerations
In a recent Business Bloomer Club discussion, a member encountered an issue with the Porto theme’s checkout customization in WooCommerce.
Specifically, Porto replaces the standard WooCommerce select dropdown for country selection with a custom element, making it difficult to trigger certain events, like reloading the checkout when a country changes. Here’s how to handle custom elements like these and ensure checkout updates work smoothly.
Porto’s theme uses the Select2 script to enhance standard select elements, replacing the default WooCommerce country selector. This can prevent traditional jQuery selectors from working as expected when trying to detect changes and update the checkout page.
Continue reading Working with Porto Theme’s Custom Country Selector on WooCommerce Checkout
In a recent Business Bloomer Club thread, a member raised a question about displaying rounded prices for non-European customers. Although prices on the site were set to include VAT, users outside of Europe were seeing unrounded, non-taxed prices (e.g., €1143.75 displayed as €1144).
The goal was to adjust both the display and actual prices, so non-European customers would see rounded amounts in all relevant areas, such as product pages, cart, and checkout.
Here’s a guide on how to implement this feature by overriding WooCommerce product prices based on the customer’s location.
Continue reading How to Round Prices Without VAT for Non-European Customers in WooCommerce
In a recent Business Bloomer Club discussion, a member encountered a perplexing tax display issue in their WooCommerce store. Despite setting up prices to include VAT and configuring WooCommerce’s tax display settings to always show VAT-inclusive prices, an unexpected amount was displayed on the product listing page.
Only in the cart or after selecting a shipping country did the correct price appear. This inconsistent behavior led to confusion, as it seemed WooCommerce was ignoring the store’s tax settings.
Here’s how we approached diagnosing and fixing this problem.
Continue reading Resolving Tax Display Issues in WooCommerce: Ensuring Consistent VAT-Inclusive Prices
WooCommerce by default displays both login and registration forms on the same page when “Allow customers to create an account“ is enabled on the My Account page.
However, for a cleaner and more user-friendly experience, you may want to hide the registration form initially and show it only when users click on the “Don’t have an account?” link. This method keeps the interface focused while still allowing easy access to the registration option.
In this tutorial, we will use PHP and jQuery to modify the WooCommerce login/register page. We’ll insert a toggle link below the login form and ensure the registration form remains hidden until clicked.
This approach enhances usability, especially for stores where most visitors are returning customers and primarily need to log in. Below, you’ll find the necessary code to implement this functionality.
Continue reading WooCommerce: Show/Hide Registration Form on Login Page
In a recent Business Bloomer Club discussion, a member sought assistance in modifying the greeting message on the WooCommerce My Account page.
By default, the message includes the user’s username, which may not provide a personalized experience for customers. Instead, the goal is to display “Hello {first name}” and “not {first name}” to create a warmer and more welcoming atmosphere.
This customization can be achieved by utilizing a filter in WooCommerce to modify the greeting string, allowing for a dynamic and personalized experience based on user data.
Continue reading Customizing the “Hello” Message on the WooCommerce My Account Page
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
Let's Talk WooCommerce, In Person
I'm bringing together WooCommerce professionals who care about code, business, and connections. No hype, no sales pitches—just smart people meeting in person in Palermo, Italy, April 23–24, 2026.
Join Us at Checkout Summit 2026 →