Varyo Product Bundles for WooCommerce
Varyo Product Bundles for WooCommerce
Description
Varyo Bundles lets WooCommerce stores create product bundles, quantity breaks, bulk discounts, and Buy One Get One (BOGO) offers on existing product pages. Customers choose a deal next to the add-to-cart button, including discounted quantities, free gifts, upsells, and companion products.
No separate bundle product type or duplicate catalog items are required. Create an offer once, target products or categories, and Varyo handles the storefront display, variation selection, cart pricing, and validation.
See Varyo in action
Create your first bundle offer in about two minutes:
Need help setting up an offer? Open “Need help?” in Varyo admin to start live chat or email us.
Three offer types
- Quantity Breaks: tiered discounts that reward buying more, such as “Buy 2, save 10%” and “Buy 3, save 15%”. Percentage off, fixed amount off, or a fixed total price per tier.
- Buy X Get Y: classic BOGO and beyond. Buy X items, get Y items free or discounted.
- Product Bundles: pair the main product with companion products at a bundle discount, in horizontal or vertical layout.
You choose the deal. Varyo handles the pricing, cart logic, and validation.
Guides
Free gifts and upsells on any offer
Attach a free gift (added automatically) or an opt-in discounted upsell to any deal bar, including variable products with an inline variation picker.
See the money it makes
The analytics dashboard shows views, orders, conversion rate, and added revenue, the extra money your offers generated, per offer and per month. You’ll know exactly whether a deal is working, not just that it exists.
Designed to look like part of your store
- Visual style controls for colors, borders, spacing, and badges. No CSS required.
- Live preview in the admin: see the exact widget, with real product prices and variation pickers, while you build the offer.
- Works with variable products end to end, with server-side validation of every selection.
It should look like part of your store, not another plugin bolted onto it.
Light enough to forget it’s there
- About four database queries per product page, flat, whether you run 5 offers or 100. Offers are batch-loaded and matched in memory, never queried one by one.
- Cart pricing computes in under a millisecond, even with many deals in the cart.
- The analytics dashboard reads pre-aggregated counters and never scans your orders table, so it’s as fast at 10,000 orders as at 10.
- No React app or render-blocking assets. Optional usage reporting is off until an administrator opts in.
- The admin support bubble offers live chat and email. Crisp chat loads only when you choose Start live chat; it never loads on your storefront. Email requests are sent only when you submit the form.
- No custom database tables. Everything lives in standard posts and meta, and uninstall can remove all offers, settings, and analytics (or keep your data, your choice). Order history is never touched.
Built the WordPress way
- Discounts are applied through WooCommerce’s own cart pricing hooks, so totals, taxes, and order emails are always consistent. There are no display-only price tricks.
- Compatible with the WooCommerce block Cart, Checkout, and Mini-Cart, and with HPOS (High-Performance Order Storage).
Requirements
WooCommerce 7.0 or newer must be installed and active.
Third-party libraries
Varyo Bundles includes Chart.js 4.5.1 under the MIT License for the analytics chart. Human-readable source is available at https://github.com/chartjs/Chart.js/tree/v4.5.1.
Installation
- In your WordPress admin, go to Plugins Add New and search for “Varyo Bundles”, or upload the ZIP via Plugins Add New Upload Plugin.
- Activate the plugin. WooCommerce must be active.
- Go to Varyo Bundles Add New, pick an offer type, choose the products or categories it applies to, and publish.
- Visit a targeted product page. The offer widget appears next to the add-to-cart button.
To show an offer elsewhere, place a WordPress Shortcode block inside a supported WooCommerce product add-to-cart form. Use [varyo_bundle] to show the highest-priority eligible offer, or copy [varyo_bundle offer_id="256"] from the offer editor or Bundle Offers list to choose a specific eligible offer. Varyo uses the containing form’s product, variation choices, quantity, and Add to cart button. A shortcode outside the form stays hidden.
Screenshots

Starter templates: pick a ready-made offer and publish it in a couple of minutes.

Quantity Breaks on a product page, with a tiered "buy more, save more" selector.

Analytics dashboard: views, orders, conversion rate, and added revenue per offer.

Offer editor with live preview: what you see is exactly what the storefront renders.

Quantity Breaks offer with a free gift attached.

Visual style controls: colors, borders, badges, spacing.

Product Bundle widget with companion products and variation pickers.

Discounts carried through cart, checkout, and order emails.

