Full-service eCommerce Support for Ammunition Depot

Like many eCommerce brands with big growth goals, Ammunition Depot realized they weren’t on a platform that could scale along with their business.

As they expanded their product lines and found themselves needing to add more categories and SKUs, they realized they needed to make a move. They had limited eCommerce development support for their current PrestaShop platform, along with big dreams to become the Amazon of ammunition, so they turned to Classy Llama for help.

ON A MISSION TO PROTECT

Ammunition Depot was founded by freedom-loving Americans who believed two things: (1) it is every American’s right and responsibility to defend themselves, their family, and their country; and (2) without ammunition, none of that is possible. 

With seven children between them, the owners of Ammunition Depot felt very strongly about the responsibility of keeping families safe.

Therefore, from their founding, it’s been their goal and mission to provide the American public access to high-quality ammunition at the lowest possible price with the best customer service they have ever experienced. Ammo Depot isn’t interested in simply providing the best service in their industry—they’re goal is to provide the best service anywhere. Ever. Period. 

As Ammunition Depot has grown over the years, they’ve also had the chance to pursue other passions through their brand’s success, like creating numerous jobs for their hard-working community in Florida, as well as supporting many charities and foundations for veterans, law enforcement, and the shooting sports. 

In 2018, when the Ammo Depot team knew it was time to push their growth goals forward so they could continue to create jobs, support their community, provide superb customer service, and the lowest prices possible, they knew it was time to say goodbye to their limited eCommerce platform.

PRESTASHOP: NO ROOM FOR AMMO DEPOT TO GROW

Ammunition Depot‘s eCommerce platform, PrestaShop, was limiting their growth potential. They were running into problems with scalability and weren’t able to add new categories or SKUs without significant development support. Even worse, they couldn’t find the development support for PrestaShop they needed

This made the Ammo Depot team feel frustrated and limited in their ability to grow and serve their customers with the high quality customer service they desired. They knew they needed to move platforms, but were unsure what the next steps should be—only that whatever the solution was, it had to have as little effect on the customer’s experience as possible during the move. That’s when they came to Classy Llama.

AMMO DEPOT’S eCOMMERCE ROADMAP

The team at Classy Llama’s first step when creating strategic roadmaps for any eCommerce business is being absolutely sure we understand the brand’s vision, goals, and motivations. That way every recommendation we provide is assured to be in complete alignment with a client’s objectives.

When Ammo Depot came to us unsure of how to proceed, that’s exactly where we started: sitting down with Ammo Depot to discuss their passions and their needs, the biggest of which was a solid site on a platform that could allow their business to scale along with the ability to easily add new business channels.

From there, our team conducted an eCommerce assessment of the Ammunition Depot website and determined the best way for them to achieve their eCommerce goals was with a new website build on the Adobe Commerce (Magento 2) platform.

In an effort to streamline the build of key user experience elements on Ammo Depot’s site, we also included access to a group of Classy Llama developed extensions for Adobe Commerce (Magento) in their build. This package provided core UX components developed by our team over multiple years working on the Magento platform and was able to create excellent UX functionality, while also accelerating the UX portion of the build. 

In order to maintain continuity of service and customer support that’s so important to Ammo Depot, the Classy Llama team began building a custom responsive Magento theme with a similar customer experience to their PrestaShop site. The custom theme is also designed to provide the Ammunition Depot team with a scalable and easy to maintain architecture.

Through Ammo Depot’s Magento 2 build, the Classy Llama team was also able to build in several features and integrations that further addressed the brand’s needs: 

Restrictions Engine & Fraud Solution

As part of a future-proof scalability plan, the Classy Llama team built a configurable, rules-based engine inside of Magento that allows the Ammo Depot team to create rules that are capable of triggering actions based on a combination of product attributes, customer attributes, zip codes, and states. This engine is able to both affect the checkout experience both by messaging to a customer that they can’t proceed with their order, restricting shipping methods, and by placing orders in specific statuses for counter-fraud review. This engine is able to accommodate new products (such as firearms) easily meaning the Ammo Depot team doesn’t have to worry about product additions becoming an obstacle to their growth goals.

Federal Firearms Licensed (FFL) Dealer Selector 

This store locator experience allows shoppers to ship their order to a local FFL holder and allows the Ammunition Depot team and customers to enter new potential markets. 

Address Verification 

This custom business logic built for Ammo Depot is designed to flag shipping addresses for verification, eliminate that verification after a certain period of time, and alert the appropriate employee. 

PARTNERING TOGETHER NOW AND INTO THE FUTURE

The biggest joy for llamas is to serve our clients through a project so well, they want to trust us with more work for their brand. 

After the initial Ammo Depot site was rescued and launched on the Adobe Commerce (Magento) platform, their team signed on to an ongoing maintenance retainer with our team. Through that retainer, we’ve been able to provide even more services for Ammo Depot that run the gamut of our full-service offerings. 

SEO and Core Web Vitals Audits

Last year, while under retainer with Classy Llama, the Ammo Depot team noticed that their site traffic had suddenly declined across the board and they had no idea why. They contacted the company that did their SEO work at the time and they couldn’t account for the cause of the issue either. 

Turning to Classy Llama for help, our team recommended they start with our free Core Web Vitals Report, which is designed to give a high level overview of the problems on a website related to search rankings. 

The results of that report were overwhelmingly negative, meaning their site scored low on the Core Web Vitals metrics, which accounted for the loss in organic web traffic and led the Ammo Depot team to ask Classy Llama to provide a full remediation audit for search ranking issues on their site. Once completed, the report delivered to the Ammo Depot team included recommendations for the following: 

SEO 

-Internal Site Health 

-Core Website Vitals 

-SERP Features 

-Backlinks 

-Google Analytics 

-Google Search Console

-Keywords

-Competitor reports

The ultimate goal of this audit was to determine recommendations for a plan that can ensure organic traffic increases, but more importantly, that organic revenue continues to increase year-over-year. Now, the Classy Llama Development team is working on the needed Core Web Vitals remediations, while the Digital Marketing Team focuses on implementing the rest of the search marketing recommendations from the audit, setting the Ammo Depot team up for success and growth. 

AMMO DEPOT: ROOM TO GROW

Ammo Depot’s journey with Classy Llama is the kind of client relationship that makes llamas happy!

Not only were we able to provide site rescue support and get their initial launch off the ground, but since then, our ongoing relationship with Ammo Depot has given us the opportunity to truly partner with their brand and provide value to every aspect of their business. 

In fact, our Account Executive team was able to connect with the Ammo Depot team at the end of 2021 and create a full 2022 roadmap of initiatives that our teams are now delivering on. That’s what we mean by “full-service eCommerce agency”—we’ve got your back on everything from platforms to payment solutions

