tech

Top Level Category Pages Platform Migration

Setting the stage

I’m over a year late in posting this, but I wanted to take some time to document the launch of my biggest project of 2017. This was a project of migrating eBay’s top level category pages onto it’s new technology stack called Lexington, which was used for a variety of shopping experiences at the company.

I previously wrote about Top Level Category Pages in an older blog post about eBay’s Flexible Pages (called Flexihub). The Top Level Category Pages Platform Migration was the process of moving the biggest use case for eBay’s Flexible Pages (Flexihub) from the old Flexihub platform onto the new Lexington Platform that hosted eBay’s lower level categories.

These are the links to the original launch announcements for the first wave of the migration and then followed a few months later with the second wave of the migration.

Rather than recount the specifics of the launch announcements and the details of each feature, I want to use the rest of this post to dive into what the problem was, what the barriers were, why the team approached this a certain way, what went well, and what I would do differently.

Customer Problems

There were 3 different types of customers that we had to take into consideration for this project that all had varying problems that sometimes conflicted with one another, which made this a very tricky project and product launch.

Customers

  1. The end user browsing on eBay

  2. The internal site merchandiser that curates content on the pages

  3. eBay’s SEO (Search Engine Optimization) Presence

Customer Problems

As the end user browsing eBay:

  • I need to be able to find relevant categories that I want to browse.

  • I want to see relevant promotions for the category.

  • I don’t want to land on broken pages or see expired promotions.

As the internal site merchandiser that curates content on the pages:

  • I need to be able to direct customers towards seasonally relevant categories.

  • I need to be able to feature promotions that are running for my category.

  • I need to be able to style the page differently for each season and holiday (e.g. winter has a cold-theme whereas July 4 has a beach theme).

  • I need to have flexibility to customize photos, colors, text-content, and links for the varying seasons, promotions, content, etc.

  • I need a curation tool that does not crash, scales across thousands of pages, and is inuitive to use.

As eBay’s SEO Presence:

  • I need to link to the correct URLs for categories in the taxonomy, promotions, and listings for Google to crawl (I can’t have extra parameters that create duplicate URLs for the same content).

  • I need fresh content that encourages Google to continue to crawl my pages regularly.

  • I need to link to Categories, Product Pages, and Listings for Google to crawl.

Flexihub problems

Flexihub was never designed to support category browse pages. It was meant for flash sales on eBay. It was repurposed for flexible pages that could be spun up in a moment’s notice with flexible content.

The flexibility in the pages resulted in broken links, stale content, duplicate pages, poor image quality, hacky JavaScript plugins, and many other problems. We needed to make sure we could ensure flexibility for the business partners curating the pages, but also guide the business user towards quality curations. This came at the cost of some flexibility.

eBay Shopping Experience problems

eBay is a giant marketplace with millions upon millions of listings. eBay also grew into a giant that had many different ways for shoppers to navigate eBay’s inventory. Shoppers could browse by a seller, a category, a holiday, and more. These different types of ways to shop resulted in a fragmented shopping experience depending on the curation type. The grand vision for Lexington was to unify the shopping experience into a homogenous user interface.

Lexington Platform

The Lexington Platform was ideated as a way to solve eBay’s problem of varying shopping experiences that looked nothing alike as well as Flexihub’s problem of stale content with broken links. Lexington was designed with the vision of surfacing the best inventory for the eBay shopper. For each category, Lexington aimed to:

  • Feature the most engaging categories that were lower in the taxonomy.

  • Show fresh inventory using algorithms that found the best listings.

  • Surface listings and products that were trending on eBay and other sites.

  • Highlight listings that were at lower prices on eBay than other sites.

  • Expose deals and promotional events.

  • Make it easy to refine and filter.

  • Be SEO-friendly in order to drive more traffic from Google.

The Lexington Platform started with the lower level category pages. The next step to furthering the new shopping experience for eBay was to migrate the top level category pages onto the Lexington Platform.

Curation Tools

Flexihub pages were originally curated by a tool called Kiosk. This tool was built during a hackathon and was never intended for the use-cases it evolved into supporting. This was painfully obvious in both the visual design and the information architecture of the platform. Kiosk was so tough to use that the company literally hired a team to support the business partners in curating their pages.

