An order bump is a small one-click offer you show shoppers right before they pay. It is one of the fastest ways to raise your average order value without spending more on ads.
If you run a WooCommerce store, you can create an order bump for WooCommerce in two ways: a free plugin or a short code snippet.
Each one fits a different kind of store owner, and this guide walks through both. We checked the UpsellWP listing and WooCommerce’s own checkout hooks in October 2026 before updating it.
What Is an Order Bump?

An order bump is a marketing term for a small add-on offer you show a customer at checkout, right before they hit the pay button. It’s usually a related product, priced lower than the main item, and it takes one click to add.
Think about the last time you bought something online and saw a line that said: “Add this for just $5 more.” That’s an order bump.
It sits between the customer’s decision to buy and the moment they pay. The customer has already committed. Adding one more small item feels easy and not pushy.
An upsell is different. It usually offers a more expensive upgrade, often after checkout. An order bump is a cheap add-on shown during checkout. Our guide on order bump vs upsell compares the two in detail. If a customer buys running shoes, an order bump might offer socks or a shoe cleaning kit at a discount.
Why Add an Order Bump to Your WooCommerce Store?
You don’t need more traffic to make more money. You need to get more value out of the traffic you already have, and that’s exactly what an order bump does.
Here’s what it actually gets you:
- Higher average order value: Every accepted bump adds a few dollars to the order. Do that across hundreds of orders a month, and it adds up fast.
- A better shopping experience if you do it right: A relevant order bump feels like a helpful suggestion and not a sales pitch.
- A non-annoying sale: Nobody has to sit through a pop-up. It’s just a line item they can tick or skip.
- An easier yes on the add-on: The customer has already decided to buy something. You are adding to a decision they made and not asking them to make a new one.
- More repeat purchases over time: A well-chosen bump, like a refill pack or a companion product, builds customer lifetime value. It does more than increase one order.
Your acceptance rate depends mostly on how relevant the offer is. A bump that has nothing to do with the cart won’t convert no matter how good the design looks.
How to Create an Order Bump for WooCommerce
You can create an order bump for WooCommerce with a free plugin or with custom code. The free UpsellWP plugin needs no code and works from the WordPress dashboard. Custom code suits a store with a developer who wants full control over the offer and its checkbox.
Method 1: Using a Free Plugin
This method gets you a working order bump for free with UpsellWP. Unlike funnel builder tools, it does not make you build a whole checkout flow just to reach the bump. As of October 2026 its WordPress.org listing names checkout order bumps and block checkout support as free features.
- Go to Plugins > Add Plugin in your WordPress dashboard.

- Install and activate the UpsellWP plugin from the WordPress directory.

- Once installed, go to UpsellWP > Campaigns.

- Inside the Campaigns tab, click Create New Campaign.

- Then choose Checkout Upsell as the campaign type.

- Give the campaign a name and select Add Offer.

- Select the product you want to offer as the order bump.

- Customize the display text, discount and styling for the offer. Set purchase conditions if you only want the bump to show for specific products or cart totals.

- Click Save to confirm the changes.

- At last, click Save & Close to activate the campaign.

UpsellWP works well here because the order bump is its own campaign type and not a feature buried inside a funnel builder. If all you want is a bump without touching anything else on checkout, this is the easiest route.
Method 2: Using Custom Code
Custom code gives you full control over how the bump looks and behaves. It suits you if you are comfortable editing code or have a developer who is. There is no plugin to keep updated and no license to renew.
The snippet below adds a real checkbox above the Place order button on the classic checkout. Ticking it adds the bump product to the cart. Unticking it removes the product again, and the order total refreshes each time.
Add it with a code snippets plugin or in a child theme’s functions.php file. Replace 123 with the ID of your bump product:
// Order bump checkbox for the classic WooCommerce checkout.
// Replace 123 with the ID of the product you want to offer.
define( 'DD_BUMP_PRODUCT_ID', 123 );
// 1. Show the checkbox above the Place order button.
add_action( 'woocommerce_review_order_before_submit', 'dd_order_bump_checkbox' );
function dd_order_bump_checkbox() {
$product = wc_get_product( DD_BUMP_PRODUCT_ID );
if ( ! $product || ! $product->is_purchasable() || ! $product->is_in_stock() ) {
return;
}
$in_cart = (bool) WC()->cart->find_product_in_cart( WC()->cart->generate_cart_id( DD_BUMP_PRODUCT_ID ) );
echo '<p class="dd-order-bump"><label>';
echo '<input type="checkbox" name="dd_order_bump" value="1" ' . checked( $in_cart, true, false ) . '> ';
echo esc_html( 'Yes, add ' . $product->get_name() . ' for ' ) . wp_kses_post( $product->get_price_html() );
echo '</label></p>';
}
// 2. Add or remove the product each time the checkout refreshes.
add_action( 'woocommerce_checkout_update_order_review', 'dd_order_bump_toggle' );
function dd_order_bump_toggle( $post_data ) {
parse_str( $post_data, $data );
$item_key = WC()->cart->find_product_in_cart( WC()->cart->generate_cart_id( DD_BUMP_PRODUCT_ID ) );
if ( ! empty( $data['dd_order_bump'] ) && ! $item_key ) {
WC()->cart->add_to_cart( DD_BUMP_PRODUCT_ID );
} elseif ( empty( $data['dd_order_bump'] ) && $item_key ) {
WC()->cart->remove_cart_item( $item_key );
}
}
// 3. Refresh the checkout when the box is ticked or unticked.
add_action( 'wp_enqueue_scripts', 'dd_order_bump_script', 20 );
function dd_order_bump_script() {
if ( is_checkout() ) {
wp_add_inline_script(
'wc-checkout',
"jQuery( function( $ ) { $( 'form.checkout' ).on( 'change', 'input[name=\"dd_order_bump\"]', function() { $( document.body ).trigger( 'update_checkout' ); } ); } );"
);
}
}
The snippet uses two WooCommerce hooks. woocommerce_review_order_before_submit prints the checkbox inside the payment box. woocommerce_checkout_update_order_review reads the checkbox each time the checkout refreshes and adds or removes the product.
WooCommerce checks its own security nonce on that refresh request before the hook runs. The product ID is fixed in the code and the label is escaped before it prints. Test it on a staging copy before you add it to a live store.