As a result of our relationship with Ammo Depot, their team has what they need to keep their promise of efficient customer service and the best ammo prices around—giving them even more room to grow.

Maintaining Excellent Customer Service at Scale for R&R Products, Inc.

Sometimes, no matter your best intentions, a project can be laden with difficulties. That was certainly true for the R&R Products, Inc., company in the early stages of their eCommerce journey. 

When the R&R team decided their new goals were to expand from the golf products industry into the landscaping market, all while keeping up their commitment to customer service, they knew they would need a stable website with a great user experience. Unfortunately, they were working with a Solutions Integrator that wasn’t able to handle the complexity of the upgrade their website needed, from M2 Open Source to M2 Commerce Cloud. 

That’s when R&R began their search for an agency partner that had the experience and confidence needed to get into the weeds of coding complexities and also the expertise to pull the project out of those same weeds. 

CUSTOMER SERVICE AND GROWTH GOALS

R&R Products, Inc., is a name that’s synonymous with quality. As the world’s leading manufacturer of turf equipment replacement parts for the commercial turf industry, their dedication to serving the needs of golf courses, athletic fields, and more with high quality products has never wavered since their founding in 1971.

Not only that, despite their catalog featuring over 32,000 quality replacement parts, accessories, and more, their team takes superior customer service so seriously, they proudly offer a 98% rate on products being shipped the same day their order is received. When you order from R&R, you can be assured that not only will you get a quality product, you’ll also get it in a timely fashion. 

Looking to the future, R&R is also pursuing growth into the general landscape industry, hopeful they can bring their brand of quality and service to another market. 

But, with a site that worked directly against these objectives, an update with better functionality wasn’t just wished for—it was an absolute necessity.

BLOCKED BY FAULTY TECH

Standing in the way of the R&R team’s goals was an outdated website that wasn’t functioning at a level commensurate with their commitment to customer service. Their M2 Open Source website contained an abundance of archaic, specialty code, making it slow to load and hard to use. 

Having a stable website with a great user experience is absolutely crucial to R&R Products’ mission that every shopper gets the same excellent customer service every time they visit their website. 

Unfortunately, the complex fixes that would be needed weren’t achievable with the SI they were currently working with. Facing frustrated customers and internal team woes as well, Brian Larson from R&R felt the pressure to fix their eCommerce presentation so acutely it followed him home. He felt unable to disconnect from the stress even in his down time. If the company couldn’t get a better website launched, their eCommerce presentation would continue to stall the growth and expansion R&R saw for their brand. Not only that, their team members would suffer the continued weight of that stress. 

FINDING AN ECOMMERCE PARTNER WITH FOLLOW-THROUGH

When the R&R team came to Classy Llama, we knew it would be a difficult project, but that didn’t dissuade us from digging in. Delivering what clients need even through storms of difficulty is what lights llamas up, so we rolled up our sleeves and got to work discovering what R&R needed to achieve their goals, and how we could make it happen for them. 

Fitment, UX, and more: Solutions for R&R

Because of the intense level of customization R&R’s M2 Open Source website started with, Classy Llama knew it wouldn’t be a simple process to move them to Adobe Commerce (Magento). Each area of their site that was built with custom code needed to be reviewed and a new—hopefully native to Magento—solution would need to be developed. From shipping to UX to their ERP, Classy Llama began the complicated process of auditing, roadmapping, and implementing each Adobe Commerce integration that would bring R&R’s website from buggy and archaic to functional and technically up-to-date. 

One feature that was intensely important to R&R’s user experience functionality and, therefore, their goals of stellar customer service, was the interactive schematics. This functionality, often referred to as, “Fitment,” is designed to make searching for parts super simple for shoppers and is extremely popular among all kinds of parts sellers. Fortunately, Classy Llama’s extensive experience in the automotive industry and dealing with large catalogs of aftermarket parts made us the team with the technical chops needed to create an excellent fitment search solution for R&R. 

Lawn mower schematics display with all parts showing.
Hover over the part(s) you want to buy, that part lights up in the schematic and vice-versa.

After identifying that the previous SI’s work on the fitment solution would need to be scrapped, Classy Llama’s UX team got to work rebuilding the code from scratch. The team also implemented a functionality that made it possible for customers to save the models of their machinery (ex. lawn mowers) to a personal login so that when they searched, only parts for the models they own would display. 

When customers create an account, they can save their equipment and only shop what they need.
An Ongoing Partnership

After almost two years of working through various problems during the new Adobe Commerce build, the Classy Llama and R&R teams were able to build the kind of trust and connection every brand needs in their eCommerce partner. Shortly before the official launch date, R&R signed on to an ongoing partnership with Classy Llama, to provide post launch support as well as continued maintenance on whatever they need most. 

Not only that, during our ongoing maintenance, the solutions team determined R&R would benefit from an upgrade to their Adobe Commerce site. Classy Llama is now working toward kicking off the upgrade project as soon as possible. 

R&R’S SERVICE PROMISES KEPT

Now that R&R Products, Inc., has an eCommerce partner like Classy Llama on their side, their brand is primed to achieve their growth goals. Plus, their dedication to customer service excellence has the technical back-up necessary to make sure they always keep their promise to their customers. 

Selling Aftermarket on Adobe Commerce: 5 auto parts eCommerce solutions

Selling aftermarket parts online is a unique challenge. Most parts merchants have incredibly large catalogs with many complex categories. Not only that, most customers now expect an intuitive search experience where they can enter their specific year, make, and model or even a VIN lookup to ensure they’re getting a part that fits.

When thinking about this kind of advanced functionality, one of the most significant decisions that parts sellers and automotive merchants face is selecting their eCommerce platform.

Let’s take a look at some specific benefits of the Adobe Commerce platform (backed by Magento) and how they relate to selling automotive parts online.

1) Caching and Progressive Web Apps

Adobe Commerce (Magento) is a very powerful application that provides a ton of features out of the box. It can also support massive product catalogs and be extended with customizations. 

Can all of this flexibility and power really be delivered at speeds the modern shopper expects? Yes!

Adobe Commerce provides two different methods for building the user interface of your site, both of which have unique solutions for speeding up page load times. You can use the responsive theme framework with full page cache, or build your pages with Progressive Web App technology.

Method One: Full Page Cache

When you have a sizeable parts catalog, there can be a large number of product pages being accessed by multiple users concurrently. While many factors contribute to page load times – from hosting and application performance to image optimization – load times can be significantly reduced with Adobe Commerce’s built-in full page cache.

As pages are served the first time, these page files are stored in the cache, allowing them to be delivered to the end user faster the next time they are accessed. This not only speeds up the response time, but also reduces the load on the Magento application, alleviating additional slowness during peak traffic.

Method Two: Progressive Web Apps