Product and category targeting with priority rules.
Faq
No. Varyo shows offer widgets on your existing product pages. Your catalog, inventory, and SKUs are untouched.
Yes. Add WooCommerce’s Single Product block to the homepage, edit its Add to Cart + Options area, and put a Shortcode block inside that area. Use [varyo_bundle] for the highest-priority eligible offer or [varyo_bundle offer_id="256"] for one published offer that targets the form’s product. Keep the Shortcode block inside the actual add-to-cart form; it can be below Add to cart. Classic WooCommerce product forms are also supported when the shortcode is rendered inside the form. The older product_id attribute still works when it matches the containing form. Product grids and featured-product elements that only link to a product page do not provide a purchase form. An unsupported form, an unpublished or bar-less offer, or an ineligible product leaves the selector hidden. Each form is handled independently. On the interactive Single Product block, submitting a selected bundle reloads the page through WooCommerce’s form handler so all bundle choices reach cart validation.
Pricing is applied through WooCommerce’s standard cart pricing hooks before totals are calculated, so the cart, checkout, taxes, order records, and emails all reflect the real discounted price.
Yes. WooCommerce coupons apply on top of the Varyo-discounted cart following WooCommerce’s normal rules. If you’d rather not stack them, restrict the coupon in WooCommerce’s coupon settings.
Yes. Quantity breaks, Buy X Get Y, bundles, and even gift/upsell add-ons support variable products with inline variation pickers.
Yes. The block Cart, Checkout, and Mini-Cart flows are supported, including quantity changes made inside the blocks.
Unlimited. Varyo Bundles does not restrict the number of active offers or drafts you can create.
No measurable impact. The widget adds about four database queries to a product page regardless of how many offers you run; cart pricing completes in under a millisecond; and analytics are stored as pre-aggregated counters, so nothing ever scans your orders table during normal browsing. You can verify all of this yourself with the Query Monitor plugin.
Varyo renders inside the standard WooCommerce add-to-cart form, which virtually all themes output.
No, subscription products are not supported.
Your call: a deactivation option lets you keep all Varyo data for a future reinstall. With full removal selected, uninstall deletes all bundle offers, their settings, analytics data, and plugin options. Historical Varyo metadata already attached to WooCommerce order items stays with those orders, so past order records remain intact for accounting and support. Varyo never deletes or modifies your WooCommerce orders.
Only after you choose Send request, Varyo sends the request type, the name and email shown in the form, your message, the optional store URL if you entered one, and the Varyo plugin version for support context. You can enter the store URL with or without https://; Varyo adds it when missing. The request is sent securely to Varyo and processed in Crisp so the Varyo team can reply by email. If you choose Start live chat, the admin page connects directly to Crisp, which processes the chat and may receive the admin page URL and connection details, including your IP address, and set a chat cookie. Chat uses an opaque per-admin, per-store session token; it does not automatically import earlier email conversations. Neither option is part of optional usage reporting. See the Varyo privacy policy and Crisp privacy policy.
Submit & deactivate sends the selected reason, optional text, Varyo version, and your keep-data-on-uninstall choice to Varyo. If usage sharing is already enabled, the feedback can be linked to its random installation reference. It does not turn on usage sharing. Skip & deactivate sends no survey data. For setup, display, bug, missing-feature, and other reasons, an optional follow-up section shows an editable administrator email and optional store URL. Its Varyo may contact me about this feedback choice starts checked; uncheck it before submitting to send feedback without those contact details. Contact details travel in a separate request, stay in a restricted private follow-up record for up to 12 months, and are not included in usage reports or the feedback table. Contact Varyo through its privacy policy to request access or deletion. The current checked default may not meet all consent requirements; review your choice before submitting. See the Varyo privacy policy.
Reviews
Changelog
1.0.9
- Add: Live chat in the Varyo admin “Need help?” bubble, with email as an alternative.
- Add: Optional price rounding for deal totals, with endings such as .99, .95, or .00.
- Fix: Savings text for percentage deals no longer shows values such as 15.02% for a 15% discount.
1.0.8
- Add: Bundle widget shortcodes.
- Fix: Support WooCommerce Single Product / Add to Cart + Options blocks.
- Fix: Keep bundle widgets responsive and block quantity controls in sync.
- Update: Deactivation feedback options.
- Fix: Accept store URLs without
https://in the support chat bubble and deactivation form. - Update: WooCommerce 11.1.2 compatibility.
1.0.7
- Fix: Improve support form delivery during slow connections and reduce duplicate requests during retries.
- Fix: Accept multilingual support messages and show when a prompt choice could not be saved.
- Fix: Keep the review reminder out of the way after asking for help and align the setup-help banner on narrow screens.
1.0.6
- Add: Optional usage sharing to help improve Varyo.
- Add: An in-admin support form, free first-offer setup guidance, and an optional honest WordPress.org review reminder after an offer has been published for seven days.
1.0.5
- Fix: Keep the deal you selected when two deals have the same quantity.
- Fix: Accept valid product variations for free gifts.
- Fix: Remove optional add-ons without removing the rest of the deal.
- Fix: Keep cart prices and items correct when quantities or variants change.
- Update: Tested with WooCommerce 11.1.2.
1.0.4
- Fix: Refresh the block Mini-Cart and respect its automatic drawer setting after a successful bundle addition.
1.0.3
- Fix: Keep WooCommerce quantities, qualifying QB/BXGY tiers, and cart quantities synchronized.
- Update: Resize variant slots with the purchase quantity while preserving existing selections.
1.0.2
- Fix: Limit each Free Gift cart line to its configured free quantity and charge excess units separately.
- Fix: Show the correct Product Bundle companion name immediately after adding it in the editor.
1.0.1
- Fix: Preserve decimal bundle prices such as 49.99 without rounding them to 50.00.
- Update: Improve decimal price entry for Product Bundle items.
- Fix: Show actual quantities in deal bar headings instead of placeholders such as {quantity}.
- Update: Add WordPress 7.1 compatibility and WooCommerce 11.0.1 testing.
1.0.0
- Add: Initial release of Varyo Bundles.
- Add: Quantity Breaks, Buy X Get Y deals, and Product Bundles.
- Add: Free gifts, upsells, deal-bar customization, and live previews.
- Add: Built-in offer analytics.
- Add: Variable-product, HPOS, and WooCommerce Cart and Checkout block support.