A new tool called Spotlight (aka Regional Customizations aka RC) was built as the successor to Kiosk. It was designed from its core to support the initial lower level category pages and was built with the intention of expanding its use-cases to top level category pages and other curation types on eBay. Spotlight/Regional Customizations was designed not only as a tool for curating pages but also as a page templating engine that defined how curated pages would order and place different features and pieces of content on the page.

Spotlight/Regional Customizations addressed the business partner pain points of having a modern and usable tool for customzing pages, and it also addressed the eBay SEO pain points of forcing clean links when business partners curated the pages. It also was forward-thinking in being built as a framework that could take on additional business use-cases for the product team to support.

Barriers

There were a lot of different issues that created many hurdles for myself and my team to overcome in order to accomplish this project. Off the top of my head, some of the most challenging issues were:

  • The team was spread across the entire world. I was based in New York City, some of the engineers were in San Jose, CA while others were in Israel. One partner PM was in San Jose, another partner PM was in Israel. The business partners were spread across San Jose, New York City, Israel, Florida, the United Kingdom, Germany, France, Italy, Spain, Australia, and Canada.

  • The business partners wanted tons of flexibility, but Flexihub’s history showed that when the business had too much flexibility in what they could curate on the category pages, it led to broken links, poor image quality, varying layouts and overall a poor shopping experience.

  • Pure algorithmic content did not allow for curating business promotions or styling for seasonality for the year and for current events.

  • Some business partners had conflicting opinions and wanted to prioritize building features that had low engagement and little to no business impact based on a hunch as opposed to raw data.

  • The previous platform (Flexihub) had a module called RTM which basically acted as a free-for-all where partners could “hack” the page and inject any HTML/CSS/JavaScript. At some points this provided modules the business partners liked and were permitted to keep, and at other times it created poor user experience and broke pieces of the page that forced product to remove the module. The business partners had to be weaned off of this type of functionality in order to prevent pages from breaking at random times.

  • The business partners used to create fake layouts with image maps: a feature that allowed an internal user to upload an image of any size and lay out links on top of the image. This allowed the business partners to mimic user experiences that they liked but had not vetted. This feature also had to be killed but left with a structured yet flexible replacement.

  • Business partners generally had little to no SEO knowledge, so the curation tool had to have guard rails in place to make sure content and link quality maintained eBay SEO best-practices.

  • Although eBay had a category taxonomy, the top-level category pages had evolved under the unstructured Flexihub platform to include high-traffic pages that were not a part of the eBay category taxonomy. The Lexington platform originally required that each page be a part of the eBay taxonomy, and due to complications of the eBay taxonomy, we could not just create Category IDs for the pages that were not apart of the taxonomy, so there were engineering solutions that had to be created around the lack of flexibility surrounding the structured data.

  • There was a ton of politics associated with these pages. They were critical for the beginning of the browse path for our shoppers who liked browsing. They served as the entry-way to the taxonomy. They also served as key landing experiences for SEO traffic. Lastly, they were the forefront of how the business promoted its deals, events, and other promotions. It was not just about the data or the end-user, but it was a lot about managing different stakeholders’ opinions and making sure we met the needs to the different stakeholders and their use-cases; this meant a lot of trade-offs in how we designed and deployed this experience.

Approach