The newest way to build the front end of your site is using Progressive Web Apps (PWAs). Adobe Commerce’s PWA Studio provides a set of developer tools that makes it easier for merchants and developers to build fast and engaging mobile experiences.

Using modern web technologies, PWAs provide much faster load times and more of an app-like experience on mobile devices. PWAs cache most of the assets in your device’s browser and communicate with the site via API to get dynamic data and perform actions, providing an overall faster experience for the user.

This is important in the automotive industry, as many times shoppers are on mobile devices in the shop, at the car show, or on the go, and will return to your site multiple times as they look for that perfect part. With Adobe Commerce (Magento) PWA, mobile shoppers also benefit from app-like features such as native push notifications and limited offline access without requiring the user to install an app.

2) Powerful Attributes

Adobe Commerce and Magento’s Entity, Attribute, Value (EAV) data model provides tons of flexibility out of the box. With the ability to add different types of attributes to your products, you can refine how shoppers find what they need.

Adobe Commerce gives you the ability to set up different types of attributes depending on what data you need in order to identify or describe your products. These include:

  • Text Field
  • Text Area
  • Text Editor
  • Date
  • Yes/No
  • Dropdown
  • Multiple Select
  • Price
  • Media Image
  • Fixed Product Tax
  • Visual Swatch
  • Text Swatch

These attributes allow you to get very detailed in providing specs for your products. Attributes can then be set to be used in layered navigation, which allows shoppers to drill down to the exact product they are looking for. Attributes can also be used for displaying certain details on the product page, or even to power configurable product variations (like color, size, etc).

You can create attribute sets for the various types of products you sell. For example, you can have one attribute set for batteries and another for mufflers, each containing different sets of attributes. This makes managing your product catalog much easier. When you add a new product, you can simply select the relevant attribute set that includes all the attributes you need for that type of product.

3) Fitment

Fitment provides a method for shoppers to “shop by vehicle” and makes the shopping experience more streamlined by only displaying products that are compatible with the vehicle selected.

Rather than clicking through categories and subcategories of products for all different vehicles, fitment allows users to enter their vehicle information when they arrive on the site and review only relevant results.

While fitment is not a native concept in Adobe Commerce, it’s something that many automotive merchants rely on. Fortunately, there are a couple of ways to add fitment functionality to Adobe Commerce.

One way is to build a custom solution – a benefit of having an open source platform that’s designed to be customized. A Magento-certified developer or agency can build an integration with ACES (Aftermarket Catalog Exchange Standard) fitment data or other data sources to power a year, make, model lookup.

If you want to avoid a custom solution, you can leverage Adobe Commerce’s extension marketplace or third party apps that plug and play to provide shop by vehicle functionality. For example, Classy Llama built an automotive accelerator that includes a fitment extension.

This extension supports various fitment fields, so in addition to the standard year, make, model, you can have fields for the drivetrain, body style, etc. It also allows customers to save vehicles to their “virtual garage” so they don’t have to select their vehicle each time they return to your site, while allowing them to easily switch between multiple vehicles they may own. Classy Llama’s fitment extension also allows you to integrate with various data sources such as ACES/ PIES, vendor data, or a product information management system.

4) Multiple Product Types

A unique advantage of Adobe Commerce is the flexibility it provides for catalogs with different types of products. Adobe Commerce (Magento) starts with the concept of a simple product and then builds upon that. Simple products are a single product with no variations or configurations. Adobe Commerce then allows you to create configurable, bundle, and group products. You can assign simple products to these other product types and allow customers to select from different variations or kits.

Configurable products allow you to create product variations based on product attributes. For example, you may sell a specific product in either a black or chrome finish. This allows the shopper to select from these options on the product page and see an updated image for the option chosen.

Bundles or groups are useful if you want to sell a set of parts for an assembly. You may have a part that requires several nuts and bolts, gaskets, wires, etc. and you can configure a bundle to include all the parts needed for the job. Adobe Commerce also provides the ability to make your bundle products configurable — letting a shopper pick from a list of products to build the kit they need.

5) Flexible Integrations

Many times automotive merchants are working with older back-end systems that have very specific integration requirements, such as an ERP that houses customer data, inventory, or a point-of-sale system. Here are some valuable ways that Magento 2 provides flexibility when integrating with other systems:

  1. Pre-built integrations are available through various software vendors.
  2. The API for Magento 2 provides access to nearly all data you would need in order to build a custom integration if needed.
  3. Custom API endpoints can be developed into the platform allowing full control over how data is sent and received.

With these tools, there really is endless flexibility in how you can integrate with Adobe Commerce and Magento.

Conclusion

While the automotive industry has many specific needs and challenges, a flexible and powerful eCommerce platform like Adobe Commerce will allow you to create a great shopping experience, while also equipping you to integrate with your existing business systems and processes. For these reasons, Adobe Commerce is a great fit for any automotive parts site, especially those with big catalogs and special product categories.

PurposeBuilt Brands: 9 Websites. One Shopping Cart. No problem.

A huge product catalog can make a website difficult to navigate, which leads to customers bouncing and, ultimately, a loss of revenue or even a bad reputation. But for a company like PurposeBuilt Brands, with nine huge product catalogs, customer confusion can become an even bigger problem.

THE CLEANING REVOLUTION

Since 1941, the Weiman family has been pioneering a new revolution they like to call, “So much more than clean,” when they started developing their expansive line of cleaning products starting with Weiman Wood Polish. This product was a first-to-the-market of its kind, formulated specially to preserve and protect fine wood furniture.

Since then, Weiman has continued to develop more first-of-a-kind cleaning products, including pioneering glass cooktop cleaner in the 1980s. The Weiman Family’s dedication to creating products that go beyond simply cleaning and instead beautify and fortify people’s belongings led them to develop a diverse portfolio of cleaning product brands. 

What started as Weiman in 1941 is now known as PurposeBuilt Brands, a company passionate about building premium brands that offer safer, gentler, and more sustainable cleaning products: “Our desire is to be better for you, your family, your business, and the environment.”

PurposeBuilt believes in operating with a purpose and passion for creating products that are prized by their users and ultimately better their lives. 

eCOMMERCE STRESS AND STRUGGLES

Because PurposeBuilt Brands is dedicated to continually improving their customer’s lives by adding to their portfolio of exceptional brands, they came to a point as a company where they realized they needed cohesion and improvement in their eCommerce presentation. 

Their previous Magento 2 websites were extremely buggy and overloaded with third-party plugins that made daily site maintenance so difficult and time consuming the upkeep was virtually impossible for the PurposeBuilt team. Because none of their sites were connected, their team had to play a game of debugging whack-a-mole each time Magento went through an update, fixing issues on one site and then checking through code on the other 8 until they could fix each site’s issues. 

