Modeling Replacement Products in Magento

If you manufacture/distribute replacements for OEM products, you may be struggling to figure out the optimal way to represent these products in Magento, particularly if you need to give customers data about your products and the OEM products they replace. In this post, we’re going to discuss a strategy for selling replacement products on a Magento-based ecommerce site.

Before we dive into the details, let’s start with some definitions of terms we’ll use throughout this post:

  • Sellables – the actual replacement products. These are the products a customer ends up purchasing when they buy from your site. Most often, these are direct replacements for Original Equipment Manufacturer (OEM) parts. Note: a single sellable could replace many OEM products
  • Non-sellables – the products being replaced. Typically, potential customers would come to a site looking for an OEM part number or SKU and would end up being redirected to the sellable equivalent. A single non-sellable product usually only has a single sellable equivalent on your site

Challenges of Selling Replacement Products

Merchants that sell replacement products have some unique challenges that OEMs don’t always have:

  • Brand recognition/visibility – In a sea of OEM and replacement part companies, how do you get your replacement products to stand out from the rest, particularly if those products are essentially the same product as what they’re replacing?
  • Product Mappings – If you’re a manufacturer that has a very large catalog of replacement parts, how do you identify those parts your products replace? Additionally, how do you do this at scale?
  • Trust – Great, you’ve solved both challenges above! Now that you’ve got customers at your front door, how do you gain their trust? You know your replacement products are up for the job (and maybe even more-so than the OEM products) but how do you convince potential customers, particularly those buying for the first time?
  • No Bait and Switch – Customers may be coming to your site expecting to purchase OEM products, not your branded products. Merchants need to make it really clear what a customer will be buying
  • Don’t Enable Competitors – Your team has spent valuable time and money building your database of replacement products. Don’t allow your competitors to easily mine this data

These challenges should be taken into consideration when attempting to model replacement products in your catalog.

Modeling in Magento

While Magento doesn’t natively support the sellable/non-sellable model (we wish it did), there are several approaches available for merchants. Note: two of the approaches we’re presenting will require customizations – make sure you’re working with a Magento partner to design/implement.

Approach 1 - Catalog of Only Sellable Products; Replacement Info in Sellable Product Description

If you’ve ever purchased replacement parts, there’s a good chance you’ve seen this model. You do a Google search for a product SKU and see a result that matches on a non-OEM site. The title of the page doesn’t necessarily match the SKU you entered but something on the page does. So, you click the link and see a product detail page for the non-OEM product. As you’re scrolling through the product attributes, you note that the description contains something along the lines of “This product replaces:” and a bulleted list of brand names/SKUs.

Since the SKU you typed into Google is present on the product description (or somewhere else on the page), that result appeared (note: unless this is a unique product, it’s also likely that this result ended up lower on the Google search results page. More on that later).

Outside of the description, there’s nothing obvious that this is a replacement for your desired product.

Setting up a product like this in Magento would be straightforward – you’d create the product, update the attributes based on the information you have for your sellable product and be sure to include all the OEM SKUs in the description.

Strengths of this Approach

  • Easy to Create/Update Products – Have a new sellable product? Just create it in the Magento admin and populate the product details
  • Catalog Size – With this approach, the total number of products in the catalog is exactly the number of sellable products you have. This keeps the Magento catalog size to a minimum which can help with overall system performance (think indexing, searching, admin performance, etc.)

Weaknesses of this Approach

  • Difficult to Handle Programmatically – Since non-sellable SKUs are just text in the sellable product’s description, it could be challenging to make programmatic updates to the catalog. For example, if your “mapping” of sellable to non-sellable products is managed in a database somewhere and you wanted to write code to have that information automatically updated on the site, it would be tough to do this with just plain text in a product description
  • Not Ideal for SEO – Remember our example above about searching by OEM SKU on Google? The results for a product page set up with this approach are likely to be lower in the list. Why? Well, Google will rank pages like this by keyword (in this case, SKU) lower because the SKU itself is buried in the description of the product. If the SKU were present in the product’s name or in other, higher priority elements on the page, it would get more SEO “juice”
  • Confusing for Customers – Your customers likely landed on your page by using details about the OEM product, not your product (this is particularly true if you’re a brand with limited recognition). They’re on your product page expecting to buy an OEM product but since the product detail page only has a single reference to the OEM SKU in the product description, there’s a good chance the customer won’t understand that this is a replacement product and may think they’re in the wrong place
  • Site Search – If your site has search (if it doesn’t, it should), customers who are using search are going to run into the same sort of issue they have with Google. If they enter an OEM SKU on your site, your sellable product will show up, not the OEM product. If there’s nothing on the search results page that clearly indicates that each product is a replacement product, customers will likely be confused
  • Browse by Brand – With this approach, you would not be able to give your customers the ability to browse products by the OEM brand (e.g. “Ford”, “Chevrolet”, etc.). The only products in the catalog would be your branded products
  • Enabling Competitors – If your team has built up a database of sellable/non-sellable mappings, they’ve probably spent a tremendous amount of time on this effort. By having a single product page with a listing of all OEM products it replaces, you’re enabling your competitors to easily scrape your site for this information which they could use to their benefit

