Variation Upsells WooCommerce
August 7, 2025 · AI Conversations
Therefore e.g. for our Vitality CBD variable product, we are currently unable to up-sell any variation of this product as it comes in different 'dosages' and 'flavour' so the system does not allow us to select one in the back-end.
It would be good and beneficial if in the back-end, we are able to select and up-sell any variable product where we simply select the variation that is simply being up-sold.
woocommerce
However, there's a way to **enable variation-level upsells**, which requires a bit of customization.
—
### ✅ Problem
– In **WooCommerce**, product **upsells** (`_upsell_ids`) only accept product IDs — typically only for **simple products** or **variable parent products**.
– **Product variations** are stored as **children** of variable products and aren't available in the product selector UI.
—
### ✅ Solution
To allow selecting specific **product variations** as upsells:
—
#### 1. **Make variations appear in the Upsells selector dropdown**
Use a plugin or code snippet to **modify the product selector** in the back-end so you can choose variations.
##### Option A: Use a Plugin
Use a plugin like:
🔹 **“Product Variations as Simple Products for WooCommerce”**
This plugin makes variations behave like individual products and shows them in selectors.
Or:
🔹 **“WC Product Add-Ons Ultimate”** (premium, includes upsell improvements)
—
##### Option B: Custom Code to Modify Upsell Selector
Here’s a basic filter to allow variations to appear in the backend selectors (e.g., via the `select2` AJAX search):
add_filter( 'woocommerce_json_search_found_products', 'include_variations_in_upsells', 10, 2 );
function include_variations_in_upsells( $found_products, $term ) {
$args = array(
'post_type' => 'product_variation',
'posts_per_page' => 10,
's' => $term,
);
$variations = get_posts( $args );
foreach ( $variations as $variation ) {
$product = wc_get_product( $variation->ID );
if ( $product ) {
$label = wc_get_formatted_variation( $product, true, false, true );
$found_products[ $product->get_id() ] = $label;
}
}
return $found_products;
}
> This will make variations visible and selectable in WooCommerce search fields (like upsell product selectors). You may need to also adjust JS if you're using a custom admin interface.
—
#### 2. **Display Variation on Frontend**
If you attach a variation ID to the upsells, you must ensure it’s correctly handled on the product page (like adding the correct “Add to Cart” behavior).
WooCommerce generally hides variations in the catalog and doesn’t link directly to them. You may need to:
– Use a plugin like **“Show Single Variations”** (IconicWP).
– Or manually link to the parent product with pre-selected attributes (via URL parameters).
—
### ✅ Recommended Approach
If you want a **clean and supported** solution:
**🔧 Use this plugin**:
– [Iconic Show Single Variations](https://iconicwp.com/products/show-single-variations/)
– It allows **variation-level upsells**, shows them in the catalog, and makes them directly purchasable — no coding required.
—
### ✅ Summary
| Task | Approach |
|—————————–|————————————————|
| Select variation as upsell | Use plugin OR custom filter (above) |
| Show variation in catalog | Plugin like *Show Single Variations* |
| Add to cart for variation | Ensure variation is purchasable directly |
Would you like a code-ready setup or plugin recommendation based on your theme/setup (e.g., Flatsome, Astra, custom)?
—
### ✅ 1. [**Show Single Variations by Iconic**](https://iconicwp.com/products/show-single-variations/)
**⭐ Most Recommended**
This plugin does exactly what you need:
– Treats **variations as individual products**
– Allows **variation-level upsells**
– Shows them in the catalog/search/cart like simple products
– Works seamlessly with upsell and cross-sell sections
> **Price:** Paid (Starts at ~$79/year)
> **Why it's worth it:** Full compatibility with WooCommerce + auto add-to-cart functionality for variations.
—
### ✅ 2. [**WooCommerce Mix and Match Products**](https://woocommerce.com/products/woocommerce-mix-and-match-products/)
– Not exactly for upsells, but allows you to **group variations** and sell them as a package.
– Could be used creatively to upsell variations if you're creating grouped/mix bundles.
—
### ✅ 3. [**Product Bundles by WooCommerce**](https://woocommerce.com/products/product-bundles/)
– Lets you upsell **specific variations** inside a bundle.
– Customers can select variation-specific options as part of the bundle.
—
### ✅ 4. [**Smart Offers by StoreApps**](https://www.storeapps.org/product/smart-offers/)
– Adds **smart upsell offers**, **post-purchase offers**, and **targeted variation upsells**.
– More of a **sales funnel plugin**, but it gives you full control over which variation to upsell and when.
—
### ✅ Summary
| Plugin Name | Variation Upsells | Price | Notes |
|——————————-|——————-|———–|————————————–|
| **Show Single Variations** | ✅ Yes | Paid | Best option, variation becomes visible everywhere |
| Product Bundles | ✅ With logic | Paid | Variation as part of a bundle |
| Smart Offers | ✅ Advanced | Paid | Add upsell offers with variation |
—
### ✅ Free Option (Limited)
No **fully free plugin** reliably allows variation-level upsells like the paid ones, but you could try:
**[Variation Swatches for WooCommerce by CartFlows](https://wordpress.org/plugins/woo-variation-swatches/)** — Doesn’t give full upsell control, but improves how variations are displayed and may be paired with other logic.
—
Would you like me to help you set up “Show Single Variations” or suggest a workaround using code if you don’t want a paid plugin?
—
### ✅ Plugin: **Up‑Sells and Cross‑Sells for Variations**
– Developed by **HighAddons** and sold through WooCommerce Marketplace.
– Allows you to **select different upsells or cross-sells for each product variation**—e.g., upsell the 50 mg strawberry flavor to one set of products, and the 100 mg mint flavor to another citeturn0search0turn0search8.
– Once installed, you get **new Upsells/Cross‑Sells panels** within each variation’s edit screen. You can search and link whichever product you want citeturn0search1.
– On the frontend, when a user selects a variation, only the upsells/cross‑sells assigned to that variation will display—inline on the single product page and in the cart citeturn0search0.
—
### 📋 Key Features
– Variation-specific upsells and cross-sells
– Configure order, column count, labels for each section
– Option to fallback to parent product’s upsells if none are set at variation level citeturn0search0turn0search1
—
### 🚀 How to Install & Setup
1. Purchase "Up‑Sells and Cross‑Sells for Variations" from WooCommerce Marketplace.
2. Upload and activate via: `Plugins → Add New → Upload Plugin` citeturn0search1.
3. Go to any product variation under **Products → Your Variable Product → Variations tab**.
4. You’ll see new fields for **Upsells** and **Cross‑sells** on each variation. Search/select the specific products.
5. Save, and test the selection on the front end.
—
### ✅ Benefits for Your Use Case
– Lets you thumb-select *exactly* which variation gets upsold and to *which* products (e.g., 10 mg peppermint upsells versus 50 mg vanilla)
– Fully integrated: no need for custom code or confusing workarounds
– Seamless presentation on product pages and in the cart
—
**Bottom line:** This plugin solves your issue perfectly—letting you choose upsells at the variation level in the backend and displaying them conditionally on the front end.
Would you like help finding alternatives, or a walkthrough once you've installed it?