The top level categories were broken down into 2 parts, dividing them into L0s (the top-most categories) and L1s (the second from the top-most categories). The L1s were migrated first, and the L0s were migrated second. This was done for the following reasons:

  1. The requirements were generated based on understanding the patterns the business followed with it’s super flexible curations on Flexihub and designing a way to support the general types of curations in a more structured format on Lexington. The features built covered 95% of the flexible curation types, and left some flexibility for the 5% that were too infrequently used to warrant engineering work. These requirements were based on my previous years of experience with the platforms and partner teams, then they were road-showed to the business partners globally as well as the partner teams that were helping to execute on this project.

  2. L2-L7 pages (levels below L0s and L1s) were already migrated to Lexington. In order to maintain continuity, it made more sense to continue the flow of migrating pages bottom-to-top.

  3. The business partners were more particular about how they curated the L0 pages and wanted to have more curation options available for them. Rather than wait and migrate all pages at once, we built the first half of the product needs to start, and upon phase 1 completion, we migrated the L1s. Then we finished the rest of the product features for phase 2 and migrated the L0s in the second wave.

  4. There was the potential for negative SEO impact with a massive change in these top level category pages that served as the starting point for Google’s crawling. We had to do URL masks and migrate the pages in 2 parts. First, maintain the URL but change the content to the new platform. Second, maintain the content of the new platform but finally flip the URL to it’s new permanent format and 301 redirect the old URLs. Doing all pages at once would have been a more serious SEO risk than doing them in parts.

  5. We had to coordinate the business partners curating an entirely new set of pages while still maintaining the old set of pages. This meant temporarily doubling their workload. Doubling the business partners’s workload for L0s and L1s at the same time was not going to be manageable for the them; however, we worked together to find a way for the business partners to be able to manage the old pages and new pages at the same time for just the L1s, and then again for just the L0s.

  6. We had to modify the Lexington Platform to support pages without a Category ID and hack together a Buyer Taxonomy that created structure for these previously random floating pages. This was required for the L0s but not the L1s, and this work needed additional time. This further supported migrating the L1s before the L0s.

Now that I have had some time to reflect on this project, I want to use this blog post to focus on what went well, what was tough, and what didn’t go well.

What went well

Despite the complex customer problems and the barriers for this project, there were a number of successes.

The new Lexington platform was a huge improvement for the shopping user experience. The pages loaded faster, the images were crisper, and the UI overall looked way better relative to Flexihub.

The curation platform Spotlight was also a huge improvement for the business partners. The curation process was much simpler and streamlined relative to Kiosk. The internal business users were more satisfied with the new toolset.

SEO cleanliness also improved due to the guardrails in place from Spotlight. There were [almost] no broken links and more of the eBay taxonomy was exposed on the new Lexington pages than previously were on Flexihub.

What did not go well

The rollout process was extremely chaotic. We had to schedule the release time with each region to make sure there was no breakage. The business partners in all of the regions had to maintain 2 curations for each page until the rollout was complete - this was stressful for all parties involved. There were also miscommunications within the business partner teams that led to last minute fire drills to collect all of the content and assets together in time for the launch.

Furthermore, switching the experience was not simply a code rollout, but it also involved URL masks from the old pages to the new ones, and there were a number of complications with this process that were not discovered until the launch date.

Finally, coordinating teams across 9 countries was extremely complicated and resulted in some sleepless nights.

In the end, the pages went live, and the business did not break!

What I would do differently

After having some time to reflect on this project, there were a number of things that I would have done differently.

At this time, I was on too many projects, so I did not have enough time on my hands to dedicate hours to a mock rollout to test all of the changeovers. I relied on my engineering partners for the sign-off, which was OK, but we should have coordinated doing 1 page in each region to start as a test, then migrated the rest of the pages.

Additionally, I did not have a clear way of measuring success. We could not run a true A/B test because the business partners could not afford to maintain all of the pages on both platforms, but in retrospect we should have tried to do this in some capacity.

Moreover, I did not have enough tools at my disposal to measure the performance of the pages. I was using some internal dashboards that were no longer maintained to check for any major breakage, but I was not diligent enough in checking the numbers daily, and I did not plan enough in advance to have support at hand to easily measure engagement with statistical accuracy. I was having to hack things together to make sure we were not in the red. I also could have done a better job setting up clearly defined metrics of success, metrics of failure, and counter metrics. I only looked very surface level at CTR and Bounce rate, but I did not look enough at the origin source traffic or the implications toward the bottom of the funnel with purchases or other conversion metrics.

Conclusion

In the end, I am grateful for the opportunity to have been the lead for a massive project at eBay. It touched an unprecedented number of teams and required an enormous amount of coordination, communication, requirements gathering and execution. It also required having a good sense of humor for when everything seemed to be going wrong.

All in all, it was a great experience learning how to coordinate so many different groups of people with competing interests, differing expertise, and broad geographic ranges. This experience gave me a greater appreciation for the work that leaders in large organizations undertake to get things done.

Coding for E-commerce & Social Media

I recently wrote a blog post for CodeHS about what it is like to write code and be a product manager.  I wrote about daapr, MacroFuel, and eBay.  Check out the post on the CodeHS Medium Blog: https://codinginthewild.com/coding-in-e-commerce-social-media-18b29a5f0241