Not only that, PurposeBuilt offers a robust library of helpful content available on most of their websites that drives traffic to their eCommerce stores, but their WordPress blog was constantly in danger of going down. Pat Lee, the eCommerce Director for Weiman, and the rest of his team were frequently stressed and worried about the possibility that their number one source of inbound website traffic would be suddenly and unexpectedly non-functional. 

Finally, each PurposeBuilt Brand had its own website and they weren’t connected to each other, causing their customer base to be unaware of the full catalog of quality products available to them. Their eCommerce team wanted to find a technical team with the chops to create a single shopping cart for their current brand portfolio that can scale as they add more brands. 

With their brand’s websites in such a precarious state and the anxiety of potentially losing traffic (and potentially revenue) looming over them each day, the PurposeBuilt team decided it was time to find a solution. 

CONNECTING A VAST BRAND PORTFOLIO

First thing’s first, PurposeBuilt’s team knew they needed a website with a much lower total cost of ownership. 

They began to seek a Solutions Integration partner that could debug their Adobe Commerce Magento 2 sites, reduce custom code, and centralize their website features. Pat at Weiman had worked at a company previously that partnered with Classy Llama and felt that our team was a perfect fit to solve their pain points. 

After an initial discovery period, the Classy Llama team determined making all the necessary improvements to Weiman’s current site would be time- and cost-prohibitive. We determined that, it would actually take less time, money, and effort to rebuild their Adobe Commerce M2 site from scratch. Not only that, a new build would create a website that was much more maintainable for the PurposeBuilt team providing them with the lower total cost of ownership they wanted — and with a lot less stress. 

During the new build, Classy Llama was able to help PurposeBuilt think more holistically about being a multi-brand company. 

A frustration the PurposeBuilt team and their customers alike had was the inability to shop all of the company’s brands at once. Because each brand had its own website, they also had their own shopping cart. But since one company owns all of the brands, wouldn’t it be easer if they somehow had a shared shopping cart between all of the PurposeBuilt brands?

The Classy Llama team said yes, it would, and created a brand switcher that would allow customers to add any product from any PurposeBuilt site and add it to one shopping cart. Not only that, we created a header functionality to make it easy for customers to switch from brand to brand seamlessly while shopping.

Now PurposeBuilt has the benefit of each of their brands having their own website, while also offering their customers the convenience to shop all in one place.

In addition to creating a stable, connected websites site with a single cart, our UX team created themes designed to help centralize branding fonts and colors without creating a cookie-cutter brand expression, given that each of PurposeBuilt’s brands are all distinct. Now their team has the ability to make one change to their pattern library and have it apply across all nine of their websites, or just as easily make a singular change to one of their brands. 

To solve PurposeBuilt’s problems with their WordPress instability, Classy Llama determined that the third-party extension Weiman was using to connect to their blog would not be stable on the Adobe Commerce platform. Instead, our team recommended implementing an Adobe Commerce (Magento) specific extension from MageFan, a hybrid WordPress and Adobe Commerce (Magento) blog solution. As part of this effort, the team was able to migrate a considerable amount of blog data from WordPress to Magento where it could be more easily stabilized and maintained, as well as customizing the blog styling on the blog landing pages to match the rest of their branding themes. 

Now the team at Weiman has stability for their current blog content and what they need to continue to develop an even more robust content library for their customers. 

Classy Llama also bolstered PurposeBuilt’s shipping solutions by making sure their preferred shipping partner ShipStation was still the best tool for their new sites. PurposeBuilt uses ShipStation to let customers track their order shipments through their Magento website.

After a quick audit to validate their choice, the solutions team began to integrate the shipping tool on Magento. During this integration, some unexpected bugs and challenges were discovered, but our technical experts were able to rally together, solve the issues, and get the ShipStation integration up and running. 

FROM CONFUSION TO COHESION

Thanks to the solutions built by Classy Llama, PurposeBuilt Brands now has a stable Adobe Commerce M2 site that’s able to maintain brand differentiation for each product in their portfolio. Not only that, the shopping cart integration allows their shoppers to browse each distinct brand while all of their sites are powered by one shopping cart. 

The ease of use for customers to shop all of PurposeBuilt Brands brought cohesion to their portfolio, allowing the company to better connect with their audience and bring them the high-quality products that they’re passionate about developing. 

PurposeBuilt’s team has been so happy with Classy Llama’s solution, they decided to sign on to an ongoing engagement with us before the build was even complete. Now that the website has launched, our ongoing services team is in place to provide site maintenance, further relieving the team’s stress.

As PurposeBuilt continues to build their brands, they now have a reassurance that they not only have a website that can expand along with their portfolio but also a partner who can help them with that expansion. Recently, Classy Llama developed a new project that kicks off shortly to add three additional product lines to PurposeBuilt’s website suite. 

Since working with Classy Llama, PurposeBuilt now has a stable Adobe Commerce M2 build that features multiple sites in one, cohesive yet distinct branding, and an ongoing maintenance partner in Classy Llama. Now that their team enjoys a better experience for their customers and less daily stress, they’re free to focus on what they love:  Developing more sustainable cleaning brands that can bring value to their customers’ everyday lives.

Quick in a Crisis: The Magento CVE-2022-24086 Story

Find out how Classy Llama’s rapid response to security threats keeps client data safe

Mondays are bad enough on their own but imagine this: you barely have a sip of your Monday morning coffee before suddenly being confronted with an intense security threat on the majority of your clients’ websites.

Unfortunately, that kind of Monday is all too likely for Classy Llama’s team. When it happened recently, they knew it was up to them to put the coffee down and get to work doing whatever they needed to in order to protect our clients from the security risk. 

eCommerce Security: More precarious every day

In a world where cyber-attacks are more and more common, it’s crucial for eCommerce businesses to have reliable security systems in place.

If you don’t have someone in-house to monitor cyber-security threats, and you don’t have an outside partner to help you, your eCommerce website data, including you and your customer’s personal identifying information and credit card credentials, are at risk.

It’s not a maybe or a possibility — without proactive measures against security threats, your eCommerce data is in danger.

In fact, in 2021 alone, Juniper Research group found that eCommerce fraud rates increased by 18%. Our eCommerce fraud protection partner, Signifyd, discovered similar findings and it looks like eCommerce fraudsters and hackers aren’t going to give us a rest in 2022.

The Threat: Adobe Commerce Sites at Risk of Hacking

On Monday, Feb. 14, Adobe announced a severe security vulnerability known as CVE-2022-24086. This vulnerability allows attackers to execute malicious code on vulnerable Adobe Commerce sites, and was rated a 9.8 out of 10 on the severity scale by Adobe.

Not only that, by the time Adobe announced the problem and published patches to correct the vulnerability, some 500 hundred Adobe Commerce sites had already been attacked by hackers using the CVE-2022-24086 flaw.

Given that a majority of Classy Llama’s client sites are hosted on the Adobe Commerce platform, we knew immediately that we had to act.