These hooks belong to the classic shortcode checkout. Stores created since WooCommerce 8.3 get the Checkout block by default. WooCommerce’s blocks status page says extensions that add markup through hooks usually need extra work to support the blocks.
So check your checkout page first. If it holds the Checkout block, use UpsellWP or transform the block to Classic Shortcode in the page editor. WooCommerce’s docs recommend switching the Cart page back too.
If writing PHP isn’t something you or your team want to take on, that’s fine too. Our WooCommerce development service can build a custom order bump to your exact spec.
Which Method Should You Use?
Here’s the part most guides skip. There isn’t one “best” way to add an order bump. There’s a best way for your store. It comes down to three things: your budget, your comfort with code and how much control you want over the offer.
- Pick UpsellWP: Choose it if you want a free bump with no code. The bump is its own campaign type and there is no funnel to build first. It also supports the Checkout block.
- Pick custom code: Choose it if you have a developer on hand or want a bump that no plugin offers out of the box. The snippet in this guide needs the classic checkout.
Most stores start with a plugin. Developers, or store owners with very specific requirements, tend to land on custom code eventually anyway.
Is Your Order Bump HPOS Ready?
Quick gut check before you launch: is your store running WooCommerce’s High Performance Order Storage (HPOS)? If so, confirm your chosen order bump plugin or custom code declares HPOS compatibility. Most current plugins do, but older or less maintained ones sometimes don’t, and that mismatch can cause checkout errors that are hard to trace back to the actual cause.
The snippet above only works with WC()->cart and the checkout hooks. It never reads or writes order tables, and HPOS does not affect it. If you extend it to save order data, read our guide on making a WooCommerce plugin HPOS compatible first.
Getting the Offer and Price Right
A technically perfect order bump still won’t convert if the offer itself is off. Two things matter more than the plugin you pick.
- Price it right: Keep the bump price small next to the cart total. Once it nears the price of the main item, it stops feeling like a small add. It starts to feel like a second purchase decision, and that is what you want to avoid at checkout.
- Make it relevant: The single biggest factor in whether a bump converts is how well it matches what’s already in the cart. A phone case shown to someone buying a phone converts. The same case shown to someone buying a kettle doesn’t, no matter how good the discount is.
Monitor Performance and Adjust
Once your order bump for WooCommerce is live, don’t just leave it running. Check in on it regularly and tune it based on what you see.
Watch these numbers:
- Acceptance rate: What percent of customers add the bump?
- Extra revenue: How much is the bump adding to your monthly total?
- Complaints or confusion: Support tickets mentioning the checkout are a signal something’s off.
If few customers tick the box, swap the product before you touch anything else. A better matched offer is the cheapest change to test.
Conclusion
That’s the whole process to create an order bump for WooCommerce. Pick UpsellWP if you want a free bump set up from the dashboard with no code. Pick custom code if you want full control and your store runs the classic checkout.
Whichever path you take, start with one relevant offer at a small price. Watch the numbers for a few weeks and adjust from there.
Frequently Asked Questions (FAQs)
Q1. What is an order bump in WooCommerce?
An order bump is a small, related product offer shown to a customer during WooCommerce checkout, added to their order with a single click.
Q2. Why use an order bump for my store?
It raises average order value and adds a relevant, low-friction option right when the customer has already decided to buy.
Q3. What is the best plugin to make order bumps for WooCommerce?
There is no single best option for every store. This guide uses UpsellWP because its free version lists checkout order bumps and block checkout support as of October 2026. Pick the one that fits your budget and checkout type.
Q4. How do I select the right product for an order bump?
Choose something that complements the main purchase directly, like a case for a phone or a cleaning kit for shoes. Unrelated products rarely convert.
Q5. Can I customize the design of an order bump?
Yes. UpsellWP lets you change the display text, discount and styling of the offer. Custom code gives you full control over every part of it.
Q6. Does adding an order bump slow down my checkout?
Not if it is built well. A light plugin or a short function adds very little work to the checkout. The bigger risk is an outdated plugin that breaks the checkout with errors.
Q7. How many order bumps should I show at checkout?
Stick to one. A single, relevant offer keeps the decision easy. Stacking two or three bumps slows the customer down and tends to hurt acceptance on all of them.
Q8. Where on the checkout page should the order bump go?
Right above the payment button usually performs best, since it’s the last thing a customer sees before they commit. Still, it’s worth testing a couple of positions on your own store, since audiences don’t all behave the same way.
Q9. Do I need coding skills to add an order bump?
No. Not if you go the plugin route. UpsellWP and other plugins work entirely through the WordPress dashboard. Coding only comes into play if you want the custom PHP method or need behavior a plugin doesn’t offer out of the box.
Q10. What’s a realistic order bump acceptance rate to expect?
It varies a lot by store and by offer, and there is no single benchmark worth trusting. Track your own rate for a few weeks. If few customers tick the box, change the offer before you change the plugin.
