Cross-Sell with Discounts for WooCommerce

Description

Cross-Sell with Discounts for WooCommerce shows the right add-on products at the moment customers are ready to buy — in the mini-cart, on the cart page, and at checkout — with an optional automatic discount and a savings badge.

You decide which products are suggested and which category triggers them. As soon as a customer has a product from a trigger category in the cart, the matching cross-sell products appear as one-click suggestions. The discount applies automatically while a trigger product is in the cart, and disappears when it is removed — no coupon codes needed.

The plugin is theme-neutral: it uses the standard WooCommerce mini-cart hook and works with Storefront, Astra, Kadence and other common themes. For themes without a matching mini-cart hook (or block themes), a shortcode and a block are provided. Optional adapters keep full compatibility with the Flatsome theme and the WooFood plugin.

Key features

  • Category-based cross-sell suggestions — configure the trigger category per product.
  • Optional automatic discount per product (0–100 %), shown with a struck-through original price and a savings badge.
  • One-click “add to cart” without a page reload (AJAX), including in the block checkout (Store API).
  • Suggestions in the mini-cart, on the cart page, and at checkout — each location can be toggled on or off individually.
  • Three display layouts: a stacked list, a horizontal slider (swipe/drag, with dots or arrow controls), or a responsive grid with a per-location maximum column count and automatic card widths for any theme.
  • Grid image format — landscape 4:3, square 1:1, or portrait 3:4 (full-tile image with the title, price and controls overlaid), with overlay styles for the portrait format: soft gradient, frosted reveal-on-hover, or a solid bar with adjustable colour and opacity.
  • Optional quantity selector, an “add to cart” button with a custom label, icon, icon-only mode, and colour.
  • Per-page rule to hide suggestions once a cross-sell product is already in the cart.
  • A global heading above the suggestions, plus per-product short description, image, and link options.
  • Works with the classic and the block-based cart/checkout.
  • HPOS (High-Performance Order Storage) compatible.
  • Query result caching with automatic invalidation for fast mini-cart and checkout on large catalogs.
  • Diagnostics tab explaining why suggestions do (or do not) appear, with a preview simulation that never touches the live cart.

How the discount works

The discount is a price reduction on the cart item, not a WooCommerce coupon, so it combines cleanly with coupons. An active sale price stays the basis: the cross-sell discount is calculated from the lower of the regular and sale price and never undercuts the sale price.

Pro add-on

A separate Pro add-on adds role-based discounts: give individual user roles an extra discount on cross-sell products, configurable per role (percentage and “add” or “replace” mode), with optional per-product overrides. The free plugin works fully on its own; the Pro add-on is optional.

Screenshots

Blocks

This plugin provides 1 block.

  • Wccs Suggestions

Installation

  1. Upload the cross-sell-with-discounts-for-woocommerce folder to /wp-content/plugins/, or install it through the WordPress Plugins screen.
  2. Activate the plugin through the Plugins menu in WordPress. WooCommerce must be installed and active.
  3. Configure suggestions on two levels:
    • Per product (Cross-Selling tab in the product editor): enable the product as a suggestion, set an optional discount, priority, short description, and the trigger categories.
    • Per category (category editor): enable the category as a trigger and set how many suggestions it contributes.
  4. Set the global display under WooCommerce Cross-Sell: heading, button label/icon, display locations (mini-cart / cart / checkout), and performance/caching options.

FAQ

Does it work with my theme?

Yes. The plugin uses the standard WooCommerce mini-cart hook and works with common themes such as Storefront, Astra, and Kadence. For themes without a matching mini-cart hook or for block themes, use the [wccs_cross_sell] shortcode or the “Cross-Sell Suggestions” block. A dedicated adapter keeps full Flatsome compatibility.

Can I change how the suggestions look?

Yes. Under WooCommerce Cross-Sell Layout you can choose a stacked list, a horizontal slider (with dots or arrow controls), or a responsive grid. For the grid you set the maximum columns per location (mini-cart, cart, checkout) and an image format (landscape 4:3, square 1:1, or portrait 3:4); card widths are calculated automatically for your theme. You can also set the heading, the add-to-cart button label/icon/colour, and show or hide the quantity selector.

Does it support the block-based cart and checkout?

Yes. Suggestions are rendered after the checkout block (hydration-safe), and adding a product refreshes the Store API cart and totals without a page reload.

Is the discount a coupon?

No. It is a price reduction applied to the cart item, so it combines cleanly with WooCommerce coupons. A trigger product must be in the cart for the discount to apply.