The Response: Classy Llama’s Client Teams in Action

As soon as Classy Llama’s internal teams were aware of this threat, they snapped into action. Step one was to get everyone together and explain the problem while simultaneously creating a deployment plan to patch the vulnerability.

There was only one issue: Classy Llama’s pledge to our clients is to always communicate when we’re deploying work on client sites and getting the sign-off before actually making changes to their code. That way, clients can prepare for any possible outages or slowed response times on their site or, at the very least, they can be fully aware of what’s going on with their website maintenance.

Unfortunately, as the Security Services Team, the Account Executives and Project Managers, and the Systems Engineering Team discovered early Monday morning, this security threat was catastrophic. If a bad actor exploited this flaw against any of our clients before we got the go-ahead to patch the problem, their entire company and client base could be compromised.

As always, our dedication to serving our clients the absolute best way we can won out. It may have been slightly outside our normal policy, but together, the Classy Llama Team decided they couldn’t wait; our clients needed protection now.

The team started implementing the security patch for CVE-2022-24086 on the morning of Feb. 14, 2022 and had finished patching every single client in less than 24 hours. Because client notices were being sent simultaneously to the patch deployment, many of our clients were fortunate enough to hear about the security threat only after their eCommerce site was no longer at risk.

The Result: Safe clients. Happy Llamas. 

By the next day, not one Classy Llama Adobe Commerce site was still vulnerable to CVE-2022-24086, thanks to the quick decision-making and execution tactics of our internal teams.

“Everything was handled great. I received alerts from a number of sources but Classy Llama was the first and had the patch installed right away,” Brian Larson, Vice President and CFO of R&R Products, Inc., said.

Our clients at Weekends Only were especially impressed and grateful about Classy Llama’s response to this threat:

“I can imagine that a vulnerability of that scale and urgency would be a difficult thing to manage across all of your clients, but you guys did a great job responding quickly with solid communication and execution. Before working with CL, it was pretty much on us to keep our eyes/ears open for vulnerabilities like this, and that usually meant we would find out about it several days late after stumbling across an article about it online. It sure is great to know you have our back when something like this happens. You guys were all over it and I can’t tell you how much I appreciate that.” Scott Antrobus, Product Manager of Digital Enterprises at Weekends Only, said.

Of course, as usual in our world, the unpredictable is the only thing you can count on …

Security Threat 2: The Sequel to CVE-24086

Just as the dust cleared from the CVE-2022-24086 announcement, Adobe dropped another bomb, announcing a new threat known as CVE-2022-24087 on Thursday, Feb. 17th.

The silver lining of the Feb. 14th CVE-2022-24086 threat is that Classy Llama already had a proactive game plan for patching flaws just like this new issue.

As soon as the Classy Llama team became aware of the second threat, they sprang into action.

While this threat and its patch followed a slightly more complex process to deploy, our internal teams followed the same protocol: round up the troops, get everyone in alignment on the plan, and then execute. Due to Classy Llama’s pre-planning and quick action, this secondary threat was neutralized for all our clients by the end of the next day.

“You handled things exactly as I would have hoped. In both cases, our internal security teams were already aware and asking about the risks, but you weren’t far behind with your initial communication. The process you used … led to patching the next day.” Jim Twieg, Vice President of Technology for Suttle-Straus, said.

Conclusion 

Here’s the thing: Classy Llama’s dedication to our clients’ security will always be unwavering, and our goal is to work tirelessly to address any and all security threats as quickly as possible.

When a severe security threat such as CVE-2022-24086 is announced, Classy Llama’s teams are now more primed than ever to spring into action to protect clients. The quick response time and execution tactics we can implement managed to prevent any major damage from being done to any of our client sites. Thanks to our proactive approach to security threats, our clients can rest assured that their eCommerce site is safe with us and when clients are happy, Llamas are happy!

If you’d like help with eCommerce security concerns, Classy Llama has a specialized Managed Service for cyber security, designed to create a strategic relationship between you and our expert teams so we can protect your site like we did for our clients in the face of CVE-2022-24086. Partner with Classy Llama and rest assured that someone always has your back when it comes to site security.

Contact us here to get started on a security discovery asap.

Helping Build America Through Scalable eCommerce with U.S. Lumber

As the largest lumber distributor in the United States, U.S. Lumber’s plans for the future have always included two things: pursuing continued growth while still maintaining the highest standards for their customers and suppliers. 

When their previous Solutions Integration partner wasn’t able to help them achieve their eCommerce goals, they reached out to Classy Llama to help get their site launch across the finish line. 

DISTRIBUTION RELATIONSHIPS BUILT ON TRUST

Founded in 1988 by Lawrence Newton, U.S. Lumber is the largest privately held distributor of specialty building materials serving much of North America.

In the more than 30 years since their founder began their brand’s journey, U.S. Lumber has grown by opening new markets organically, and, in recent years, by acquiring several more Lumber brands in their portfolio. 

As a brand, U.S. Lumber’s mission has always been much bigger than simply selling lumber products: they consider themselves a values-based organization, meaning they always seek to serve people first, and do what’s right even when it’s hard. 

Over time, U.S. Lumber has been dedicated to consistently enhancing their offerings while remaining committed to maintaining the highest standard of trust with customers and suppliers. Today, their company serves over 15,000 customer locations in the United States and Canada with more than 50 categories of unique specialty building products.

That’s why U.S. Lumber’s eCommerce presentation is so important to them: their website should always be another expression of their commitment to excellence and continually help build trust with their customers. They need an eCommerce presence that ensures their growth goals and excellent customer service mission are never at odds, while also meeting their most important objective: creating a brand that can make a difference in our world one person at a time. 

As with anything worth doing, though, achieving these goals through eCommerce didn’t come without its share of obstacles. 

STALLED CONSTRUCTION WOES

When U.S. Lumber was ready to push forward with their growth goals through eCommerce, they reached out to a Solutions Integrator to help them build and launch a site that met their brand needs now and had the kind of foundation that could grow alongside their business. 

Unfortunately, after almost 2 years, that agency partner wasn’t able to come through for them and their site was still unlaunched. With U.S. Lumber’s eCommerce goals out of reach with their current SI and their team feeling frustrated and unsupported, they knew it was time for a change and reached out to Classy Llama. 

MILLIONS OF PRICING INSTANCES? NO PROBLEM

After connecting with the U.S. Lumber team about their frustrations, our team immediately engaged in a paid discovery process. Instead of providing cookie-cutter solutions, our team believes in the importance of discovering what a brand’s objectives are and creating custom road map to help our clients achieve those goals. 

With U.S. Lumber, this process was particularly helpful as we were able to reassure their team that all our recommendations and work would align with what their brand wanted to achieve in the future. 

