=== J Cart Upsell and Cross-sell for WooCommerce ===
Contributors: jakjako, ghlab
Donate link: https://www.buymeacoffee.com/Jakjako
Requires at least: 5.0
Tested up to: 6.8
Requires PHP: 7.1
Stable tag: 4.0.8
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Boost your WooCommerce with targeted upsells, cross-sells, gifts and a cool modal cart.
== Description ==
J Cart Upsell and Cross-sell is a WooCommerce plugin that boosts your sales trough a modern, customizable modal shopping cart.
See it in action on a demo website!
J Cart Upsell and Cross-sell Demo
= *NEW* =
Display upsells wherever you want with the *Upsells Shortcode*
= *NEW* =
Added integrations tab where you can enable integrations with popular plugins
- WPRocket
- WooCommerce Price Based on Country
- FOX – Currency Switcher Professional for WooCommerce
- CURCY – Multi Currency for WooCommerce
= *Multilanguage* =
J Cart Upsell and Cross-sell is fully compatible with WPML and Polylang
= *Product bundles* =
Compatible with WooCommerce Product Bundles, Easy Product Bundles for WooCommerce and WPC Product Bundles
= Multiple goals on the dynamic bar =
Now you can set multiple goals with the dynamic bar option
= Fully customizable =
Change colors, text and plugin behaviour with the plugin customization backend.
= Upsells =
Show to your customers targeted upsell, directly in their modal cart or in the checkout recap table, with customized text.
Choose and customize the conditions that trigger the upsell ( premium only ):
- products categories and/or attributes
- a defined list of products
and add filters like ( free and premium ):
- only if user is logged in
- only if cart has subotal greater than
= Gifts =
Give to your customers dedicated gifts when their cart meet defined conditions.
Choose and customize the conditions that trigger the gift ( premium only ):
- products categories and/or attributes
- a defined list of products
and add filters like ( free and premium ):
- only if user is logged in
- only if cart has subotal greater than
Add a label to the archive page's products that can trigger a gift
Add a customized text on the single product page that can trigger a gift
= Dynamic Bar =
Set a goal and display on top of the modal cart a dynamic bar synchronized to the cart total
**Example 1:** set the dynamic bar goal at the same amount of your free shipping limit and let the customers know how much they need before getting that
**Example 2:** give a gift at 150 and set the dynamic bar goal to the same amount, to encourage customers to purchase more
= Premium Version =
Premium version offers more versatility about your gifts and upsells.
**Checkout upsells**
You can show your upsells directly in the checkout page
**Gifts by coupon code**
Trigger a gift only if a certain coupon code is applied to the customer's cart
**Advanced conditions**
Create mixed and advanced conditions to trigger your upsells and/or your gifts
**Backoffice order recap helpers**
Add a column on your orders backoffice tabs that shows if the order has been pumped
= Template overrides =
You can override template files coping the template folder inside the plugin into your child theme and renaming it from templates to **wc-j-upsellator**.
= Hooks ( actions and filters ) =
`add_filter('wjufw_shipping_bar_limit', function( $limit ){
// manipulate the dynamic bar limit and return it
// return type: float or integer
return $limit;
}, 999, 1 );`
`add_filter('wjufw_product_cart_limit', function( $limit, $product ){
// manipulate the cart limit for a specific gifted/upselled product
// return type: float or integer
return $limit;
}, 999, 2 );`
`add_action('wjufw_before_single_product_gift_text', function( $product_id ){
// do something **before** gift text ( if set ), on the single product page
}, 999, 1 );`
`add_action('wjufw_after_single_product_gift_text', function( $product_id ){
// do something **after** gift text ( if set ), on the single product page
}, 999, 1 );`
`apply_filters('wjufw_cart_item_name', function( $product->get_name(), $product, $product['key'] ){
// this filter is like the woocommerce one ( woocommerce_cart_item_name ):
// you can alter how the cart item name is displayed on the modal cart
}, 999, 1 );`
`apply_filters('wjufw_dynamic_bar_display', function(){
// accepts true or false as return
// true - dynamic bar displayed as usual
// false - dynamic bar removed
} );`
**Cover image credits**
Designed by pikisuperstar / Freepik
**Contribute and credits**
J Cart Upsell and Cross-sell for WooCommerce is developed and mantained by GH S.R.L.
= Support =
* For the free version of the plugin, use the official forum or mail directly the author trough the **Mail the author** button.
* All premium products include premium support.
== Installation ==
**Minimum Requirements**
* PHP 7.1 or higher
* MySQL 5.6 or higher
J Cart Upsell and Cross-sell for WooCommerce can be installed directly through your WordPress Plugin Board.
* Click "Add New" and search for "J Cart Upsell and Cross-sell for WooCommerce".
* **Install and activate.**
Alternatively you can download the plugin using the download button on this page and then upload the "wc-j-upsellator" folder to the / wp-content / plugins / directory then activate through the WordPress plugins page.
== Screenshots ==
1. J Cart Upsell and Cross-sell for WooCommerce with carousel and logo
2. Checkout Upsell
3. J Cart Upsell and Cross-sell for WooCommerce without logo
4. J Cart Upsell and Cross-sell for WooCommerce admin options
== Frequently Asked Questions ==
= Do i need to enable something? =
In order to let *J Cart Upsell and Cross-sell for WooCommerce** work properly, be sure to enable the "Activate the Ajax add to cart buttons" in the WooCommerce -> Settings -> Products tab
= Can i use the plugin without purchasing the premium version? =
Yes, you can use **J Cart Upsell and Cross-sell for WooCommerce** without purchasing the premium version.
= Can i have multiple upsells triggered by single product? =
You can choose between standard mode, stacked and carousel.
With the standard mode, only **one upsell at time** is offered to the customer.
If the customer accepts that upsell, he will see the next one in the priority list.
However, you can play with the priority order of **J Cart Upsell and Cross-sell for WooCommerce**: an upsell by product list is stronger than one by category/attribute list that is stronger than one triggered by cart limit.
With **stacked** you can display how many upsells at the same time as you wish, stacked on eachother.
With **carousel**, all upsells are displayed at the same time trough a carousel.
= Is multilanguage compatible? =
J Cart Upsell and Cross-sell for WooCommerce is **compatible** with Polylang and WPML. Be sure to have also the Polylang WooCommerce add-on installed.
= Does it works with Elementor or Divi? =
Yes, **J Cart Upsell and Cross-sell for WooCommerce** works fine with Elementor and Divi. If you are using the Elementor cart widget and you want to keep that widget because it looks cool, you need to add the **wc-j-upsellator-show-cart** class to it. This class will make that element able to trigger the modal cart.
Since 2 modal carts can't be both active at the same time, the modal cart of Elementor cart item will be disabled.
= What if my theme already has a modal cart? =
**J Cart Upsell and Cross-sell for WooCommerce** by default keeps your theme cart-fragments untouched so it will all works properly.
= Is it PHP 8.x compatible? =
Yes, it works perfectly with the new version of PHP.
= The subtotal is displayed without VAT. How can i fix? =
In the main options page, try to activate the "Cart total" option.
= What if I want more features? =
Contact me, maybe these features can be implemented directly into **J Cart Upsell and Cross-sell for WooCommerce**.
== Changelog ==
**15 of August 2025** - J Cart Upsell and Cross-sell for WooCommerce version 4.0.8
= Version - 4.0.2
* Add - Added "wcjfw_after_checkout_buttons_block" action, after modal cart checkout buttons block
= Version - 4.0.0
* Add - Upsell image is now clickable
= Version - 3.8.8
* Add - Option to choose the language on which upsells/gitfts are offered
* Fix - issue with gifts and upsell when using WPML
= Version - 3.8.8
* Add - Compatibility with Easy Product Bundles for WooCommerce by Product Bundles Team
= Version - 3.8.2
* Add - "empty" class to fixed button when no items in cart
* Fix - Bug with currency switcher plugins
= Version - 3.8.1
* Fix - Open on add to cart option bug resolved
= Version - 3.8.0
* Add - WPML Compatibility
= Version - 3.7.1 =
* Add - Support for WooCommerce HPOS
* Change - Order table info when order has upsell
= Version - 3.7.0 =
* Add - Logical operator choice when selectin "product list" as upsell or gift condition
= Version - 3.6.0 =
* Fix - Bug with WPML
= Version - 3.5.4 =
* Add - Set number of products that needs to satisfy conditions in order to trigger a gift
= Version - 3.5.3 =
* Fix - Upsells not displayed on Checkout and Cart
= Version - 3.5.2 =
* Add - Beta option to autoplay the upsells carousels
* Add - Performance improve with WP >= 6.4 ( wp_prime_option_caches )
= Version - 3.5.1 =
* Add - Ability to change the product of an upsell or gift
* Fix - Minor bugs
= Version - 3.4.5 =
* Add - Display product meta-data on modal cart
= Version - 3.4.3 =
* Add - Compatibility with WordPress 6.3 and WooCommerce 8.0.2
= Version - 3.4.1 =
* Add - Option to exclude gift if the same product is already in cart as upsell
= Version - 3.4.0 =
* Fix - Issue when recaculating gifts
= Version - 3.3.99 =
* Add - Compatibility with WooCommerce 7.8.0
= Version - 3.3.96 =
* Add - Blurred gifts always visible on cart
= Version - 3.3.92 =
* Add - Dynamic Bar Shortcode
= Version - 3.3.9 =
* Add - Upsells sorting
= Version - 3.3.8 =
* Fix - Reversed conditions during upsell creation
= Version - 3.3.7 =
* Fix - Mobile Carousel issue
= Version - 3.3.4 =
* Beta - Added upsells shortcode
* Beta - Added integrations page
= Version - 3.2.5 =
* Fix - Fixed displayed price when with vat/without vat set on WooCommerce
* Add - Option to change cart products image ratio
= Version - 3.2.1 =
* Fix - Upsell issue when changing type (variable, simple, etc..) of the underlying product
= Version - 3.2.0 =
* Add - Add negation option for in cart products and categories/attributes conditions
= Version - 3.1.8 =
* Fix - Css fix if the upsell description is higher than container's height
= Version - 3.1.2 =
* Add - Option to keep the upsell in cart (if added) even if conditions are not met anymore
= Version - 3.0.69 =
* Fix - VAT not calculated on modal cart shipping row
= Version - 3.0.6 =
* Add - Option too choose if clicking an upsell should add it to cart or redirect the customer to the product page
= Version - 3.0.3 =
* Fix - Fix dynamic bar to match woocommerce decimals
= Version - 3.0.0 =
* Add - Polylang compatibility
* Fix - Code improvement
= Version - 2.9.7 =
* Add - Added option to display coupon code input in the modal cart
* Fix - Minor bug fixes
= Version - 2.9.5 =
* Add - Empty modal and modal footer buttons are now templates, so you can override them
* Add - New display mode, in the style tabs, small, to make the modal cart smaller
= Version - 2.9.3 =
* Fix - Full cart page upsells not working when background mode is active
= Version - 2.9.2 =
* Fix - Full cart page upsells not working when only background enabled
= Version - 2.9.0 =
* Add - Official WooCommerce Product Bundles plugin compatibility
* Fix - Gifts now are displayed at the end
= Version - 2.8.8 =
* New - (Premium version) Advanced upsell stats
* Add - Hover color option for modal buttons
* Add - Advanced upsells stats (premium only)
* Add - WPC Product Bundles compatibility
= Version - 2.8.4 =
* Change - Stats page made in ajax, with more data
= Version - 2.8.2 =
* Add - Exclude gift if same product already in cart as normal product
= Version - 2.8.1 =
* Add - Max quantity option if allowed quantity change for an upsell
* Fix - Carousel not working in full cart page
= Version - 2.8.0 =
* Add - Before submit button hook for cart page upsells
* Fix - Carousel not working in full cart page
= Version - 2.7.8 =
* Fix - Code improvement
* Fix - Fixed bug that allowed to display upsells even if not enough stock
* Beta - Add beta option to display WC notices on modal cart, without page redirect
= Version - 2.7.5 =
* Fix - Add filter to fix urlencoded attributes in some languages
= Version - 2.7.4 =
* Fix - Full cart page upsells not working
= Version - 2.7.3 =
* Fix - Fix modal cart auto-open when saving with Elementor builder
* Add - Added wjufw_upsell_is_valid filter
= Version - 2.6.7 =
* Add - Option to exclude upsell if same product already in cart as gift
* Bug - Cart total ( for upsells and gifts ) calculated based on applied discount
= Version - 2.6.0 =
* Add - Search filter in the excluded pages section
* Add - New option for upsells: sold individually
= Version - 2.5.7 =
* Change - Recoded the excluded pages section
= Version - 2.5.2 =
* Change - Dynamic bar re-code
* Add - Dynamic bar multiple goals
* Add - More dynamic bar icons
* Add - Option to disable quantity selector on modal
= Version - 2.1.7 =
* Fix - WooCommerce 6.4 compatibility
* Fix - Dynamic Bar bug
= Version - 2.1.6 =
* Fix - Fixed discount bug when "prevent upsell discount" activated
= Version - 2.1.5 =
* Add - Full cart page upsells
= Version - 2.1.3 =
* Add - Support for WooCommerce 6.3.1
* Add - Support for Wordpress 5.9.2
= Version - 2.1.2 =
* Add - Checkout upsell position switcher ( PRO )
* Add - Option to exclude upsell from coupons discount
* Add - Option too choose max number of upsells displayed when "stacked" selected
= Version - 2.0.1 =
* Fix - Compatibility with "Advanced product fields for WooCommerce"
* Add - Upsell quantity
= Version - 1.67.0 =
* Add - "woo-j-gift" and "woo-j-upsell" classes to cart page items when they are .. gifts and upsells!
* Add - Filter to display or not the dynamic bar - 'wjufw_dynamic_bar_display'
= Version - 1.66.0 =
* Fix - Fix dynamic bar calculation when woocommerce decimal and thousands separator edited
= Version - 1.65.5 =
* Add - Prices displayed in accord to WooCommerce settings - decimal separator, thousands separator, ..
= Version - 1.65.0 =
* Add - WordPress 5.9 compatibility
* Add - WooCommerce 6.1 compatibility
= Version - 1.62.5 =
* Add - Modal cart header css change
= Version - 1.62.0 =
* Fix - Bug in "add to cart single page" script
* Add - Compatibility with official "Woocommerce Composite Products" plugin
= Version - 1.61.1 =
* Fix - Bug in "add to cart single page" script
* Add - Option to choose between "single upsell" - "carousel" - "stacked upsells"
= Version - 1.60.1 =
* Add - WooCommerce 6.0.0 compatibility
= Version - 1.60.0 =
* Add - option to use J Cart Upsell and Cross-sell only as background logic
* Add - option to change quantity of gifted product
= Version - 1.60.0 = Premium
* Fix - fixed a bug when coupon option set and then removed
= Version - 1.58.9 =
* Add - small css changes
* Add - new dynamic bar style
= Version - 1.58.0 =
* Premium only - added option to trigger gifts only if a certain coupon is applied
= Version - 1.55.0 =
* Add Request - added option to trigger gifts/upsells only if user is logged
= Version - 1.52.0 =
* Add Request - added option to exclude virtual product to the cart count limit that triggers gifts
* thanks to Carl for the suggestion
= Version - 1.51.0 =
* Fix - fixed a bug when calculating products taxes
* Add - filter to change cart item name -- apply_filters( 'wjufw_cart_item_name', $product->get_name(), $product, $product['key'] )
= Version - 1.50.4 =
This is a major change
* Enhancement - Code refactoring
* Add - filter to change dynamic bar limit -- apply_filters( 'wjufw_shipping_bar_limit', $limit, $limit )
* Add - Compatibility to currency exchange plugin ( WOOCS - WooCommerce Currency Switcher )
* Add - Synchronized prices with WooCommerce VAT settings: product prices with/without taxes, product displayed with/without taxes on cart
= Version - 1.30.3 =
* Add - Option to choose currency position: before or after price
* Add - Option to change modal cart header text
* Add - Option to show or not upsell label if condition set to "no discount"
* Fix - Fixed css input number bug for Firefox
= Version - 1.25.3 =
* Enhancement - Upsells/Gifts edit now via AJAX
= Version - 1.21.5 =
* Add - Added option to show multiple upsells at time, via carousel
* Add - Added option to display a random upsell when multiple are triggered
= Version - 1.15 =
* Add - Added CSS hook to dynamic bar price
= Version - 1.14 =
* Fix - Issue with VAT on subtotal. Added option to change between WC()->cart->subtotal and WC()->cart->get_subtotal() in the main option page
= Version - 1.13 =
* Add - Shortcodes tab with a new shortcode for a dynamic items counter
* Fix - Issue when adding to cart products with price as zero ( free )
* Change - Changed "shipping bar" to "dynamic bar"
= Version - 1.11 =
* Add - Added modal cart custom logo upload
= Version - 1.10 =
* Fix - Decimal issue in the modal footer
= Version - 1.09 =
* Add - Added actions to better customize single product page when triggering gift
- do_action('wjufw_before_single_product_gift_text', $gift_product_id );
- do_action('wjufw_after_single_product_gift_text', $gift_product_id );
* Fix - Ignoring trashed orders from stats page
* Fix - Adjusted stats charts when viewport smaller than 1300px
* Fix - Rounded decimals on stats page
= Version - 1.08 =
* Add - Added subtotal condition as a default condition for every upsell/gift
= Version - 1.07 =
* Add - Redirect to cart page cliclikg on .wc-j-upsellator-show-cart class if plugin not loaded on that page
= Version - 1.05 =
* Add - Pause / Start on upsells and gifts
* Add - Modal cart logo theme
= Version - 1.04 =
* Fix - Fixed upsell displayed price
= Version - 1.03 =
* Add - Added go to cart button option
= Version - 1.02 =
* CSS Fix for stats page
= Version - 0.99.45 =
* Stable version
= Version - 0.99.45 =
* Enhancement - Merged attributes and categories conditions for complex filters
= Version - 0.99.2 =
* Add - Added upsell priority
* Fix - Fixed a bug when deleting a product from woocommerce used as gift
* Fix - CSS letter-spacing fix