Approach 2 - Catalog of Only Sellable Products; Replacement Info in Custom Attributes on Sellable Product

This approach is a variation of the approach above but with a custom attribute that would be created on products. Attribute values would contain an array of SKUs that the sellable product replaces (a slight alternative to this approach is to create a new object type in Magento that is a list of SKUs and relate that object type to the sellable product).

In places where the sellable product will be displayed, the array of SKUs could be read and displayed (either in the product description or in its own section on the PDP).

Additionally, this information could be used to overload search in Magento such that multiple index entries would be created for each non-sellable SKU with the actual product being the sellable product. So, if a customer attempts to search for an OEM SKU, it would appear as its own search result even though clicking into it would bring the customer to the sellable product.

Strengths of this Approach

  • Programmatically Control Replacement SKUs – In this model, the list of SKUs can be easily controlled through programmatic means. If you needed to add an OEM SKU to a sellable’s list of replacements, you’d just read the product’s array, add the item to the array and save it back to the sellable product
  • Site Search Could Be Better – By overloading site search, you can give customers a better experience by showing them entries that are a closer match to the OEM keywords they’re likely using (e.g. SKU, product name, etc.)
  • Catalog Size – Like approach 1, the catalog would only contain products that are sellable

Weaknesses of this Approach

  • Code Awareness of Custom Attribute – Areas of Magento where you’d want to show OEM SKUs (e.g. PDP, product listing pages, cart) won’t automatically know how to render the SKUs within this custom attribute. Customizations will be needed in several front-end templates to display this information as desired
  • Overloading Site Search is Hard – While it is possible to “trick” search into thinking there are “phantom” products in the catalog, it’s not at all trivial and the implementation could cause issues as Magento and/or Elasticsearch are upgraded over time
  • Not Ideal for SEO – While site search may improve with this approach, SEO will not. Search engines like Google will still crawl your PDPs as they did with the SKUs in the description, so you won’t get any SEO benefit with this approach
  • Browse by Brand – Like approach 1, customers would be unable to browse products by OEM brand name
  • Enabling Competitors – Same as approach 1

Approach 3 - Catalog of Sellable and Non-sellable Products; Only Allow Purchase of Sellables

In this approach, both sellable *and* non-sellable products are created as Magento products. Non-sellable products have the same attribute values that their corresponding sellables have except for the product name and SKU. In this set up, the name would be the OEM name (e.g. “2014-2021 – Chevy Tahoe Fuel Pump”) and the SKU would be the actual OEM SKU (e.g. “CHEV_FUEL_PUMP_1234”).

A custom attribute is created called “replacement_sku” and populated on the non-sellable products (this is the “pointer” back to the sellable product). When a product has a replacement_sku defined, it’s considered non-sellable. When these products are displayed on the site (product listing pages, product detail pages, search results, cart, etc.), custom logic resolves the sellable product via the pointer and substitutes text on those listings that clearly shows the customer will be buying a replacement product. For example, the Chevy fuel pump example from above may show a product name of “Acme Co. Fuel Pump ABC123 replaces 2014-2021 – Chevy Tahoe Fuel Pump”.

From the customer’s perspective, they see the information they would expect to see – the OEM name and SKU but they also see that the product they’ll buy is the sellable product.

When the customer checks out, custom logic performs a “swap”. Instead of putting the non-sellables onto the order, the corresponding sellables will be used for the order.

Strengths of this Approach

  • SEO – meta information can be OEM-specific, OEM product has its own page which increases the weight of the page from an SEO standpoint; products can have their own images (even if they’re the same image between sellable and non-sellable) – because of this, we can name the image specific to the SKU of the product. This also improves SEO as Google sees that the image is closely related to the product
  • Site Search – Elasticsearch would automatically index sellable and non-sellable products as they’re both represented in the catalog. A customer can search for OEM product information or your sellable’s product information and results would be returned in either case
  • Reduces Customer Confusion – Customers will land on a non-sellable product that’s familiar to them (since you’d be using OEM data) and, if you carefully choose your language on the page, they’ll know they’re purchasing a replacement product
  • Browse by Brand – Because non-sellables are their own product, they can have some product attributes that are different than their corresponding sellable product. Brand is a good example of this. In our scenario above, the Chevrolet fuel pump would have a brand of Chevrolet, which you could then use throughout the site – search, layered navigation, dedicated brand pages, etc.
  • Easier to Run Ads for OEM Products – Since your customers are likely on Google searching by OEM data, you’d want to be able to target ads to them using that OEM data. In this approach, you can create ads linking customers directly back to the non-sellable product (knowing that they’ll purchase your sellable product)
  • More Difficult to Scrape – While it would still be possible for a competitor to script a data-scraper, the task of doing this will be more challenging as you’ve spread the mapping of sellable to non-sellable products across individual products as opposed to having this mapping all on one page for each sellable product