Following the discovery process, Classy Llama determined that U.S. Lumber would be best served by a phased approach. First, our team rescued their current build by upgrading from an outdated Magento 2 version to the current version, as well as ensuring the code had the foundation needed to scale the site in the future. Once their current site was launched and functional so their brand could maintain contact and relationship with their customer base, our team moved into phase 2, where more customizations to the Magento code were developed. 

CUSTOM PRICING DISPLAYS FOR EACH UNIQUE AUDIENCE

Because U.S. Lumber distributes their products all over the U.S. and Canada, that means their pricing and shipping rates are going to be different depending on where their customers live. In order to make this simple and easy for shoppers to deal with, their Magento site needed a functionality called a that enabled the correct pricing to display to the correct customers based on what U.S. Lumber branch their company is located in.

This may sound pretty simple on the surface, but given the large number of branches and products offered by the entirety of the U.S. Lumber catalog, our team determined that amounts to over 11 million different pricing combinations. The solution built by their previous SI wasn’t able to scale with this pricing increase, which also meant it wouldn’t be able to scale in the future as U.S. Lumber continues to grow. 

Classy Llama architected a branch-switcher solution that allowed the site to display customer-specific pricing without causing any loading time issues for the customer, as well as provide a mechanism to update pricing data through the ERP daily. Not only that, the solution built is so efficient, the entire process of updating the 11 million+ pricing differences only takes 45 minutes. 

Additionally, the tech team was able to meet all of U.S. Lumber’s B2B requirements through native Magento code, making the website cost less to build and maintain throughout their future scalability needs. Essentially, Classy Llama was able to eliminate entire classes of future cost or risk by ensuring that their B2B solutions were architected within the Magento framework, including the branch switcher solution.   

MAKING PROGRESS THROUGH A WELL-CONCEIVED PATH

As Phase 2 of U.S. Lumber’s engagement with Classy Llama was nearing completion, their team decided that an ongoing relationship with us would suit their eCommerce needs best and signed-on to a full service retainer. That means that we get the opportunity to become U.S. Lumber’s daily partner in eCommerce growth as they move forward with their brand and scalability goals. 

Currently, our team is working closely with theirs to create a strategic road map for the U.S. Lumber brand in 2022 and beyond, including how to add more branches to their current site, as well as create a new website for another brand they recently acquired. 

U.S. Lumber’s team went from feeling let down by their previous SI to feeling supported in both the short and long term with Classy Llama as their agency partner. As their brand continues to scale and provide the lumber needed to build America’s schools, houses, and backyard projects, they can rest assured they’ve got someone in their corner who not only supports their goals, but also their mission: serve people well and do what’s right, no matter what. 

Fitment on Adobe Commerce: Improving the parts shopping experience

When it comes to shopping for auto and manufacturing parts, fitment is the perfect fit.

Fitment provides a method for shoppers to “shop by vehicle” and makes the shopping experience more streamlined by only displaying products that are compatible with the vehicle selected.

Rather than clicking through categories and subcategories of products for all different vehicles, fitment allows users to enter their vehicle information when they arrive on the site and review only relevant results. Being able to find the right part that will fit your car perfectly is essential, and that’s why the Adobe Commerce platform is a great choice for part sellers with large catalogs that also want a fitment extension. 

Adobe Commerce, backed by Magento 2, has all the technical capabilities and features sellers need to create a fitment shopping experience that makes it easier for customers to find the parts they want.

While fitment is not a native concept in Magento, it is something that many automotive and manufacturing merchants want to incorporate on their Magento websites. Fortunately, there are plenty of ways to add fitment functionality to Magento.

With fitment on Adobe Commerce, sellers can create a completely customized fitment experience for their customers, and that’s sure to improve their shopping experience.

Custom Fitment

One way is to build a custom solution — a benefit of having an open source platform that’s designed to be customized. A Magento-certified developer or agency can build an integration with ACES (Aftermarket Catalog Exchange Standard) fitment data or other data sources to power a year, make, model lookup.

Fitment on the Magento Marketplace

If you want to avoid a custom solution, you can leverage Magento’s extension marketplace or third party apps that plug and play to provide shop by vehicle functionality.

Features and Benefits of Fitment on Adobe Commerce

1) Fitment Fields

Fitment fields are various display filters for parts that offer a powerful search result organization benefit. Users are able to filter or sort products by attributes such as price, make, model, VIN, and more, making it easy to narrow down their search and locate the correct part with minimal frustration.

2) Virtual Garage

This fitment feature allows customers to store the type of car or other machinery they own on the website. That way, each time they log in and search for parts, only those that fit their garage will appear, creating the kind of custom experience shoppers love.

3) Data Integration

When you partner with an agency like Classy Llama to get a Fitment extension on your Adobe Commerce site, you can also integrate with various data sources such as ACES/ PIES, vendor data, or a product information management system. This  ensures fitment data is accurate and relevant seamlessly.  

4) Product Information Management

If you already have fitment data integrated with your product information management system, Magento’s extension manager now makes it easier to create fitment indexes to help boost fitment performance.

5) Improved User Experience

With fitment on Adobe Commerce, customers are able to easily find the correct part for their vehicle or other machinery. That not only decreases shopping efforts and time, but also lets customers get in and out of your site quickly so they can focus on other areas of life.

Why Fitment Fits

Fitment is a great fit when it comes to making the parts shopping experience better, especially for the kind of larger catalogs often found on the Adobe Commerce platform.

Read more about fitment and Classy Llama’s work with fitment solutions here.

Making the Digital Economy Personal: Classy Llama at Adobe Summit 2022

Global Digital Commerce Insights 

From March 15-17, Classy Llama will join with digital experience makers from around the world to educate, learn, be inspired, and make connections with merchants like you at Adobe Summit 2022. This global event is an all-digital experience featuring innovative keynotes, more than 200 virtual sessions and training workshops across 10 content tracks, plus countless networking activities. 

The best part? The event is completely free of charge for anyone who registers to attend. That means, for absolutely nothing, you can attend sessions with experts like these:

All you have to do is visit Summit.Adobe.Com and register. From there, you’ll be able to save sessions you want to attend to your event schedule portal and know at a glance what your conference experience looks like. 

You can even take a quiz once you register to help pair you with sessions you’ll be the most interested in.

GIVEAWAY: Everyone wins!

Who doesn’t love free stuff? Not us! 

Since we can’t hand out our signature plush lama in person, we’re giving away a free website health check through a Google Core Web Vitals Audit to anyone who wants one! That’s over a $2000 value absolutely free of charge. 

To get your free website health check, register for Adobe Summit here, then visit the Classy Llama event page starting March 15, 2022, to sign-up for your free audit. 

BONUS: From our “everyone wins” entrants, THREE winners will be chosen to receive a free Customer Experience Audit for their eCommerce site — an over $5000 value that can provide valuable insights into optimizing your website for revenue growth.

