Replacing Shopify Plus with a Scalable E-Commerce Architecture

shopify-monolith
Summary
  • While Shopify Plus remains popular, it has failed to adapt to the modern landscape of e-commerce.

  • As large-scale Shopify merchants expand, they face challenges with scalability that a modular e-commerce solution, like fabric, can resolve.

  • fabric’s PIM, OMS, and supporting APIs are built to work with existing platforms and are perfect for organizations that want a flexible solution that let them adapt to new challenges and take advantage of new opportunities.

  • If you’re a developer looking to build more scalable infrastructure without replatforming, consider fabric’s Commerce APIs.

Shopify is one of the leading e-commerce platforms for small- to medium-sized businesses. However, Shopify Plus, Shopify’s option for large-scale e-commerce merchants, is having some challenges meeting the needs of its large-scale enterprise customers.

Shopify Plus is a fully hosted e-commerce platform that extends Shopify’s main offering to support large brands and higher volume merchants. Created in 2014, it aims to compete with enterprise e-commerce platforms, like Magento (now Adobe Commerce), Volusion, and Salesforce Commerce Cloud (formerly Demandware).

In a recent tweet, Moiz Ali, the founder of Native, pointed out some challenges, including scalability, analytics, and subscription management, that larger brands have been experiencing with Shopify Plus.

1. Shopify stock is down 50% over the past 12 months. Its mission may be to “arm the rebels,” but it is giving us muskets in a war that is increasingly being fought with machine guns.

— Moiz Ali (@moizali) February 16, 2022

Many of Shopify’s weaknesses are due to its inflexible, monolithic architecture. Consumer preferences have evolved, and today’s customers shop using multiple channels, including traditional websites, smartphones, tablets, and IoT devices. While Shopify Plus remains a viable e-commerce solution, the world is moving away from its one-size-fits-all software to more customized solutions.

In this article, you’ll look at some weaknesses of Shopify Plus and how you can replace its underperforming components with a more flexible and scalable modular e-commerce solution.

Why You Need Scalable, Modular E-Commerce Solutions

As Moiz mentioned in his tweets, large-scale brands, like Away and Ritual, have outgrown and left Shopify Plus in search of options that better support their level of scale. Take a look at some of the challenges these brands have encountered.

Scaling

Shopify Plus doesn’t allow you to link multiple e-commerce domains to one online store. You need to set up multiple stores using a separate domain (eg myshop.us and myshop.ca) or a subdomain (eg myshop.com and ca.myshop.com). Stores aren’t connected, and each storefront is managed from a separate warehouse. This makes it challenging to manage multiple brands and store inventory efficiently.

With no relationship between products in one store and another, it’s possible that the product ID for the same item might be different in each store. This complicates the administration process, as tasks have to be duplicated in each store. It also makes it difficult to get a global view of sales, inventory levels, and order fulfillment.

The lack of multi-store functionality is a major pain point for businesses that need to manage various brands and stores simultaneously.

Analytics

Shopify Plus provides built-in SEO features, including automatically generated title tags, canonical page tags, sitemap.xml, and a robots.txt file, but they provide very little in the way of customization.

There is also a lack of in-depth native reporting tools and functionality. While current tools are helpful for small businesses with simple product lines, larger stores would benefit from features, like cohort analysis and clickstream data analysis, that help merchants better understand customer behavior.

Subscriptions

Shopify’s subscription services are only offered through third-party apps. While offerings have improved since the introduction of the Subscriptions API in January 2021, they are not fully compatible with Shopify.

For example, using Recharge, Shopify’s most popular subscription service provider, customers can only see purchase history, edit subscriptions, and update billing information through a separate customer profile in Recharge.

Even though Recharge’s customer portal can be accessed through Shopify, it still fractures the customer experience. Inventory settings for recurring orders must also be set up separately in Recharge, and since Recharge processes subscriptions outside of Shopify, it bypasses Shopify’s fraud analysis feature, so you have to ensure that your payment processor has adequate fraud protection enabled.

Moving from Shopify Plus to Scalable E-Commerce Architecture

Fast-growing businesses can be limited by Shopify Plus’s templated frontend and monolithic backend. This is where modular and headless e-commerce platforms, like fabric, can help.

With fabric, you can use microservices architecture to remove many Shopify Plus limitations. The strangler pattern is one of the best ways to move gradually from Shopify Plus with minimal disruption.

Replace Shopify services via the strangler pattern

Migrating from Shopify’s monolithic architecture to microservices can create several challenges, including service disruptions. The strangler pattern allows you to move from a monolith to microservices architecture, service by service, to avoid these challenges.