Weaknesses of this Approach

  • Customizations Needed – The implementation of the custom sellable product resolver and subsequent display of the replacement data throughout the site will require help from a seasoned Magento development team
  • Catalog Size – This approach can significantly increase your catalog size if your sellable products replace a larger number of non-sellables. We’ve seen this approach used in Magento 1 and with a catalog of 280,000 products, it brought Magento to its knees with products indexing issues. After moving to Magento 2 and keeping this approach, Magento handles this set up with no noticeable performance issues
  • Maintainability of Product Data – Updates to sellable products will likely mean that you’ll need to update the corresponding non-sellable products. If you’re making these updates programmatically, this needs to be considered. If you’re not doing this programmatically, your ecommerce team needs to know that a single update to a sellable may require multiple updates to non-sellables
  • Could Be Considered Bait/Switch – since we’re swapping the sellable product for the non-sellable at the time the order is placed, some could say this is a bit of a switch that the customer may not expect. To avoid frustration from the customer’s perspective, we use the “replaces” text in as many places as we can so it’s obvious. Additionally, and this goes back to instilling trust with the customer, there’s a very clear guarantee statement above the product details on each PDP. This statement reinforces that the manufacturer is providing replacement parts that are of as good quality, if not better, than the OEM products they replace

More Details About Approach 3

We’ve recently implemented this option for a client of ours that has over 280,000 products in their catalog. About 60,000 of those products are sellables. Here are some details on how we approached this from a technical standpoint in Magento:

  • As mentioned above, we created a custom attribute on products called “replacement_sku”
  • In this case of this solution, all product data is managed in an ERP and synced into Magento via custom REST endpoints we created
  • These endpoints are aware of the sellable/non-sellable model we’re using. As such, they know when a sellable product is updated, all the non-sellable products that have a matching replacement SKU must be updated as well. Additionally, the endpoints know that if a new non-sellable comes into the catalog with a replacement SKU that doesn’t exist, the product will be marked as inactive (until the corresponding sellable comes in via the API, at which point the non-sellables will be activated)
  • Implementing the logic for showing sellable information on non-sellable product listing and details pages was relatively straightforward:
    • In most cases, we leveraged plugins where product data was being used. When the product name was rendered, we’d come in after that and perform replacement logic to prepend the “<Sellable Product Name> replaces ” text
    • In places like the Magento admin, we’d update any templates where we wanted to show the “replaces” text
  • Since all our product updates happen via the API, we did not need to handle situations where Magento admins would make a manual change to a sellable product and we’d need to propagate down to the corresponding non-sellables (although if our client wanted/needed to update product data in the admin, we would have done this in a similar manner to the API)
  • There are many, many places throughout Magento where product names are displayed and we didn’t necessarily catch them all right away. In most cases, showing the OEM product name on its own was desirable (e.g. in search results) but in other cases, showing the “replaces” text was critical. Here are a few examples:
    • Transactional emails – when someone purchases “Acme Co. Fuel Pump ABC123 replaces 2014-2021 – Chevy Tahoe Fuel Pump” but the transactional email shows “Acme Co. Fuel Pump ABC123”, it will be very confusing to users
    • 3rd Party Modules – we use often use 3rd party modules to speed our development time. For this solution, we needed to make changes to some of these modules so they’d be aware of our sellable/non-sellable model

Wrapping Up

While Magento doesn’t provide a model for selling replacement parts OOTB, it does provide the framework for extending the platform to implement such a model. This extensibility is one of the many reasons we love to develop solutions on top of Magento.

If you’re a merchant looking to sell replacement products online, you’ll need to have a strategy in mind regarding your catalog structure and how that’s reflected on your site. You’ll want to balance ease of implementation, ability to maintain product data over time and, most importantly, how customers find and buy your products.

If you’re already selling replacement parts and your solution isn’t optimal for your needs or if you’re just starting to think about how you would go about selling these types of products, let us know. We’d be happy to talk through approaches that could work for you.

Like this article?

Share on facebook
Share on Facebook
Share on twitter
Share on Twitter
Share on linkedin
Share on Linkedin
Share on pinterest
Share on Pinterest

© 2022 All rights reserved