That Software Guy! eCommerce Starts Here!

Zen Cart Checkbox Cross Sell

An upselling/cross-selling module for Zen Cart that places product recommendations on the product info with easy checkbox selection. The flow of product purchase is uninterrupted; the customer simply checks a box, then adds the product being browsed to the cart as usual.

Checkbox Cross Sell is not a discounting module; it simply displays items for purchase.

Relevance: Zen Cart™ 1.3.9, 1.5.x, along with Better Together.
This extension is part of the Better Together World.

Current Version: 2.1 Occasionally, new features are documented prior to being publicly available; please check the version history to ensure the feature you want is available in your version.

Support Thread: My commercial software is not supported on the Zen Cart forum. Please email me questions instead.

Cost: $30 (Note: this low price covers software only for self-installation.)

Buy Now

Would you like to ask me questions before buying? I'm happy to help likely purchasers make the right decision. Just email your inquiry to . Please be sure to include your cart type and version (e.g. Zen Cart 1.5.1, OpenCart 2.3.02, osCommerce 2.4, etc.) and the mod you want to buy.

Installed Cost: $90.00 (Professional installation by That Software Guy)

Installation Difficulty: Moderate You must modify some PHP code to install this module. Note that configuration is done via Better Together; If you do not have Better Together Admin, you must write some PHP to configure Better Together.

Installation Instructions: See README in the mod.

See it Live: Go to this test cart and look at product 27. Below the add to cart button, you have the ability to also add products 3, 25, 13 and 14, just by ticking a checkbox.

Buy: Buy Checkbox Cross Sell Or email your pre-purchase question to .

FAQ: click here

Configuration: Checkbox Cross Sell does not have its own configuration; it is configured through Better Together. The basic configuration of Better Together involves adding PHP code to the setup() function in the module, as shown below. For people who would prefer not to do this, a Better Together Admin panel is available. Many examples of basic configuration are shown in this help file; examples of advanced configuration are also available.

Incompatibilities: This software will not work with AJAX add-to-cart mods.
Checkbox Cross Sell is a Zen Cart module which allows you to display easily purchased upsell/cross sell selections on the product info page.

Here's what the product info screen looks like with Checkbox Cross Sell:

Checkbox Cross Sell Items

In Checkbox Cross Sell 2.0 and higher, you may also display the Better Together Marketing text along with the cross sell. Checkbox Cross Sell Items

Checkbox Cross Sell uses the Cross Selling (and optionally, the discounting) list from Better Together. So in this case, the item being displayed (item 27) and the two items being cross sold (items 3 and 25) were linked in Better Together as follows:
         $this->add_prod_to_prod(27, 3, "X", 0);  
         $this->add_prod_to_prod(27, 25, "X", 0);  
If they had been linked with a discount, they would also be displayed unless this behavior was turned off (see the FAQ).
         $this->add_prod_to_prod(27, 3, "$", 100);  
         $this->add_prod_to_prod(27, 25, "$", 50);  

Requirements for Appearing in the Checkbox Cross Sell List

Only specific products (i.e. not categories) will be presented as cross sells. Items are selected from your Better Together configuration as follows:
  • For prod_to_prod linkages, if you are on the page for the first product, cross-sell the second product; if you are on the page for the second product, cross-sell the first product.
    Example: for add_prod_to_prod(A, B, "$", 50), if you are on the product info page for A, show B. If you are on the page for B, show A.
  • For prod_to_cat linkages, if you are on the page for an item in the category specified by the second item, cross sell the product.
    Example: for add_prod_to_cat(A, B, "$", 50), if you are on the product info page for an item in category B, show A.
  • For cat_to_prod linkages, if you are on the page for an item in the category specified by the first item, cross sell for the product.
    Example: for add_cat_to_prod(A, B, "$", 50), if you are on the product info page for an item in category A, show B.
  • Note that twoforone_prod linkages are currently ignored.
The item will then be shown under the following conditions:
  • The item is not disabled (out of stock or otherwise).
  • The item may be added to the cart (i.e. if you search for the item, the search results page shows the item with "Add to Cart" functionality and not a "More Info..." link).
  • The item does not have attributes or the item does not have non-defaultable attributes and you have the Default Attribute module installed.
To emphasize this point again: items with non-defaultable attributes cannot be displayed as cross sells by Checkbox Cross Sell.
(Note: Products with defaultable attributes may be used, if you have installed my Default Attribute mod.)

If you have items with attributes such as color, size or other non-defaultable settings which you wish to cross sell, you can still use the Cross Sell Marketing in Better Together template mod.

Also, items with attributes can show items without attributes as cross sells. For example, if item 12 has item 15 as a cross sell, and item 12 has attributes but item 15 does not, item 15 will be shown on item 12's page, but not vice versa.

