Home / eCommerce / Boost Your WooCommerce Store with Automated Two-Way Up-Sell Links

Boost Your WooCommerce Store with Automated Two-Way Up-Sell Links

Published On: May 7th, 2024|Categories: eCommerce, WooCommerce|3 min read|

In the world of eCommerce, effectively showcasing products can significantly boost your sales. One common technique is the use of up-sells—suggesting higher-priced or more premium products to customers. WooCommerce, a popular eCommerce platform for WordPress, supports this feature out of the box. However, WooCommerce’s up-sell feature is inherently one-sided; linking one product as an up-sell doesn’t reciprocate the link on the suggested product. This article explores how to automate two-way up-sell links, thereby enhancing product visibility and potential sales.

Understanding Up-Sells in WooCommerce

In WooCommerce, up-sells are typically set on a product page in the admin panel, where you can select other products that you recommend as up-sells. For instance, if Product X has Product Y as an up-sell, customers viewing Product X will see a prompt suggesting that they consider purchasing Product Y as well. By default, this link is only one-way—if you view Product Y, there’s no indication that Product X is related.

Why Automate Reciprocal Up-Sell Links?

Automating reciprocal up-sell links can save time and improve the internal linking structure of your online store, which is beneficial for SEO and enhances the shopping experience for customers. It ensures that related products are mutually discoverable, increasing the chances of cross-sales.

How to Automate Two-Way Up-Sell Links

Here’s a step-by-step guide to automating reciprocal up-sell relationships in WooCommerce using custom PHP code:

1. Modify the Functions.php File or Create a Plugin

You can add custom code to your theme’s functions.php file or create a specific plugin for this purpose. This allows you to maintain changes even when updating the theme.

2. Hook Into WooCommerce Product Save Action

Use the woocommerce_process_product_meta action hook, which triggers when a product is saved. This is where you will intercept the up-sell links to modify them.

3. Write the Function to Sync Up-Sell Links

The function will:

  • Retrieve the current up-sells from the product being saved.
  • Check for any new up-sells that were added or existing ones that were removed.
  • Update the linked products to ensure that the up-sell relationship is reciprocal.

Example Code:

add_action('woocommerce_process_product_meta', 'webroomtech_sync_reciprocal_upsells');

function webroomtech_sync_reciprocal_upsells($post_id) {
    $posted_upsells = isset($_POST['upsell_ids']) ? array_map('intval', $_POST['upsell_ids']) : [];
    $product = wc_get_product($post_id);
    $current_upsells = $product->get_upsell_ids();

    $added_upsells = array_diff($posted_upsells, $current_upsells);
    $removed_upsells = array_diff($current_upsells, $posted_upsells);

    foreach ($added_upsells as $upsell_id) {
        update_upsell_link($upsell_id, $post_id, 'add');

    foreach ($removed_upsells as $upsell_id) {
        update_upsell_link($upsell_id, $post_id, 'remove');

function update_upsell_link($upsell_id, $post_id, $action) {
    $upsell_product = wc_get_product($upsell_id);
    $existing_upsells = $upsell_product->get_upsell_ids();

    if ($action == 'add' && !in_array($post_id, $existing_upsells)) {
        $existing_upsells[] = $post_id;
    } elseif ($action == 'remove') {
        $existing_upsells = array_diff($existing_upsells, [$post_id]);

    update_post_meta($upsell_id, '_upsell_ids', $existing_upsells);


  • Performance: The additional checks and updates may affect performance, especially on large sites. Optimize and cache where possible.
  • Testing: Always test in a staging environment to ensure there are no unforeseen impacts on your site’s functionality.

Automating two-way up-sell links in WooCommerce not only simplifies management but also enhances product exposure and sales opportunities, creating a more interconnected and user-friendly shopping experience.

Related Articles

If you enjoyed reading this, then please explore our other articles below:

More Articles

If you enjoyed reading this, then please explore our other articles below: