Magento 2 Automatic Related Products Extension

View Demo

The Automatic Related Products extension fills related, up-sell and cross-sell blocks for you. It picks products by rules you set, using what your customers actually buy and view, and shows how much revenue each block brings, so you keep the blocks that sell and change the ones that don't.

  • Fill related, up-sell and cross-sell blocks automatically
  • Pick products by what customers buy and view together
  • Show blocks on product, category, cart and account pages
  • See clicks, orders and revenue for every block
Marketplace Approved
Hyvä
Magento Cloud
GraphQL
Mage-OS
Compatible with:
Community:
2.3.* - 2.4.9
Enterprise:
2.3.* - 2.4.9
Problem

Related products (similar items), up-sells (a better, pricier alternative) and cross-sells (accessories and add-ons) can bring real revenue, but default Magento makes you link every product by hand. The links go stale as the catalog changes, and you can't see which block actually sells.

Solution

Automatic Related Products fills these blocks for you. It picks products by rules you set, using what your customers actually buy and view, and reports the revenue each block brings.

Is it worth it for your store?

What you get

Blocks filled from real orders and views, and a report of clicks, orders and revenue for each one. You see which blocks pay off.

What it takes

Create a block, pick its position and rule. It uses your last 365 days of orders and views, so it's full from day one; a nightly data update keeps it fresh.

What you risk

Little. Blocks work with Magento's page cache, and your native related, up-sell and cross-sell links stay untouched if you switch the extension off.

Automatic Related Products main features

  • Fill cross-sell and up-sell blocks automatically, without linking products by hand
  • Pick products by what customers bought or viewed together, or by catalog conditions
  • Show blocks on product, category, cart and customer account pages, and in blog posts
  • Add the same recommendations to Mirasvit Follow Up Email messages
  • See impressions, clicks, orders and revenue for every block
  • Works with Luma and Hyvä themes, Magento Open Source and Adobe Commerce 2.3–2.4.9

Choose how each block picks products

Selection rule for a related products block

Every block is filled by a rule. The rule has a source, which says where the products come from:

  • Bought together: products that shoppers bought in the same order as this one
  • Also bought: products that the same customers bought in any of their orders
  • Viewed together: products that logged-in customers viewed alongside this one
  • Recently viewed: products looked at recently (personal for logged-in shoppers on uncached pages such as the cart, otherwise a store-wide list)
  • Whole catalog: any product that matches your conditions

Conditions then narrow the result: the same category or the same attribute value as the current product, a price range, only products with an image, or any other product attribute. Behavior-based sources put the products bought or viewed together most often first. On top of that, you can sort by price or name, rotate products in random order, or use Mirasvit Sorting criteria. If you have already linked some products by hand, the block can show them first and fill the rest automatically. See the selection rules guide for all options.

Choose What Related Products to Display

Selecting a product selection rule for a block

Rules and blocks are set up separately. You create a rule once and give it a name, then pick it from a list in any block that should use it. A typical set of rules might be:

  • cross-selling products
  • similar products
  • by purchase history
  • other viewed products

Change a rule, and every block that uses it updates with it.

Place related products almost anywhere

Related products block on a product page

You choose the position of each block. The module can show related products on these pages:

  • product page, inside the native related or up-sell block, or above or below the content and sidebar
  • category page
  • shopping cart, inside the native cross-sell block or above or below the content
  • customer account page
  • blog posts of Mirasvit Blog

Pick a position from the list of predefined ones, or place the block yourself with a widget or a custom layout position. When several blocks share a position, the one with the higher priority goes first. With Ignore subsequent blocks turned on, a backup block appears only when the main one has nothing to show.

Analytics you can trust when deciding which blocks to keep

Impressions, clicks, orders and revenue for each related products block

The report shows every block with its:

  • impressions (number of views)
  • number of clicks
  • number of orders
  • total revenue

Revenue is counted strictly. An order goes to the last block the shopper clicked, and the block gets credit only for the items it showed, without shipping or the rest of the cart. So the number tells you what the block actually sold, not how big the orders were. Many reports stop at clicks or credit a block with the whole order, which makes every block look better than it is.

Example: phones and accessories

Say you sell mobile phones. Here is what a shopper sees:

1

Phone page: up-sell

An up-sell block offers the next model up, with more storage or a better camera.

2

Cart page: cross-sell

Once the phone is in the cart, a cross-sell block suggests cases and chargers that fit it. The rule looks at every item in the cart, not just the last one added.

Accessories usually carry better margins than the phone itself, which makes the cart block especially worth setting up.

Related products slider in the shopping cart

Related products slider or static block

Choose one of three block templates (default, bulletproof or widget), show the products as a slider or a static list, and set how many products each block shows. If your theme has its own design, you can use a custom template.

Who It's For

The extension pays off when your catalog is too large to link by hand and your store has a steady flow of orders. Behavior-based blocks need order and browsing history, so a new store should start with catalog rules (the same category or a similar price) until the history builds up. If you sell only a few products, linking them manually in default Magento is enough.

No hidden fees
Our developers install the extension on your store and configure it for your setup, free of charge.
Lifetime access to source code
Access to free support and updates for 1 year
Updates and support prolongation - $132

Pay today $219 for the first year.

Then $132 for updates and support services per year.

Cancel anytime.

30 days money back guarantee
See it in action!
Pick a quick tutorial to learn about various aspects of this extension
Customer Reviews 33
Earn points for your review about this extension modules. $1 = 10 points
Write Your Own Review

check-circle You submitted your review for moderation.

Alexander Verified Buyer
From Germany
Using the module for 19 days
Smart and customizable recommendations
Offers flexible rules for displaying relevant product recommendations, even of products with many complex attributes. Good performance and frequent updates contribute to a positive experience. Technical support is fast, helpful, and professional. Very pleased with the extension.
Also installed:
Layered Navigation,  Elastic Search Ultimate,  Google Tag Manager,  Follow Up Email,  Surcharge & Additional Payment Fee
Tbb Verified Buyer
From Barcelona, Spain
Using the module for over 3 years
We use it to automate related/upsell: good data sources and control over the configuration
We have Automatic Related Products configured on one of our Magento 2 stores, where it powers the related and upsell blocks on product pages.

Compared to Magento's native options, the main value is in the data sources it can use. It doesn't rely only on manual relations: it can combine recent views, products viewed together by the same customer and purchase behaviour. In our case, the generated index is broad, which helps keep recommendations updated as the catalogue changes.

On the configuration side, the separation between rules and blocks is very useful. You can define the logic once (which products are eligible and which source should be used) and reuse it across different blocks without duplicating work. This simplifies maintenance when the catalogue is large.

The positioning flexibility is also valuable. You're not limited to Magento's classic slots, and blocks can be placed in custom positions with quite a bit of flexibility. This has given us more room when working on product page layouts.

For stores that care about product page merchandising and want to go beyond native related/upsell functionality, it's a very useful solution. It automates recommendations through configurable criteria and significantly reduces manual work.
Also installed:
Advanced Reports,  Reward Points,  Affiliate,  Full Page Cache Warmer,  Google PageSpeed Optimizer,  Google Shopping Feed,  Extended Shopping Cart Rules and 9 more
Vladimir Verified Buyer
From Tsarevo, Bulgaria
Using the module for over 3 years
Excellent extension that boosts sales with minimal effort
The Automatic Related Products extension for Magento 2 is a highly effective tool that automates the display of related products based on smart rules. It’s easy to install, the interface is intuitive, and the results are immediate—better product visibility and increased average order value. I highly recommend it to anyone looking to enhance the user experience and drive more sales without manually managing related items.
Also installed:
Dynamic Categories,  Advanced SEO Suite,  Order Management,  Improved Sorting,  Elastic Search Ultimate,  Layered Navigation
Josh Verified Buyer
From Durban, South Africa
Using the module for over 2 years
Works well
Has an issue with this extension at first with slow loading but once issue was resolved. IT works great!
Also installed:
Advanced Reports,  Advanced Product Feeds,  Full Page Cache Warmer,  Layered Navigation,  Promo Banners,  Knowledge Base,  Customer Segmentation Suite and 10 more
Robert Verified Buyer
From United States
Using the module for 7 months
A must for any Magento store
I've been using the Mirasvit Related Products extension for my Magento 2 store, and I must say it has made a significant difference in our sales. Can't be happier
Also installed:
Advanced Product Feeds,  Full Page Cache Warmer,  Order Management,  RMA,  Elastic Search Ultimate,  AI Assistant,  Google Tag Manager and 8 more
Manual & Support
Frequently asked questions
chevron-down chevron-right

Where can I find a related products block in Magento 2?

Default Magento shows related and up-sell products on the product page and cross-sell products in the shopping cart. You fill all three by hand in each product's settings.

With this extension, the same blocks fill themselves by rules, and you can add more blocks on category pages, in the customer account, in blog posts and in custom positions.

chevron-down chevron-right

Why do I need related products at all?

Related products raise the average order value. Shoppers often forget an item they meant to buy or don't know which accessories fit, and a short list of relevant products helps them find it.

The analytics then show which blocks bring orders, so you can drop the ones that don't.

chevron-down chevron-right

Is there a free way to show automatic related products in Magento 2?

Magento Open Source has no automatic option: related, up-sell and cross-sell products are linked by hand for each product. Adobe Commerce includes Related Product Rules, which link products by catalog conditions.

This extension adds what neither does out of the box: products picked from real orders and views (bought together, also bought, viewed together, recently viewed), extra positions on category, account and blog pages, and revenue analytics for each block.

chevron-down chevron-right

How does the extension choose which products to show?

Each block uses a rule you set up. The rule takes products from a source (bought together in one order, bought by the same customers, viewed together, recently viewed, or the whole catalog) and narrows them with conditions, for example the same category or attribute value as the current product, or a price range.

There is no machine learning involved. Behavior-based sources rank products by how often they were bought or viewed together, so the result is predictable and you can always see why a product appears. See the selection rules guide for details.

chevron-down chevron-right

How does the extension calculate revenue per block?

When a shopper places an order, it is credited to the last related products block they clicked. The block gets the value of only those ordered items it showed (row total with tax, minus discounts), without shipping and without the other items in the cart.

The report also shows impressions, clicks and orders for each block. There is no A/B testing: you compare blocks by these numbers.

chevron-down chevron-right

Does the extension use my existing orders, or start from zero?

It uses the orders and product views your store already has. By default, it looks at the last 365 days, and you can change the period in the settings. Run the reindex once after installation, and the behavior-based blocks are filled straight away. The data is updated each time the index is rebuilt, so schedule a regular reindex, for example nightly.

In a new store without history, start with catalog rules (the same category or a similar price) until enough orders come in.

chevron-down chevron-right

Does the extension slow down product pages?

Blocks are rendered on the server from a prebuilt index, so a page doesn't recalculate order history on every view, and pages with blocks work with full page cache. Click and impression tracking runs as separate lightweight requests and can be turned off for each store view.

chevron-down chevron-right

Is the Automatic Related Products extension compatible with GraphQL?

Yes. GraphQL support comes as a separate package, mirasvit/module-related-graph-ql, which you install with Composer next to the main extension. It lets a headless storefront request the blocks and their products and send click and impression tracking.

chevron-down chevron-right

Can I add related products to emails sent by the Follow Up Email extension?

Yes. In a Follow Up Email trigger, choose any active related products block as the source of recommended products. The email then shows the products that block would pick for the items in the order or cart.

chevron-down chevron-right

Can I manage related product blocks through an API?

Yes. The extension has a REST API for blocks, selection rules and block analytics, so you can create and update them from your own tools. See the extension manual for the endpoints.

chevron-down chevron-right

Does the Automatic Related Products extension work together with the Layered Navigation extension?

Yes, they work independently. Layered Navigation filters the products in the category listing, while a related products block on a category page picks its products by its own rule. The block doesn't change when a shopper applies filters.

chevron-down chevron-right

Can I show related products on the home page or other CMS pages?

Yes, with the related products widget. On a page without a current product, such as the home page, the block can show products from a catalog rule or recently viewed products (a store-wide list for guests and cached pages). Sources based on the current product (bought together, also bought, viewed together) need a product page, category page or cart.

chevron-down chevron-right

Can a block show only products that match the current product?

Yes. Add a condition to the rule that compares an attribute with the current product, for example the same brand, collection or category. The block then shows only products that share that value with the product on the page.

chevron-down chevron-right

What is the inventory status of products shown as related?

By default, blocks show only products that are in stock and available for sale. If your store displays out-of-stock products in the catalog, each block has its own Exclude out of stock option, which also applies to the native related, up-sell and cross-sell products shown in that block.

chevron-down chevron-right

Is it possible to place two blocks of related products at the same position on the page?

Yes, in most positions. The block with the higher priority (the lower number) goes first. Turn on Ignore subsequent blocks if you want the next block to appear only when the first one has nothing to show.

Inside a native Magento block (related, up-sell or cross-sell), only one extension block is displayed. To show several blocks, use another position, for example Product Page | Content Bottom. See it on the demo.

chevron-down chevron-right

Can I always show specific products next to the automatic picks?

Yes. Link those products to the main product as native related, up-sell or cross-sell products, and turn on the option to show assigned products first in the block. The block shows them at the top and fills the remaining places by its rule.

chevron-down chevron-right

Can CSS or the style of a related products block be modified?

Yes, in two ways.

You can edit the template and style files of the extension (default and "bulletproof" templates) in your theme. Back up your changes before updating the extension.

You can also add styles in the admin panel without editing files: go to Stores > Configuration > Mirasvit Extensions > Developer > CSS Settings > Additional CSS Styles. These styles apply to all blocks at once; a separate style for each block isn't possible there.

Flush the Magento cache after each change.

chevron-down chevron-right

Is the extension translated?

Yes. Besides English, the extension includes translations into 15 languages: Arabic, Chinese (Simplified), Czech, Dutch, French, German, Italian, Japanese, Polish, Portuguese (Brazil and Portugal), Spanish, Swedish, Turkish and Ukrainian.

Changelog
Version 1.6.4Oct 27, 2026
Fixed only one recommendation block getting credit when a shopper bought products from several blocks in the same visit. Until now the whole order went to the block clicked last, and products recommended by other clicked blocks earned them nothing. Each purchased product is now credited to the clicked block that showed it, so every block that sold something gets its order and its share of the revenue. When two clicked blocks showed the same product, the block clicked later gets it. This affects the Orders and Revenue in the Product Blocks grid and in the performance report for orders placed after the upgrade.
Fixed a recommendation block being counted an order when the shopper clicked it but bought none of the products it recommended. Revenue for such an order was already 0, but its Orders count still went up and made the block look like it sold more often than it did. A block now gets an order only when at least one product it showed was bought.
Version 1.6.3Oct 26, 2026
Works with version 2 of the shared Mirasvit Core package (mirasvit/module-core) as well as 1.3 and newer. Composer no longer blocks you from installing or updating Automatic Related Products next to other Mirasvit extensions that already need Core 2.
Version 1.6.2Oct 22, 2026
⚠️ If you overrode a block template in your theme, mark each product in it — a personalized Recently Viewed block removes the product of the page it is on by the data-mst-related-item="<product id>" attribute that Mirasvit_Related::block/default.phtml, block/bulletproof.phtml, hyva/slider.phtml and hyva/no-slider.phtml now set on every product item. In an override that lacks it, a logged-in customer can see the product they are looking at in its own Recently Viewed block.
Fixed Recently Viewed blocks on full-page-cached product and category pages showing every logged-in customer the same store-wide list. Each logged-in customer now sees the products they viewed themselves, on Luma and Hyvä: the page loads as cached and the block swaps in the customer's own list a moment later. In the swapped-in list, prices show, Add to Cart and Add to Wishlist return the shopper to the page they were on, the product of the current page is left out, and the products a customer has ordered are no longer dropped from it or put at its top as on the My Account page. Clicks on the swapped-in products are counted for the block's statistics as before. Guests, and customers with no browsing history yet, keep the store-wide list; pages that are not cached, such as the cart, keep showing the customer's own list as since 1.5.5.
Fixed Recently Viewed and Viewed Together blocks staying empty on Hyvä stores running Magento 2.4.9 or newer. From that version Magento records a product view only through a Luma script that Hyvä does not run, so no views were collected; the extension now records them on Hyvä product pages itself. As in Magento, views are recorded only while Enable Reports and Enable "Product View" Report are on (Stores > Configuration > General > Reports > General Options), and a view is still recorded when the shopper leaves the page right away. Earlier Magento versions record views on their own and are not affected.
Fixed a product condition with is not one of and several values letting through products that have the second or any later listed value. Only the first value was excluded; now a product matching any of the listed values is excluded.
Version 1.6.1Oct 20, 2026
Fixed a recommendation block getting too little revenue credit when a shopper clicked it on more than one page in the same visit. Only the products the block showed at the last click were counted. For example, a block on product pages shows different products on each page. If the shopper clicked it on page A, then on page B, and bought products from both, the block was credited only for the page B products. The block is now credited for every product it showed the shopper during that visit. The order is still credited to the block the shopper clicked last, as before. This affects the Revenue in the Product Blocks grid and in the performance report for orders placed after the upgrade.
Fixed display conditions on the Product Block form on Adobe Commerce. Its page-type condition sections (product, category, cart and customer account pages) could be given the same internal id there, so a condition added in one section could land in another or not be added at all. Each condition section now has its own id and adds conditions only to itself.
Fixed admin users whose role allows Marketing > Related Products but not Magento's Catalog Price Rules or Cart Price Rules being unable to add display conditions to a Product Block. Adding a condition row now needs only the Related Products permission, and each section offers the conditions of its own page type.
Version 1.6.0Oct 19, 2026
Hyvä support now ships with the extension — The companion package mirasvit/module-related-hyva is gone: the product blocks, the slider and the grid an inject block renders in Hyvä's own related, up-sell and cross-sell slots are now part of Automatic Related Products itself. There is no second package to find and keep in step, and on a Luma store the Hyvä part simply stays dormant. Composer removes the companion package by itself when you upgrade.
GraphQl support now ships with the extension — mirasvit/module-related-graph-ql is gone; the mstRelatedBlocks and mstRelatedBlock queries and the mstRelatedTrack mutation used by headless and PWA storefronts are part of Automatic Related Products itself, shipped as a second Magento module, Mirasvit_RelatedGraphQl, inside the same package.
⚠️ Hyva_MirasvitRelated is gone, not renamed — You only need to act if you referenced it yourself: in a custom di.xml, a layout file, or a deployment script that enables modules by name.
⚠️ If you overrode a Hyvä template in your theme, repoint it — Hyva_MirasvitRelated::block/default.phtml, bulletproof.phtml and widget.phtml are now Mirasvit_Related::block/…, and the two slider containers moved: Hyva_MirasvitRelated::block/slider.phtml is Mirasvit_Related::hyva/slider.phtml, block/no-slider.phtml is Mirasvit_Related::hyva/no-slider.phtml. An override at an old path is simply not read, with no error to say so. The two containers are not block templates in their own right, so they do not appear in a Product Block's Template dropdown.
⚠️ GraphQl now answers on every store — the mstRelated* queries and mutation are available as soon as the extension is installed, no extra package needed.
After upgrading a Hyvä store, run bin/magento hyva:config:generate and rebuild your theme's Tailwind CSS.
⚠️ Hyvä theme module 1.3.14 or newer is required for the Hyvä storefront (hyva-themes/magento2-theme-module); composer refuses to update the extension on an older one. The Luma storefront has no such requirement.
⚠️ If the companion was installed by unpacking an archive into app/code/Hyva/MirasvitRelated, delete that folder before setup:upgrade: composer cannot remove it, and left in place it would keep serving the old templates and record every impression and click twice.
One analytics tracker for both themes. If your Hyvä store still ran a companion older than 1.2.0, clicks on recommendation blocks now carry the products the block had shown, so the Revenue column fills in again. A click on Add to Cart inside a block now counts as a click on both themes (it did on Hyvä only), so an order placed straight from a block is credited to it on Luma as well.
Fixed orders going uncredited in the Orders and Revenue columns when the shopper clicked a block on one day and ordered after the nightly statistics update. The update deleted the clicks an order is credited to; it now keeps them for 30 days. Statistics recorded while the update is running are no longer deleted before they are counted. ⚠️ bin/magento setup:upgrade adds column is_aggregated to table mst_related_analytics.
Fixed the mstRelatedTrack GraphQl mutation answering "Internal server error" on every call since GraphQl companion 1.2.0: its product_ids argument declared a list default, which Magento's schema reader cannot build. The argument is simply optional now.
Fixed a mstRelatedBlocks / mstRelatedBlock GraphQl query failing when it did not ask for the blocks' products, and a CUSTOMER query failing for a signed-in customer with a type error.
The position argument of mstRelatedBlocks is now validated: an unknown position answers an error instead of an empty list. An empty value still means every position.
Reasons to choose Mirasvit
Client focusing and satisfaction

These are our primary. A major portion of our new clients come from referrals from our existing clients. Our professional team of developers, marketers and support staff have invested the best knowledge and experience in the field into our work, so you know you can come back to us again and again.

Remarkable support

One year free and high quality support. We go to great lengths to provide maximum satisfaction with every module you have purchased in our store. By helping you with installation, configuration, answering your every question, we do all our best to eliminate any possible problems.

Risk-free Investment

30-days money back guarantee. If you are not satisfied with our automatic related products extension performance for any reason, we provide a full refund.

Constant improvements and upgrades

We constantly add new features to all our modules, and are always interested in hearing your opinion and implementing your suggested features in our future developments.

Comprehensive Documentation

We provide an expanded user guide for every aspect of our automatic related products extension, so you can find answers for all your burning questions.

Unencrypted source code of our products

You can customize automatic related products extension according to your needs and requirements.

Usability and Performance

The Module is easy to install and upgrade, just follow our step-by-step user guide. Additionally, the extension is ready to use with the Hyvä theme.

Ready for Magento Cloud

No core modifications. The automatic related products extension has been tested in a Magento Cloud environment and is fully compatible with it.

Loading...