Major Versions

  • Version 2.1 - 08/01/16 - Offers interoperability with Default Attribute mod..
  • Version 2.0a - 11/15/14 - Corrections to optional features in Better Together Marketing Text.
  • Version 2.0 - 11/04/14 - Added Better Together Marketing Text to the Checkbox area.
  • Version 1.0a - 01/25/13 - Was including cross sells in both directions; was not checking out of stock, sold out or product_is_call conditions.
  • Version 1.0 - 01/01/13 - First release.


Q: How do I turn Checkbox Cross Sell off?
A: Remove the inclusion of tpl_modules_checkbox_cross_sell.php from the product info page.

Q: What do you mean by "defaultable attributes" or "single valued defaultable attributes?"
A: The two terms mean the same thing. They're just attributes for which a default value can be selected without needing input from the product info page. "Single valued" means the attribute has just one value. For example, a radio button with just one value (such as "PDF" or "ZIP file") is single valued. A radio button with two values (such as "red" or "green") would not be single valued. Similarly, "defaultable" means the single value can be easily set without needing additional input. For example, product with a single TEXT attribute would be single valued but not defaultable, since it's not known what the correct value would be. Similarly, a product requiring a file upload would not be defaultable.

Note that in order to take advantage of defaultable attributes, you need my Default Attribute contribution.

Q: How come my Better Together cross sell item doesn't show up with a checkbox?
A: Please review the list of requirements for an item to show up on Checkbox Cross Sell

Q: When I use PROD, it works, but I can't seem to get CAT to work. Why?
A: The CAT value you specify is matched against the master_categories_id field in the products table. Sometimes this value is not what you expect it to be, either because of a database upgrade or because you're using linked categories. Please see the Category Issues page for solutions. Remember that Checkbox Cross Sell uses Better Together and follows Better Together Category Handling Rules.

Q: I really want the image to be a link to the product like it is on the listing page. Why isn't it?
A: I think it looks better without the link, but it's your choice. If you want to add it, I've made it an easy change:

Edit the file includes/templates/YOUR TEMPLATE/templates/tpl_checkbox_cross_sell_list.php. Look for the lines
        // echo '<a href="' .  zen_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $xsell_list[$i]['id']).'">';
        echo zen_get_products_image($xsell_list[$i]);
        // echo '</a>'; 
Uncomment out the two lines above and below the call to zen_get_products_image, so what you have is
        echo '<a href="' .  zen_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $xsell_list[$i]['id']).'">';
        echo zen_get_products_image($xsell_list[$i]['id']);
        echo '</a>'; 
Now the image is a link.

Q: I don't want to show the Better Together Marketing Text with the checkbox cross sell. How do I do this?
A: Edit the file includes/templates/YOUR TEMPLATE/templates/tpl_checkbox_cross_sell_list.php. Look for the lines
        // If you don't want to show the Better Together Marketing Text, 
        // Comment out or remove this block 
        if (zen_not_null($xsell_list[$i]['s'])) {
           echo '

'; echo $xsell_list[$i]['s']['data']; }
Comment out or delete these lines.

Q: I don't want the offers shown in random order. How do I change this?
A: Edit ./includes/templates/YOUR_TEMPLATE/templates/tpl_modules_checkbox_cross_sell.php. At the top of the file is a setting $checkbox_cross_sell_random. Set this to false.

Q: I don't want to show Better Together discounts, only cross sells. How do I change this?
A: Edit ./includes/templates/YOUR_TEMPLATE/templates/tpl_modules_checkbox_cross_sell.php. At the top of the file is a setting $checkbox_cross_sell_show_discounts. Set this to false.

Q: I want to limit the number of cross sells shown. How do I change this?
A: Edit ./includes/templates/YOUR_TEMPLATE/templates/tpl_modules_checkbox_cross_sell.php. At the top of the file is a setting $checkbox_cross_sell_limit. Set this to the maximum number you want shown.

Q: What's the difference between Checkbox Cross Sell and Impulse Buy?
A: Impulse Buy appears only on the checkout shipping page and has its own configuration. Checkbox Cross Sell uses the Better Together configuration to determine what should be shown. Also, Impulse Buy only displays items which are not already in the cart, whereas Checkbox Cross Sell does not have this restriction.

Q: What's the difference between Checkbox Cross Sell and the Better Together Marketing Text?
A: The Better Together Marketing Text links to products, which can be added by following the link and pressing add to cart. Checkbox Cross Sell allows you to add these products to the cart while you're adding the main product (whose product info page you are on).

I charge a fee of $30 for Checkbox Cross Sell. Buy Checkbox Cross Sell.
The fee covers software only; installation is extra if you require help.