What happens to my data when I uninstall?

Deleting the plugin (not just deactivating it) removes all of its data: the settings option, product metas, and category metas — multisite-wide. There are no custom tables or cron events.

Can I give specific user roles an extra discount?

That is provided by the optional Pro add-on (role-based discounts, per role, with per-product overrides). The free plugin does not include role discounts.

Reviews

August 31, 2026
The plugin does exactly what it promises. It’s easy to configure and perfect for both upselling and cross-selling.
Read all 1 review

Contributors & Developers

“Cross-Sell with Discounts for WooCommerce” is open source software. The following people have contributed to this plugin.

Contributors

“Cross-Sell with Discounts for WooCommerce” has been translated into 2 locales. Thank you to the translators for their contributions.

Translate “Cross-Sell with Discounts for WooCommerce” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.14.3

  • New: Option to hide WooCommerce’s own product suggestions — its “Cross-sells” (below the cart table) and “Related products” (on the single product page) — so only your Cross-Sell suggestions are shown. Works even with themes that render these directly (e.g. Flatsome); does not affect the WooCommerce block cart/checkout.
  • Fix: Cross-sell suggestion images in the mini-cart no longer flicker when the mini-cart re-renders after add-to-cart. Mini-cart thumbnails now load eagerly instead of lazily, so they paint instantly instead of blinking on the second cart-fragment refresh. Also applied to the added product’s line-item thumbnail.

1.14.2

  • Fix: In some themes the cross-sell cards could overlap other page elements (for example a mini-cart footer with the subtotal and buttons). The suggestions now form their own stacking context and stay contained — theme-neutral, no theme markup is touched.

1.14.1

  • New: Variable products can now be suggested as cross-sells without a broken button — they show a “Choose option” link to the product page (for selecting a variant) and a “from {lowest price}” price instead of a single variant’s price.
  • New: Separate “Button label for variable products” setting.
  • New: Card background color (with automatic text contrast) and a thin card border (solid / dashed / dotted) with an inline border color.
  • New: The grid on the cart page can now use up to 4 columns.
  • Improvement: CSS and JavaScript optimizations for the cross-sell suggestions.

1.14.0

  • New: “Grid” layout for cross-sell suggestions — responsive columns with a per-location maximum (mini-cart, cart, checkout). Card widths are calculated automatically for any theme width; a single suggestion fills the full width, and very narrow areas fall back to a compact horizontal card.
  • New: Image format for grid tiles — landscape 4:3, square 1:1, or portrait 3:4 (full-tile image with the title, price and controls overlaid).
  • New: Overlay style for the 3:4 format — soft gradient, frosted (reveal on hover, with a subtle image zoom), or a solid bar with adjustable color and opacity; text contrast is handled automatically.
  • New: Option to show or hide the quantity selector on each suggestion.
  • Improvement: CSS and JavaScript optimizations for the cross-sell suggestions.

1.13.3

  • New: “Slider” layout for cross-sell suggestions — a horizontal, swipeable and draggable row of cards.
  • New: Slider navigation — choose bullets (classic dots, short lines, or pill), side arrows, both, or swipe/drag only.
  • New: Optional background color for the “Add to cart” button, with automatic text contrast and hover shade.
  • Improved: CSS and JavaScript optimizations for the cross-sell suggestions.

1.13.2

  • New: The per-category “Max. suggestions” limit can now be set up to 20 (previously capped at 3).
  • Improved: Clearer settings labels and descriptions (cache suggestions, add-to-cart button, prefetch), with consistent “Cross-Sell suggestions” wording.

1.13.1

  • Redesigned the plugin settings screen with a modern, card-based layout that is easier to scan and visually consistent with the Pro add-on. No settings or behaviour changed.

1.13.0

  • Added two extension hooks for add-ons: wccs_after_heading (right after the suggestions heading) and wccs_item_badge (inside each suggestion card). They are used by the optional Pro add-on’s info badge and have no visible effect on their own.

1.12.0

  • Initial public release on WordPress.org.
  • Category-based cross-sell suggestions with optional per-product discount and savings badge.
  • Theme-neutral rendering with a shortcode and block; optional Flatsome and WooFood adapters.
  • Classic and block-based cart/checkout support; HPOS compatible.
  • Per-location display toggles (mini-cart / cart / checkout) and per-page “limit” rules.
  • Global heading, query caching with automatic invalidation, and a diagnostics tab.