The pattern gets its name from the strangler fig tree, a tree that grows on its host in a way that strangles it to death. As it relates to software development, you rewrite your codebase in small increments until you have strangled your old codebase and it can be removed.

When migrating from Shopify Plus, you can create new versions of existing Shopify services one by one using microservices. The old service will coexist with the new service until the new service is brought online. When all the new services are built and in use, you can stop using the existing Shopify Plus services.

fabric’s Suite of E-Commerce APIs

Headless Commerce Software and APIs

fabric offers several REST APIs to help developers create and maintain flexible e-commerce solutions. When calling fabric APIs, you must provide context via HTTP headers (x-site-context) that contain account and site information.

For example, the following is an API call:

curl -I https://<fabric-base-url>/<endpoint> -H "x-site-context: {"date":<iso-date>, "channel": <channelId>, "account": "<accountId>", "stage": <stage>}"

Once you have a fabric account, your account manager will provide you with the accountId, stage, and fabric-base-url. For more information on how to get started, check out fabric’s official docs.

Now, look at some fabric APIs that you can use to replace some Shopify Plus services:

Product information management

If you’re a large-scale merchant, your Shopify installation will comprise lots of product-specific data. Decoupling this data from Shopify Plus is a great place to start.

Moving product data to a separate backend, like fabric PIM, creates a central repository of product and vendor information that gives complete control over its structure, formatting, and distribution. Data can be imported from different sources, including databases or flat files, and then data can be enhanced, validated, and refined using business rules.

fabric’s PIM API components include items, categories, families, attributes, attribute groups, collection, and SKU sets. fabric combines these primary components with an intuitive user interface and machine learning capabilities to streamline data management.

A PIM can also be configured to classify and categorize product information, giving you the insights you need to launch products faster and improve your conversion rates.

Order management system

As you’ve seen, Shopify Plus isn’t the best for managing international stores or subscription payments. With fabric OMS, you can add features for various frontend services on top of Shopify’s core functionality that lets you grow your business by connecting demand and inventory across multiple stores, sales channels, and online marketplaces.

The fabric OMS API also supports modern fulfillment methods, like buy-online and pick-up in-store (BOPIS). It also integrates with Stripe and Authorize.net to support multiple payment methods and gateways.

fabric also provides supporting services through the Subscriptions API, which allows customers to set up recurring purchases for products or services without having to be redirected to a third party.

Data export and import

To move data from Shopify, you can export it to a CSV file and then use JavaScript to import it into the database backend for your microservice.

Export data from Shopify

Shopify Plus lets you export product, customer, and order data to a CSV file using a simple process. There are a few required fields, but a primary benefit of using microservices is that you can import only the fields you need for your system. Here’s a summary of the relevant fields:

Required Required (can be blank) Optional
Handle Body SEO Title
Title Vendor SEO Description
Published Type Google shopping metafields
Status Tags Cost per Item
Image Src
Image Position
Image Alt Text

Import microservices data

Using JavaScript, you can import data into the backend of your new service. Following is an example using the latest version of Amazon SQS:

const { SQSClient, SendMessageCommand } = require("@aws-sdk/client-sqs");
const REGION = "us-east-1"; //or whatever your region is
const params = {
DelaySeconds: 10,
 MessageAttributes: {
 Title: {
 DataType: "String",
 StringValue: "Sneakers",
 },
 Vendor: {
 DataType: "String",
 StringValue: "Comfy Sneakers Inc",
 },
 InventoryQty: {
 DataType: "Number",
 StringValue: "146",
 },
 Value: {
 DataType: "Number",
 StringValue: "79.99",
 },
 },
 MessageBody:
 "Product Data.",
 QueueUrl: "SQS_QUEUE_URL", //replace this with your queue URL
}
const sqs = new SQSClient({ region: REGION});
const run = async () => {
 try {
 const data = await sqs.send(new SendMessageCommand(params));
 console.log("Success, product sent. MessageID:", data.MessageId);
 } catch (err) {
 console.log("Error", err);
 }
};
run();

Shopify Plus API gateway or service mesh

A middle layer, like a Shopify Plus API Gateway or service mesh, makes switching between old Shopify services and new microservices a seamless process. When you integrate new services one by one into your Shopify Plus installation, an API gateway helps you manage and reroute requests from existing Shopify services to your new backend:

E-Commerce Microservice Architecture

A service mesh is an infrastructure layer that controls communication between your application components and data flow between your existing application and external microservices. It can also standardize connections between third-party services (ie a cart, order management, and PIM) and is also useful for handling other functions, like load balancing, security, and encryption.


Topics: Commerce
Deborah Ruck

Tech advocate and writer @ fabric. Previously a software developer.

Learn more about fabric