All you have to do to be entered to win the CX Audit is register for the event and enter at our event landing page for your free Core Web Vitals Audit.

Don’t miss out! Register now to be part of the event that can help you create better, more personalized digital experiences. 

Magento Vulnerability Exploited in the Wild: Adobe Commerce Sites at Risk

If you run an Adobe Commerce site, it’s time to take action.

Magento has just released a statement warning of a critical vulnerability that’s been exploited in the wild. The flaw, CVE-2022-24086, is a remote code execution vulnerability that allows attackers to execute malicious code on vulnerable sites.

This means that an attacker could take control of your site and steal or modify data. Even worse, this vulnerability is known as a pre-authenticated flaw, meaning a bad actor could manipulate your site without ever knowing your login or password.

Read the Adobe Security Bulletin on the flaw here.

Magento has rated the flaw as 9.8 out of 10.0 on the severity scale, so it’s important to take immediate steps to patch your site against this threat.

Classy Llama is aggressively working to patch our merchants’ sites and keep them safe from this exploit, but if you don’t have someone proactively patching against this issue on your Adobe Commerce site, you’re at serious risk. Given the severity of this issue and the ease of the exploit for bad actors, the number of attacks through CVE-2022-24086 is predicted to rise quickly.

Find out which Adobe Commerce versions are affected in this chart.

Make sure your site is protected. Click here to get the patches from Adobe Commerce that can protect your site and data from this vulnerability.

Not sure how to use the patches? Fill out our contact form here and we’ll connect your company to someone who can help you.

Wanna move faster than that? Give us a call at 471-866-8887 to get connected right away.

Selling Bundles the Right Way on Magento 2

Magento has a variety of product types to help you find the right way to sell your products. There are downloadable products for digital items (such as ebooks), virtual products for items with no tangible deliverable (such as warranties), and configurable products for variations (such as a shirt that comes in different sizes). One of the most powerful types available is bundle products. In my experience, this is the least used product type, and I believe there are several factors influencing its sparse appearance:

  • External Integrations – Whether you’re pulling product data into Magento or pushing order data out, few systems match up with Magento’s concept of bundles.
  • Labor-Intensive Product Creation – Bundle products just take more time to set up than most other product types.
  • No Need – Many merchants simply find that they don’t sell any products in a bundle format.

Now let’s take a look at the upsides of bundle products by breaking down what they are and how you can leverage them to sell more in your store.

What is a Bundle Product?

In a nutshell, bundle products are a way of selling several products together as a single package. This is really a great opportunity for merchants since it’s a form of upselling. More than that, it’s a very targeted form of upselling, and Magento gives you the flexibility to really make it worth the customer’s while.

The bundle product is just a shell, and ultimately it contains the products that you’re already selling on your Magento store. Let’s say you sell musical instruments. You’d love it if that customer would add some cymbals and drumsticks to their drum set purchase. Rather than just showing related products and upsells during their purchase experience, you can create a bundle. By doing this, you encourage the customer to increase their order total, and you also give them confidence that the products they’re buying are compatible with each other.

You can read about creating and configuring bundle products in the official user guide, but I’m going to cover the basics of how bundles are put together.

Bundle Options

The basic architecture of bundle products is their options. Options are the components that make up the bundle. Each option offers a selection of products that can fill that slot. Let’s look at our drum set bundle. It’s going to have the following options:

  • Shell Pack (the drums themselves)
  • Crash Cymbal
  • Hi Hat
  • Drum Sticks

At a basic level, those are the things included in the bundle. For each of those options, there can be multiple products to choose from depending on your preference. My product represents a bundle around a Yamaha Stage Custom shell pack, so I’m only going to offer one product for the Shell Pack option. However, the customer will be able to choose from multiple brands to fill the Crash Cymbal, Hi-Hat and Drum Sticks options.

You can make each option required or optional, set default quantities for selections, and choose whether or not the customer can define their own quantities.

For my product, most of the options are required and have an unchangeable quantity of 1. However, the drumsticks are an optional add-on, and the customer can modify the quantity. This ensures that someone new to drum purchasing doesn’t accidentally buy things they don’t need, but they can buy a few extra pairs of sticks from the same product page.

Bundle Pricing

Pricing for bundle products is flexible. All of the simple products that can end up in my bundle have their own prices in Magento, but do I want to discount them when bundled?

In this case, I do. Depending on the products selected, the sum of the items in my bundle could range from $1,204 to $1,229. To encourage customers to buy my bundle, I’m going to price it at $1,100. The Shell Pack, Crash Cymbal, and Hi-Hat selections will be included at no additional cost. For the sticks (which are optional), I’m going to price them at $5 per pair. This is still a good deal, as the simple products for the drumsticks would be $8 if added to the cart separately.

To set up this kind of pricing, I set Dynamic Price = No when creating the bundle. This allows me to set a base price for the bundle, then optionally attach prices to each option selection. This gives the products specific prices in the context of the bundle, but the pricing of the simple products has no impact on my bundle.

If I don’t want discounts for my bundle, I can set Dynamic Price = Yes. Instead of manually setting prices on my option selections, the bundle will automatically sum the simple product prices. The user won’t save any money buying the bundle, but they’ll still benefit from a more guided shopping experience.

Bundle Data Architecture

You may be thinking that bundles sound great in theory, but how do they work out with other eCommerce elements? How does shipping calculation work? What does the data look like when orders are exported to an external system?

There’s some flexibility around the data. From a shipping perspective, bundles offer a Dynamic Weight option. If set to Yes, the weight of the bundle product in the cart will be the sum of all simple product weights in the bundle. This ensures that the final weight will be accurate for the purpose of getting shipping rates. If set to No, you can assign a static weight to the bundle that will be unaffected by the customer’s selections.

There’s also an option for Dynamic SKU. When set to Yes, the final SKU of the item will be a combination of the bundle product SKU and those of all the simple products included.

The final order data contains quite a bit of information about the bundle. It contains the bundle itself as well as a row for each product that ended up in the bundle. Those rows contain the SKU and quantity of the simple products. This is nice if you have an external integration consuming order data for things like inventory tracking, as it allows you to examine the tangible products that were sold.

Challenges with Bundles

Bundles are a complex concept, and every merchant will leverage them a little differently. I completely respect the logic that the Magento core uses with bundles, but it’s definitely not a “one size fits all” scenario. I’d like to look at some of the specific challenges I’ve seen merchants run into, and the solutions we implemented to get the logic just right.

The “Primary Product” Dilemma

Bundles work really well out of the box to sell several related products together. However, they don’t work as well to represent a primary product with add-ons. Last year, I had a merchant who sells espresso machines. They often include items with these machines, such as a bag of espresso beans or an extended warranty. They needed these freebies to be clearly represented on the product and cart pages, and they also needed them to be individual items in the order data for the sake of inventory updates. The problem was that they really didn’t want to offer the “Customize and Buy” interface that Magento provides out of the box. There was really nothing for the customer to configure. All options were required and only offered one selection. They really just needed the customer to see what’s included and have an add to cart button.

We were able to work around this with a few layout changes and some strategic CSS adjustments. Within the bundle configuration, we hid the option labels and form elements, leaving only the names of the selections and the prices. We also moved the master quantity input and the add to cart button above the bundle configuration. The end result was a product page that’s nearly as basic as a simple product. Here’s the same treatment on our drum set bundle if it only had one selection for each option:

Note that this removes all configuration mechanisms from the page, so it’s really only a good fit for bundles with static selections.

Shopping Cart Price Rules

When using shopping cart price rules, it’s important to be aware of the native behavior with bundle product children. Any conditions in a price rule will be triggered by the items in the bundle once it’s added to the customer’s cart. If this isn’t your intention with your price rules, you could get a nasty surprise when orders start coming in.

Let’s take our drum set bundle as an example. I have some surplus stock of Vic Firth drumsticks, so I want to offer a 50% off sale. I create a shopping cart price rule that takes 50% off of products where Brand is Vic Firth. This works great when customers go to the drumsticks category and purchase a matching simple product, but it’s less ideal when they add the drum set bundle to the cart. When configured to include the optional Vic Firth drumsticks, the 50% discount is applied to the entire bundle. In an effort to move some drumsticks, we’re suddenly giving away a $1,100 drum set for $550.

Unfortunately, there’s no configuration to change this behavior, but you can alter it with a small code change if necessary. The model responsible for this particular rule validation is MagentoSalesRuleModelRuleConditionProductCombine, and the relevant method is validate (defined in the superclass).

If we create a plugin for MagentoSalesRuleModelRuleConditionProductCombine, we can make sure that no bundle children are valid for shopping cart price rules.

public function aroundValidate(MagentoSalesRuleModelRuleConditionProductCombine $subject, callable $proceed, MagentoFrameworkModelAbstractModel $model) {
    if ($model->getParentItem() && $model->getParentItem()->getProductType() == 'bundle') {
        return false;
    }
    return $proceed($model);
}

Layered Navigation

Similar to the dilemma of shopping cart price rules, bundle children can also trigger unintended layered navigation behavior. Let’s say we put our drum set bundle in a Drum Sets category. Since the set is built around a Yamaha shell pack, we’ve set the brand on the bundle product itself as Yamaha. In layered navigation, we want the set to show up when Yamaha is set as the brand filter. Since we don’t expect customers to choose a bundle based on which drum sticks are included, we’d prefer that the bundle doesn’t show up when results are filtered to match a Brand value of Vic Firth.

Here’s the native handling of the bundle. Notice how every brand that’s available in our drum set bundle is present in the layered navigation:

Fortunately, we can exclude bundle child attributes from being considered in layered navigation with some minor code changes. The bundle child indexing occurs in MagentoCatalogModelResourceModelProductIndexerEavAbstractEav in the _prepareRelationIndexSelect method. Here’s the original code:

$connection = $this->getConnection();
$idxTable = $this->getIdxTable();
$linkField = $this->getMetadataPool()->getMetadata(ProductInterface::class)->getLinkField();
$select = $connection->select()->from(
    ['l' => $this->getTable('catalog_product_relation')],
    []
)->joinLeft(
    ['e' => $this->getTable('catalog_product_entity')],
    'e.' . $linkField .' = l.parent_id',
    ['e.entity_id as parent_id']
)->join(
    ['cs' => $this->getTable('store')],
    '',
    []
)->join(
    ['i' => $idxTable],
    'l.child_id = i.entity_id AND cs.store_id = i.store_id',
    ['attribute_id', 'store_id', 'value']
)->group(
    ['parent_id', 'i.attribute_id', 'i.store_id', 'i.value']
);
if ($parentIds !== null) {
    $select->where('e.entity_id IN(?)', $parentIds);
}

/**
 * Add additional external limitation
 */
$this->_eventManager->dispatch(
    'prepare_catalog_product_index_select',
    [
        'select' => $select,
        'entity_field' => new Zend_Db_Expr('l.parent_id'),
        'website_field' => new Zend_Db_Expr('cs.website_id'),
        'store_field' => new Zend_Db_Expr('cs.store_id')
    ]
);

return $select;

The query uses the catalog_product_relation table to identify parent / child product relationships, then joins the attribute index table on by child id.
This allows it to query the attribute values of child products of relevant parents. It also uses a left join to include the parent product.
It groups by the parent id, and the result is a list of parents that have children matching the filter criteria.

If we replace the method code with the following, we can instead limit the parent product join to products that aren’t bundles.
This will exclude bundle children from the query logic, producing layered navigation with no consideration of bundle child product attributes.

$connection = $this->getConnection();
$idxTable = $this->getIdxTable();

$select = $connection->select()->from(
    ['l' => $this->getTable('catalog_product_relation')],
    'parent_id'
)->join(
    ['cs' => $this->getTable('store')],
    '',
    []
)->join(
    ['i' => $idxTable],
    'l.child_id = i.entity_id AND cs.store_id = i.store_id',
    ['attribute_id', 'store_id', 'value']
)->join(
    ['p' => 'catalog_product_entity'],
    'l.parent_id = p.entity_id AND p.type_id != 'bundle'',
    []
)->group(
    ['l.parent_id', 'i.attribute_id', 'i.store_id', 'i.value']
);
if ($parentIds !== null) {
    $select->where('l.parent_id IN(?)', $parentIds);
}

/**
 * Add additional external limitation
 */
$this->_eventManager->dispatch(
    'prepare_catalog_product_index_select',
    [
        'select' => $select,
        'entity_field' => new Zend_Db_Expr('l.parent_id'),
        'website_field' => new Zend_Db_Expr('cs.website_id'),
        'store_field' => new Zend_Db_Expr('cs.store_id')
    ]
);

return $select;

Note that this method is in the abstract, so you’ll have to implement a di preference for each subclass that implements this method that you want to behave differently. When I implemented these changes, I included the following:

  • MagentoCatalogModelResourceModelProductIndexerEavDecimal
  • MagentoCatalogModelResourceModelProductIndexerEavSource
  • MagentoCatalogModelResourceModelProductIndexerEavSource

Here’s the resulting behavior:

Make a Bundle and Make a Bundle

Whether you’re looking to help customers identify compatible products, or just looking to increase your order totals, I think there’s a use case for almost every merchant to use bundle products. Even if you don’t want to create a lot of them, they can be a great promotional tool. So what are you waiting for? Get started with those bundle products. If you happen to need some customizations to get them just right, give us a call.

Contact Us