Category: WooCommerce

  • Building product bundles in WooCommerce with a plugin

    Bundling has been a retail staple for as long as retail has existed.

    A pair a razor with a pack of blades, a camera with a case and a memory card, a skincare set with three products instead of one.

    It works because it removes a decision. Instead of a customer wondering whether they also need the second item, you’ve already made the case for them, usually with a small discount that makes the bundle feel like the smarter choice than buying each piece separately.

    The usual ways stores get this wrong

    Most WooCommerce stores that want bundling end up doing one of two things.

    The first is grouping products using WooCommerce grouped type.

    The second is installing a heavyweight plugin built for complex product configurators when all the store actually needed was to sell three specific products together at a discount.

    A bundle as a real product

    The Bundle Products feature in my plugin RIACO Revenue Lift takes a simpler route: a bundle is an actual WooCommerce product type, in the same sense that “Simple product” and “Variable product” are product types.

    It isn’t a page pretending to be a product.

    It shows up in your shop loop and search results, can be assigned categories and tags like anything else in your catalog, has its own permalink, and is fully compatible with High Performance Order Storage if your store has that enabled.

    This distinction matters more than it sounds like it should.

    A product type that WooCommerce itself understands means your existing theme, your existing search, and your existing shop widgets all handle it correctly without special-casing.

    A shortcode-built “bundle page” has to be manually excluded or included everywhere those systems touch it.

    Setting one up

    Creating a bundle happens inside the normal product editor you already use for every other product.

    There’s no separate screen to learn.

    You change the product type dropdown to “Bundle,” and a dedicated panel appears.

    Adding products

    At the top of the panel is a search field using the same product picker WooCommerce uses elsewhere in the admin, so finding and adding products feels familiar rather than like a new interface.

    Each product you add appears as a row with a thumbnail, its name, and its current unit price, so you can see at a glance what you’re assembling and roughly what it would cost unbundled.

    Setting quantities

    Each item in the bundle gets a quantity that you, the store owner, control with a simple stepper.

    This is a deliberate design choice: the customer buying the bundle can’t change how many of each item are included.

    That keeps the offer exactly as you intended it, if you’re bundling one bottle of shampoo with two bars of soap because that’s the ratio that makes sense as a set, that’s what gets sold, every time.

    Applying a discount

    Below the item list is a discount section where you choose a type, you can set percentage off, a fixed amount off, or no discount at all and then enter the amount.

    The bundle’s price recalculates from the current prices of its child products, which means if you later change the price of an item inside the bundle, the bundle price adjusts along with it.

    You’re never stuck manually reconciling a bundle price against products that have since changed.

    Reviewing the summary

    At the bottom of the panel, a price summary shows the original combined price of the components next to the final bundle price in the color your admin theme uses to highlight totals.

    It’s the same number a customer will eventually see on the product page, so there’s no surprise between what you configured and what gets sold.

    What customers see

    On the product page, the bundled items are laid out in a straightforward table: a thumbnail column, a product name column, and a price column, followed by a footer that shows the subtotal, the savings if a discount applies, and the final bundle price.

    It adds to the cart as a single line item, so checkout stays exactly as simple as it is for any other product, and the individual products the bundle contained are still recorded against the order for your own records or fulfillment process.

    An honest limitation worth knowing

    One thing worth being upfront about: the free version doesn’t decrement each individual child product’s stock count when a bundle sells.

    If you track inventory tightly at the per-item level you’ll want to keep an eye on that manually rather than relying on the bundle sale to reflect in that product’s stock number.

    This kind of granular, per-item inventory handling is intentionally left for a more advanced version down the line, since most stores selling straightforward bundles don’t need it day to day.

    Where bundles work best

    Bundles are most effective when you already know a combination makes sense.

    You don’t need an algorithm to tell you that a starter kit or a gift set is a good idea, you just need an easy way to build and price it.

    They’re also useful for moving a slower-selling item by attaching it to a bestseller at a modest discount, something a purely data-driven recommendation would never suggest on its own since it only reflects what already sells well.

    RIACO Revenue Lift for WooCommerce is free to install from the WordPress.org repository.

  • Running Buy-One-Get-One deals in WooCommerce without a developer

    Buy one, get one free is one of those promotions that shoppers understand instantly, no explanation needed, which is exactly why it converts so well.

    The trouble has always been implementing it cleanly in WooCommerce.

    This is both a walkthrough of how the BOGO ruleset type in Riaco Smart Quantity Discount works, and a more honest look at when it’s actually the right tool compared to a plain discount.

    Why “Free” works differently than a discount

    A 50% discount and a buy-one-get-one-free deal are, in raw arithmetic, the same thing if the quantities match up, but they don’t feel the same to a shopper.

    Free carries a kind of certainty and simplicity that a percentage doesn’t.

    There’s no mental math, no wondering whether the discount is “worth it,” just an immediate, easy-to-picture bonus.

    This is why BOGO promotions often outperform an equivalent percentage-off deal even when the actual saving is identical, and it’s worth keeping in mind when you’re deciding which ruleset type fits a given promotion.

    Setting BOGO ruleset

    Creating a BOGO ruleset looks similar to any other.

    You create a new ruleset, choose BOGO as the type, and fill in two numbers: the buy threshold, meaning how many units the customer needs to purchase to trigger the deal, and the free quantity, meaning how many units they receive as a result.

    BOGO ruleset for woocommerce

    A classic buy-one-get-one-free is a threshold of 1 and a free quantity of 1.

    A buy-two-get-one is a threshold of 2 and a free quantity of 1.

    You can scale this up for clearance pushes too.

    A threshold of 2 with a free quantity of 2 is effectively half off for anyone buying in pairs, framed in a way that reads as far more generous than “50% off.”

    On the product page, a BOGO deal table will be displayed so users can easily view available Buy One, Get One offers.

    How the cart Behaves in practice

    Once active, my plugin RIACO Smart Quantity Discount watches the cart in real time.

    When a customer’s quantity of the qualifying product crosses the threshold, it automatically adds the free units as a separate cart line, tagged and priced at zero.

    BOGO free in cart for woocommerce

    Add more of the qualifying product and the free quantity recalculates upward.

    Remove some and it recalculates downward.

    Drop below the threshold entirely and the free item disappears on its own.

    None of this requires a coupon code, and none of it requires you to babysit the cart to make sure the math still holds after a customer changes their mind about quantity.

    The free line item is deliberately locked down: it can’t be removed independently of its parent item, and its quantity can’t be edited directly, since either would let a customer keep the free bonus while dropping the purchase that earned it.

    This holds true across both the classic WooCommerce cart and checkout shortcodes and the newer block-based checkout, so the experience doesn’t differ depending on which checkout your theme happens to use.

    The margin math on a BOGO deal

    Take a 20 dollar product with a 9 dollar cost, so 11 dollars margin at full price.

    A buy-one-get-one-free deal means a customer paying for one unit takes home two, so your effective revenue on the pair is 20 dollars against a combined cost of 18 dollars.

    It is a margin of 2 dollars across both units, or roughly 10% margin on the pair rather than the usual 55%.

    That’s a meaningful hit, and it only makes sense in specific situations: clearing inventory that’s tying up cash anyway, where even a thin margin beats an unsold unit sitting in a warehouse, or introducing a customer to a second product in your catalog, where the “cost” of the free unit is really a customer acquisition or cross-sell expense rather than a straightforward loss.

    Compare that to a buy-two-get-one-free structure on the same product: a customer paying for two units takes home three, so revenue of 40 dollars against a cost of 27 dollars, leaving 13 dollars margin across three units.

    It is a smaller percentage than full price, but a much gentler hit than the buy-one version, while still carrying the psychological punch of a free item.

    Where BOGO tends to work best

    Three situations come up again and again.

    Clearing overstocked inventory without permanently marking the price down, since a BOGO deal can be switched off the moment stock normalizes without leaving customers confused about why the “sale price” went back up.

    Introducing customers to a newer or secondary product by pairing it as the free item with a bestseller, which functions more as a sampling program than a discount.

    At the moment, this Buy X and Get Y for Free is not supported on the free version of the plugin.

    And short seasonal promotions where the simplicity of “buy one get one” outperforms a percentage that requires a moment of mental math to appreciate.

    Honest caveats

    BOGO deals are not mutually exclusive with price discounts in this plugin.

    A cart item can have its price reduced by one ruleset and still trigger a free item from a separate BOGO ruleset.

    That flexibility is useful, but it also means you should double check your rulesets aren’t accidentally combining in a way that gives away far more than intended.

    If two different BOGO rulesets could both apply to the same product, only the first one to apply wins.

    The plugin won’t stack two free-item promotions on the same item, but it also means you can’t rely on the “better” BOGO deal automatically winning the way price discounts do.

    If you’re running more than one BOGO promotion at a time, use the conditions box to keep them scoped to different products rather than letting them overlap and depend on evaluation order.

    At the moment, there’s also no built-in limit on how many free items a single customer can claim across multiple orders, and no start or end date scheduling.

    A BOGO ruleset runs until its status is manually switched off, so it’s worth putting a reminder somewhere to turn it off rather than relying on the plugin to expire it for you.

    Finally, be upfront with yourself about the accounting.

    A BOGO promotion is a real cost, not a marketing trick that pays for itself by magic.

    It works when the volume or exposure it generates is worth more to you than the margin given up on the free units, and that calculation is worth doing with real numbers before launching rather than after.

    RIACO Smart Quantity Discount is free to install from the WordPress plugin directory.

  • Automatic bundle discounts VS coupon codes: what actually converts

    Coupon codes are the default way most WooCommerce stores offer a discount, mostly because they are the default way WooCommerce makes it easy to offer one.

    You generate a code, announce it somewhere, and customers type it into a box at checkout.

    It is simple to set up, and it is also, if you look closely at how people actually shop, a surprisingly leaky way to convert intent into a completed sale.

    Everything that can go wrong with a coupon

    Think about the sequence a coupon requires. The customer has to:

    • know the code exists, usually from an email or a banner minutes or hours before checkout
    • remember it correctly
    • type it into a field that is easy to overlook entirely
    • have it actually apply to what is in their cart

    If they typo it, or the code has expired, or it does not apply to what’s in the cart, the moment usually just quietly fails.

    The customer does not always complain or ask for help, they just close the tab.

    Every one of those steps is a chance for the discount to never actually land, and for you to never even know it happened.

    What an automatic bundle discount removes

    An automatic bundle discount removes almost the entire sequence above.

    Instead of a code that has to be remembered and typed, the discount is tied directly to a specific combination of products.

    Frequently bought together settings in product

    When a shopper adds the full bundle you have configured, the discount appears as its own line item in the cart automatically.

    Frequently bought together in frontend woocommerce

    No code, no typing, nothing to enter wrong.

    The saving is visible exactly at the moment the shopper is deciding whether to add the second and third item, which is also the moment it can actually influence the decision.

    A coupon received by email two days earlier has usually been forgotten by the time someone is actually browsing the product page.

    Targeting matters more than the discount itself

    A storewide coupon discounts revenue you might have gotten anyway.

    The customer who was always going to buy the one item now gets a discount on it for free.

    A bundle discount only fires when the specific combination is complete.

    If the customer only wants the main product, they pay full price for it, exactly as they would have without any discount plugin installed.

    The saving only shows up when they add the products you actually wanted to sell together, which means it is far closer to being self-funding.

    It is a small share of the extra revenue the bundle brought in, not a markdown on revenue that already existed.

    Where coupons still make sense

    None of this is an argument against coupons generally.

    They are still genuinely useful for newsletter promotions, influencer codes, and one-off campaigns aimed at a specific audience.

    But for the specific job of encouraging a customer to add a complementary product they were already considering, an automatic discount tied to the bundle does the job with far less friction and far less waste.

    How it works in practice

    That is the mechanism behind the bundle discount feature in RIACO Frequently Bought Together for WooCommerce.

    In the product editor, you set a discount per product, either a percentage or a fixed amount.

    Frequently bought together settings in product

    It applies automatically as a clearly labeled Bundle Discount line in the cart the moment the full set is present.

    Remove one item from the bundle, and the discount is removed just as cleanly and immediately, with no leftover partial discount and no manual cleanup required.

    No code, no email, no typing required from the customer at all.

    Download the plugin for free on WordPress.org.

  • Why quantity discounts are the easiest way to raise your average order value

    If you run a WooCommerce store, you’ve probably spent more time than you’d like to admit staring at your average order value, wondering how to push it upward without cutting margins across the board.

    There’s a quieter, more effective lever than another sitewide sale: rewarding customers for buying more of what they already want.

    This post looks at why that works, when it doesn’t, and the actual math behind it.

    The problem with the tools most stores reach for first

    Sitewide sales and coupon codes are the default promotional tools for a reason: they’re easy to set up and easy to explain.

    But they both share the same weakness: they discount every transaction that happens while they’re active, including the ones that would have happened anyway at full price.

    Say you run a 15% off storewide sale for a weekend.

    Every customer who was already going to buy from you that weekend now pays 15% less, whether or not the discount changed their behavior at all.

    You’ve paid for a “promotion” that, for a large share of your buyers, was just a price cut with no new sales attached.

    Coupon codes have a second problem on top of that: once a code exists, it tends to leak onto deal-aggregator sites and browser extensions, and a portion of your full-price customers start automatically applying a discount you never intended for them.

    A quantity discount doesn’t have this problem in the same way, because it’s conditional on behavior, not on time or on knowing a code.

    Nobody gets the discount unless they actually buy more.

    Why buying more feels different from being given a discount

    There’s a real psychological difference between “here’s 15% off” and “buy three and the price per item drops.”.

    The first is passive, the customer receives a discount they didn’t do anything to earn.

    The second is active, the customer makes a choice, sees the math work in their favor, and feels like they found a smart deal rather than accepted a handout.

    This is the same mechanism behind bulk pricing at wholesale clubs and the “buy a case, save per bottle” signage you see in any wine shop.

    Nobody needs it explained to them.

    The moment a customer sees that the third unit is cheaper per item than the first two, the mental question flips from “do I need three of these” to “am I really going to pay more per item just to buy two.”

    That reframing is worth more than the discount percentage itself.

    The margin math, worked through

    It helps to see actual numbers rather than just the theory.

    Imagine a candle that sells for 18 dollars with a landed cost of 7 dollars, so you’re clearing 11 dollars of margin per unit at full price.

    A sitewide 15% off sale drops the price to 15.30, cutting your margin to 8.30 per unit.

    It is a loss of 2.70 on every single sale, including the ones that would have happened without any promotion at all.

    If you’d normally sell 100 candles that weekend anyway, that’s 270 dollars of margin given away for free before the promotion has generated a single incremental sale.

    Now compare a tiered quantity rule: buy 1 or 2 at full price, buy 3 or more and get 10% off each one.

    A customer who was only ever going to buy one candle still pays full price, you haven’t given away anything on that transaction.

    The discount only activates the moment someone decides to buy a third candle, at which point each one drops to 16.20, a margin of 9.20.

    You’re still profitable on every unit, and the “cost” of the promotion only exists on the incremental units that the promotion itself likely caused someone to buy.

    You’re not discounting the sale you already had.

    You’re spending a little margin to create a bigger sale that wouldn’t have existed otherwise.

    Where the tiers actually live

    RIACO Smart Quantity Discount builds this structure directly into WooCommerce through a discount type called quantity discount, where you define tiers: a minimum quantity, an optional maximum, and a percentage or fixed amount off.

    quantity discount for woocommerce

    The plugin calculates from each product’s actual baseline price, meaning it respects an existing WooCommerce sale price rather than fighting it.

    It only ever applies a tier if the resulting price is better for the customer than whatever is already showing.

    It means you can turn a tier on without first auditing every product to make sure you’re not accidentally overriding a bigger promotion or an admin-set sale price elsewhere.

    frontend table to display discount by quantity

    Honest caveats: when this approach doesn’t help

    Quantity discounts aren’t a universal fix, and it’s worth being upfront about where they fall flat.

    They don’t do anything for genuinely one-time purchases.

    Nobody buys three mattresses or three sofas, so a tiered structure on big-ticket, single-use items just sits there unused.

    They also strain on low-margin products, where even a modest per-unit discount can erase most of the profit on the incremental units.

    If your margin per candle were 2 dollars instead of 11, a 10% discount might not leave you with anything worth having.

    And if your product has a high per-unit shipping cost relative to its price, a customer buying three to “save” on the item price may find the saving mostly eaten by shipping anyway, which undercuts the whole pitch.

    There’s also a mechanical caveat worth knowing: the plugin doesn’t have built-in start and end date scheduling for rulesets.

    A promotion runs for as long as its status is set to active, which means time-boxed sales need someone to manually flip the ruleset off when the promotion ends, rather than it expiring on its own.

    Finally, be a little careful about training your own customers.

    If every product on your site always has a “buy more, save more” tier available, you risk teaching people to never buy your entry quantity at full price, which slowly erodes the baseline you’re discounting from in the first place.

    It tends to work best on a deliberate subset of your catalog rather than applied indiscriminately everywhere.

    A simple framework for choosing your first rule

    Rather than guessing at tiers, look at your own order history first.

    Pull up past orders for a genuinely repeat-purchase product and see what quantity people already tend to buy on their own.

    If most customers already buy 2 at a time, don’t set your first tier at 2, you’d be discounting behavior that was already happening for free.

    Set the first tier just above that natural quantity, say 3 or 4, so the discount is specifically incentivizing the next increment rather than rewarding what people were doing anyway.

    That one adjustment is usually the difference between a rule that changes buying behavior and one that just quietly reduces your margin on sales you already had.

    Riaco Smart Quantity Discount is free and available on the WordPress plugin directory: https://wordpress.org/plugins/riaco-smart-quantity-discount/

  • Why average order value matters more than traffic

    Most WooCommerce store owners spend their energy chasing traffic.

    More ads, more SEO, more email campaigns, more social posts.

    All of that is worthwhile, but it treats the symptom rather than the opportunity sitting right in front of you: the customers who are already on your site, cart in hand, ready to buy.

    Average order value is the quiet lever nobody pulls, and it’s usually the fastest one to move.

    The traffic trap

    There’s a reason traffic gets all the attention. It’s visible.

    You can watch a campaign spend money and watch visitors arrive in real time, and that feedback loop feels productive even when the return is shrinking.

    Cost per click has been climbing across most ad platforms for years, and organic reach on social channels keeps getting squeezed by algorithm changes you don’t control.

    Every new visitor you acquire this way has to individually justify its cost, and that math gets harder every quarter.

    Average order value AOV doesn’t work like that.

    It isn’t a channel you pay into, it’s a property of how your store converts the traffic you already have.

    Improve it once, and every visitor from every channel becomes worth more, permanently, without an extra cent of ad spend.

    It’s the rare improvement that pays back on money you’ve already spent.

    Doing the math on AOV

    It helps to see the numbers side by side.

    Say your store does 1,000 orders a month at a $45 average order value, $45,000 in monthly revenue.

    If you raise that average to $55, the same 1,000 orders now bring in $55,000.

    That’s an extra $10,000 a month without a single additional visitor, ad dollar, or email send.

    Now compare that to the alternative: to get the same $10,000 increase purely through more traffic, at an unchanged conversion rate and AOV, you’d need to grow visits by roughly 22 percent.

    Depending on your channel mix, that could mean a meaningfully higher ad budget, months of additional SEO work, or a content calendar you don’t currently have the bandwidth for.

    AOV growth and traffic growth aren’t mutually exclusive, but AOV is the one you can start improving this week with the store you already have.

    Why forced upsells backfire

    The instinct, once a store owner decides to chase AOV, is often to reach for pressure: pop-ups on exit intent, countdown timers, a “recommended for you” section that’s really just your five bestsellers glued onto every product page regardless of relevance.

    These tactics can produce a short-term bump, but they carry a cost that doesn’t show up in the same week’s numbers: they train customers to distrust your recommendations.

    Once someone learns that your “customers also bought” section is generic filler, they stop reading it, and you’ve burned a piece of real estate that could have been genuinely useful.

    Relevance is what makes an upsell feel helpful instead of like friction.

    A recommendation that reflects what people actually buy together, a shipping goal that’s mathematically accurate, a bundle priced honestly.

    These don’t need pressure tactics to work, because they’re solving a real decision the customer already has in front of them.

    Three honest mechanisms

    RIACO Revenue Lift for WooCommerce approaches AOV from three separate angles that don’t depend on discounting your way to a bigger basket or manufacturing urgency.

    Frequently bought together, grounded in real orders

    Instead of a manually assigned “related products” field that someone filled in once and forgot about, the FBT widget analyzes your actual WooCommerce order history to find products that get purchased together with real frequency.

    It shows up at the moment a customer is deciding on one item and arguably the best moment to suggest a second.

    A shipping goal customers can actually see

    The cart progress bar reads your live WooCommerce shipping zone configuration and shows customers exactly how far they are from a free shipping threshold that already exists in your settings.

    It’s not a marketing gimmick layered on top.

    It’s an accurate reflection of a policy you already have, made visible at the moment it matters most.

    Bundles that remove a decision

    Packaging complementary products together, with an optional discount, turns “do I also need this?” into an easy yes.

    It works at an earlier stage than the other two.

    So it is in product discovery phase rather than checkout, and it’s entirely something you control rather than something the algorithm infers.

    Where to find your current baseline

    Before changing anything, it’s worth knowing where you stand. WooCommerce’s built-in Analytics section (Analytics → Overview in your admin sidebar) shows an “Average order value” figure for any date range you select.

    Note that number down before you enable anything new, and check back on it a few weeks later using the same date-range comparison. It’s the simplest before-and-after measurement available, and it doesn’t require any third-party analytics tool.

    A note on patience

    None of these mechanisms are instant.

    The FBT widget in particular gets more accurate as your order history grows.

    A brand new store with a handful of sales won’t have much of a co-purchase pattern yet, and that’s expected rather than a misconfiguration.

    The progress bar and bundles work from day one since they don’t depend on accumulated data.

    Give the combination a few weeks of real traffic before judging the result, and compare against the baseline you noted rather than against a specific target percentage nobody can promise in advance.

    Getting started

    If you’re running a WooCommerce store and haven’t looked at your average order value in a while, that’s the number worth watching before you spend another dollar on traffic.

    RIACO Revenue Lift for WooCommerce is free and available on the WordPress.org repository.

  • What Is a Frequently Bought Together widget, and why your WooCommerce store needs one

    If you have ever bought anything on Amazon, you already know the pattern even if you never learned its name.

    You look at a camera, and right underneath it there is a small row of products: a memory card, a case, an extra battery.

    You did not go looking for those things.

    They found you at exactly the moment you were already reaching for your wallet.

    That row has a name in the ecommerce world: Frequently Bought Together.

    frequently bought together amazon

    It is one of the oldest tricks in online retail, and it still works because it is not really a trick at all.

    It is just a good store clerk doing their job well.

    A good clerk in a physical shop would mention the matching item, the accessory, the thing that makes what you are already buying better.

    The widget is the digital version of that clerk, except it never gets tired, never has an off day, and shows up on every single product page.

    The gap in WooCommerce

    WooCommerce does not include this out of the box.

    There is a “related products” or “cross sell products” block, but it is generated automatically from categories and tags, which means it often shows things that have nothing to do with what the customer actually needs.

    A phone case next to a phone from a different product line, or an accessory that does not even fit.

    That gap between “generic related items” and “the specific thing that actually goes with this product” is exactly what a Frequently Bought Together plugin is meant to fill.

    How the widget actually works

    From the shopper’s side

    On a product page, the widget displays a small box with the current product and one or more companion products you have chosen, each with an image, a price, and a checkbox.

    Frequently bought together in frontend woocommerce

    The shopper ticks the ones they want and adds everything to the cart in a single click, watching the total update in real time as they do.

    There is no separate trip to another product page, no re-adding to cart, no lost momentum.

    The decision happens right there, in the same window where the shopper was already deciding to buy.

    From the store owner’s side

    You are not handing this decision over to an algorithm.

    In the product editor, you search for and select the specific companion products for each item.

    Frequently bought together settings in product

    The phone case that fits this phone, the filter that fits this coffee machine, the strap that fits this watch.

    That precision is what turns a passive suggestion into an actual sale, because nothing shown to the customer is a guess.

    Curated beats generic, every time

    The reason curated pairing outperforms an automatic “related products” block comes down to trust.

    The first time a shopper sees an obviously wrong suggestion they stop paying attention to the whole section.

    A widget built from deliberate, manual pairings never has that problem, because every product in it was chosen by someone who actually knows the catalog.

    Getting Started

    I built RIACO Frequently Bought Together for WooCommerce around this idea from the ground up.

    It lets you pick the companion products for each item in your catalog, choose where the widget appears on the page, and optionally set up an automatic bundle discount so the whole set becomes a small deal in itself.

    The plugin is free, works with Storefront WooCommerce theme and newer WordPress theme, and is fully compatible with WooCommerce’s High-Performance Order Storage (HPOS).

    If you want to place the widget somewhere other than the standard product page, the plugin also ships with a simple shortcode:

    [fbtwoo_form product_id="42"]

    If you have never added anything like this to your store, it is worth trying on just a handful of your best-selling products first.

    Pick the pairings you already know make sense, the things customers ask about together, or the things you would recommend yourself if someone asked you in person.

    That is really all a Frequently Bought Together widget is: the recommendation you would already give, shown at the right moment.

  • How shipping rules reduce cart abandonment in WooCommerce

    Usually users who abandon checkout think costs that were too high and shipping is almost always the culprit.

    The answer isn’t free shipping across the board.

    That kills your margins.

    The answer is proportional shipping fees that feel fair based on what’s in the cart.

    Why “surprise” shipping fees drive abandonment

    Customers don’t abandon carts because shipping costs money (if they are reasonable).

    They abandon carts because the fee feels arbitrary.

    A $12 surcharge on a 15 kg order feels reasonable.

    The same $12 on a 200 g item does not.

    When the shipping fee doesn’t match the order, trust breaks and the customer leaves.

    Three strategies that work

    I suggest you three strategies that could work for you.

    Strategy 1: reward larger orders

    Use cart total conditions to scale fees inversely with order value:

    • Cart total < $50 then standard fee applies
    • Cart total ≥ $100 then no extra fee (or free shipping via a separate method)

    Customers who are close to the threshold add more to reach it.

    You get higher average order value and fewer abandoned carts on large orders.

    Strategy 2: keep small orders affordable

    Weight-based surcharges on heavy items feel justified, as long as lightweight orders aren’t penalized.

    Configure:

    • Cart weight ≤ 2 kg → no extra fee
    • Cart weight > 2 kg, ≤ 5 kg → +$5.00
    • Cart weight > 5 kg → +$10.00

    Small orders stay cheap. Heavy orders carry their cost. That’s reasonable, or not?

    Strategy 3: transparent bulk surcharges

    For stores that sell in bulk, item count conditions make fees predictable:

    • 1–10 items → no surcharge
    • 11–25 items → +$5.00
    • 26+ items → +$12.00
    woocommerce shipping based on items count in cart

    Customers ordering in bulk understand the fee because it scales with quantity.

    That’s the key, predictable feels fair.

    How to set this up in WooCommerce

    I have developed a free Advanced Shipping Rules for WooCommerce plugin handles all three strategies above.

    1. Install from wordpress.org/plugins/advanced-shipping-rules-for-woocommerce
    2. Go to WooCommerce → Settings → Shipping, open your zone
    3. Add Advanced Shipping Rules as a method
    shipping zones advanced
    1. Define a group for each rule, each group has conditions (AND logic) and a cost

    Multiple groups work with OR logic: if any group matches, its cost applies. The highest matching cost wins.

    Don’t forget the checkout UX

    Rules alone aren’t enough. Make your shipping strategy visible:

    • Use WooCommerce’s cart shipping estimator to show costs before checkout
    • Label your method clearly: “Standard Shipping (weight-based)” sets honest expectations
    • If you offer free shipping above a threshold, show progress in the cart (“Add $X more for free shipping”). You can use my plugin RIACO Revenue Lift to do this.

    The combination of proportional rules and transparent communication is what actually moves the needle on abandonment.

    Conclusion

    Cart abandonment due to shipping is largely a fairness problem, not a price problem.

    When fees scale with what’s in the cart, customers complete their purchase.

    Install the free plugin from WordPress.org

  • HPOS in WooCommerce: what it means for your shipping plugins

    If you’ve been following WooCommerce development, you’ve heard about HPOS, High-Performance Order Storage.

    It’s one of the most significant changes WooCommerce has made in recent years, and it affects which plugins work safely on your store.

    Here’s what you need to know, and how to verify your shipping setup is compatible.

    What HPOS is

    Historically, WooCommerce stored order data in WordPress’s wp_posts and wp_postmeta tables.

    That tables are designed for blog content, not transactional data.

    As stores scaled, this caused performance problems.

    HPOS moves order data into dedicated database tables (wc_orders, wc_order_items, etc.) built specifically for eCommerce.

    The result:

    • Faster order queries.
    • Better database performance at scale.
    • Cleaner separation between content and commerce data.

    WooCommerce introduced it as an optional feature and has been pushing stores to adopt it.

    On new WooCommerce installations it’s now enabled by default.

    Why shipping plugins are affected

    Shipping plugins interact with WooCommerce at a low level as they hook into order processing and read cart data.

    Plugins that query order data directly using old wp_posts-based queries can break or return wrong results when HPOS is active.

    Specifically, a poorly written plugin might:

    • Query wp_posts for order history and fail to find orders in the new tables.
    • Use internal WC_Order methods that changed behavior under HPOS.
    • Store metadata in ways that don’t survive an HPOS migration

    The safe approach is to use official WooCommerce APIs, and declare HPOS compatibility explicitly.

    Advanced Shipping Rules for WooCommerce is fully HPOS compatible

    My plugin Advanced Shipping Rules for WooCommerce is explicitly HPOS-compatible.

    It stores all rule data in custom post types (asrfwoo_group, asrfwoo_condition) and WordPress options, neither of which is affected by HPOS.

    It never queries wp_posts for order data and uses only WooCommerce’s official shipping method API (WC_Shipping_Method).

    You can enable HPOS on your store or it may already be enabled, without any conflict with this plugin.

    How to check HPOS status on your store

    1. Go to WooCommerce → Settings → Advanced.
    2. Click the Features tab.
    3. Look for “High-Performance Order Storage”.
    wocoomerce hpos

    If it’s listed and enabled, your store is running HPOS.

    You can also run a plugins compatibility check: WooCommerce → Status → Tools → Run HPOS compatibility checker.

    This flags any installed plugins that are not yet compatible.

    What to do if a plugin isn’t compatible

    If the checker flags your current shipping plugin:

    • Check if an update is available, many authors have added HPOS support recently.
    • Look for an alternative that’s already compatible.
    • If you must keep it temporarily, WooCommerce offers a compatibility mode that writes data to both storage systems, but this has a performance cost and is not a long-term solution. You can find it at WooCommerce → Settings → Advanced Features tab
    enable compatability mode woocommerce

    Choosing HPOS-compatible plugins going forward

    When evaluating any new plugin, you should look for the HPOS compatibility declaration on the WordPress.org listing.

    Try to check the changelog for HPOS-related entries, and prefer plugins that use official WooCommerce APIs rather than direct database queries.

    WooCommerce’s direction is clear.

    Stores that haven’t migrated to HPOS will need to eventually.

    Auditing your plugin stack now saves problems later.

    Conclusion

    HPOS compatibility isn’t just a technical checkbox.

    It’s a signal that a plugin is maintained, uses modern WooCommerce APIs, and won’t break as the platform evolves.

    Advanced Shipping Rules for WooCommerce is fully HPOS-compatible and free.

  • WooCommerce shipping for Food and grocery stores

    Shipping for food eCommerce is tricky. A bag of coffee weighs 250 g. A box of canned tomatoes weighs 6 kg. A gift hamper might hit 10 kg.

    Your carrier charges very differently for each but if you’re using a flat rate, your customers all pay the same.

    Here’s how to set up weight-based shipping that actually works for a food or grocery store.

    The specific challenges

    Wide weight variance

    Food products span a huge range.

    A flat rate will always be wrong for some orders.

    Unpredictable basket composition

    One customer buys 20 lightweight snacks.

    Another buys 3 heavy pantry items.

    Item count alone isn’t a reliable signal.

    Price sensitivity

    Grocery shoppers compare prices.

    A $7 shipping fee on a $15 order can kill the sale.

    Recommended weight brackets

    The following setup covers most food store scenarios.

    Each bracket is a separate rule group in my free plugin Advanced Shipping Rules for WooCommerce plugin.

    Tier 1: light (under 2 kg)

    Small orders — snacks, condiments, single bags of coffee.

    • Cart weight ≤ 2 kg → $4.00
    weight less than 2 shipping 4 woocommerce

    Tier 2: medium (2–6 kg)

    Typical pantry restock like pasta, canned goods, sauces.

    • Cart weight > 2 kg AND ≤ 6 kg → $8.00
    cart weight greater than 2 and less than 6

    Tier 3: heavy (6–12 kg)

    Full grocery runs or orders including staples like flour, rice, oil.

    • Cart weight > 6 kg AND ≤ 12 kg → $13.00
    from 6 to 12 cart weight woocommerce

    Tier 4: bulk (over 12 kg)

    Wholesale or very large orders.

    • Cart weight > 12 kg → $20.00
    cart weight greater than 12

    Bonus: reward high-value orders

    Add a cart-total condition to incentivize larger baskets:

    • Cart total > $120 → no shipping surcharge (or reduced fee)

    Combined with a visible “Spend $120 for free shipping” cart message, this consistently increases average order value.

    How to set this up

    Install the free Advanced Shipping Rules for WooCommerce plugin: wordpress.org/plugins/advanced-shipping-rules-for-woocommerce

    Then:

    1. Go to WooCommerce → Settings → Shipping
    2. Click your zone → Add Shipping Method → Advanced Shipping Rules
    shipping zones advanced
    1. Click Edit on the new method
    2. Create one group per bracket
    advanced shipping rules group
    1. Add the conditions and cost to each group
    2. Save

    Each group fires independently. The one that matches with the highest cost wins.

    Important: set product weights

    Weight-based rules only work if every product has a weight entered.

    So you need to check if your products have weight already set in WooCommerce admin:

    1. Go to Products → All Products, edit each item
    2. Under Product Data, click the Shipping tab
    3. Enter the weight
    set Weight for product in woocommerce

    For variable products (250 g vs. 500 g variants), each variation can have its own weight.

    WooCommerce handles the cart calculation correctly.

    Gift hampers and bundles

    For pre-made bundles, set the weight to the total packaged weight including packaging, not just the product contents.

    This ensures the rule fires correctly for what’s actually being shipped.

    Conclusion

    Food stores have more to gain from weight-based shipping than almost any other category.

    The weight variance is high, customer price sensitivity is real, and the right fee at the right order size makes checkout feel fair.

    Download the free plugin from WordPress.org.

  • WooCommerce Conditional Shipping for Beginners with plugin

    Default WooCommerce shipping charges every customer the same amount regardless of what they ordered.

    This works when you’re starting out, but it quickly becomes a problem as your catalog grows.

    Why flat rate isn’t enough

    Flat rates create two recurring problems:

    • You lose money on heavy or large orders because the flat rate doesn’t cover carrier costs.
    • You overcharge on small orders, which pushes customers to abandon their cart.

    Conditional shipping can solve both.

    Conditional shipping

    For conditional shipping I mean that the fee changes automatically based on what’s in the cart.

    You can implement it on your store using a free plugin I developed and a few minutes of configuration.

    Three concepts to understand first

    In order to use my plugin, you need to understand these simple terms:

    Condition
    A single rule that checks something about the cart.

    For example: “Cart weight is more than 5 kg” or “Number of products is more than 10.”

    Group
    A collection of conditions that must ALL be true at the same time.

    Think of it as an AND statement, if all conditions in the group match, the group fires.

    Multiple groups
    You can have several groups. If ANY group matches, its cost is applied.

    Think of groups as OR statements.

    When more than one group matches, the highest cost wins.

    My plugin: Advanced Shipping Rules for WooCommerce

    It’s free, no subscription, no account required.

    Install it from WordPress.org as usual.

    Your first rule

    1. Install the plugin

    Go to Plugins → Add New, search for Advanced Shipping Rules for WooCommerce, install and activate.

    2. Open your shipping zone

    Go to WooCommerce → Settings → Shipping and click on your zone.

    3. Add the shipping method

    shipping zones advanced

    Click Add Shipping Method, choose Advanced Shipping Rules for WooCommerce, confirm.

    Click Edit on the new method.

    4. Create a group

    Click Add Group. A new block appears with an Add Condition button.

    5. Set your condition

    Click Add Condition. A row appears with four fields:

    • Type: choose “Cart Weight”
    • Operator: choose “Greater than”
    • Value: type 5 (for 5 kg)
    • Cost: type 8 (for an $8 surcharge)
    cart weight over 5 kg

    This means: if the cart weighs more than 5 kg, add $8 to shipping.

    6. Save and test

    Click Save Changes. Open your store in an incognito window, add a heavy product, and check that the surcharge appears at checkout.

    Common mistakes

    Products without weights set
    If product weights are empty, the cart weight is always 0 and weight rules never fire.

    Set weights under Products → Edit → Product Data → Shipping.

    Overlapping brackets
    When multiple groups match, the highest cost wins.

    Design your brackets without unintended overlap.

    Confusing AND with OR
    Conditions inside one group = AND (all must match).

    Multiple groups = OR (any can match).

    What to try next

    Once you’re comfortable with the basics:

    • Add a second group for a different weight bracket
    • Create a cart-total condition to reward large orders with lower fees
    • Combine weight AND item count in a single group for bulk order surcharges

    Conclusion

    Conditional shipping is one of the most useful changes you can make to a WooCommerce store.

    Few minutes of setup, permanent improvement to your shipping accuracy.

    Download the free plugin from WordPress.org