It’s not an uncommon story, especially when dealing with enterprise-level clients.
A new product or service hits the ecommerce market and the site is crushed by zealous online users.
It’s an issue that affects clients, both big and small.
Take mega retailer Target whose online store crashed under the weight of unprecedented traffic spikes last Cyber Monday.
Or small business Death Wish Coffee, whose website couldn’t keep up with demand after a Good Morning America appearance (before they switched to Shopify, that is).
Crashes, slow loading pages, and inventory issues during the pinnacle of a company’s sales campaign or product launch can spell instant doom for any brand’s reputation. It can strain customer loyalty and create a perception of insecurity among users.
Whether big or small, ecommerce stores experience traffic spikes for a variety of reasons. As an app developer, it’s your job to anticipate these issues ahead of time and prepare appropriately, for both your clients’ and their customers’ happiness.
We spoke with LoyaltyLion, a London-based app development company that provides a highly customizable loyalty program integration to ecommerce stores.
The company’s CEO Charlie Casey and CTO Dave Clark recently went through a rocky launch with client The Chivery (a Shopify Plus store and the ecommerce arm of popular blog The Chive).
Not only had the two companies overlooked settling on a launch window, but The Chivery had also sent out a mass email to their over five million followers, explaining the new loyalty program in tandem with the launch. This created a bottleneck of enthusiastic users trying to view and sign-up with the new feature.
“Our load suddenly went through the roof," Clark explained.
LoyaltyLion managed to find a quick fix to The Chivery’s launch problems, and the experience left the pair armed with valuable insight and a new set of health checks they use every time a client approaches a potential high volume period.
Here are their six tips to help you prepare your business for a client’s big launch:
You might also like: 5 Creative Strategies for Using Overlays to Boost Conversions During the Holidays
1. Learn about your client’s users
It wasn’t the first time LoyaltyLion had integrated their app with an ecommerce store of this size or with this many users.
“The difference is how engaged and active The Chivery’s customer base is,” Casey explained.
Now, when LoyaltyLion meets with merchants, they ask key questions about the kinds of users clients have. Casey suggests not only asking for the number of concurrent users on a merchant’s ecommerce store, but how many hits they normally have on their site at different points in time.
“How many visitors do they have on their website when they run an average marketing campaign? When they run a successful marketing campaign? And when they run a freakishly successful marketing campaign?” he said.
That gives you an idea of a merchant’s scale and engagement, which can help you determine what’s needed to handle their business and online activity.
“We took a very secure approach in dealing with The Chivery, which was essentially, ‘okay they’re massive, what’s 10x massive?’ And we just made sure we could handle that going forward.”
2. Consider the extra costs
Working with larger stores who have higher volume means app developers need to consider higher server costs.
“App businesses need to consider that each time their app is used it costs money, and I mean tens of thousands of dollars a year.” Casey explained. “Larger stores have huge peaks. You might have a 1.3 million daily average with a x3 peak. The app needs to scale. It also mustn't slow the site down.”
Casey explains that businesses should weigh up the cost versus the benefit, and see whether it’s something they want to be able to support.
LoyaltyLion does a lot of data processing to provide stores with analytics, which means they need a robust and scalable base.
“This is something you have to plan from the start, from the design of the database to how you host your solution,” he added
3. Set a launch period
This one might seem obvious but it’s something Casey and Clark say is easy to overlook. Ensure you have open communication with your clients and if a specific time is too difficult to pin down, ask them to give you a window of time for the launch.
Not only will this help you prepare your app for any online spikes, but will also give you the time to schedule extra staff, if needed.
LoyaltyLion says whenever a client is getting ready to launch, they scale up all their services to more than needed, just to ensure if something does go wrong, they have all hands on deck.
“Basically this ensures that we’ll be able to weather however big a storm may be,” Clark explained.
And it’s not just about being reactive; it’s about being proactive, too. After a launch, Clark scans the user levels to see if and where his team maxed out.
“That gives you a really good indicator for the future of what a really big spike from that store looks like, and then you can compare that with all the big potential spikes from other stores. You can then use that comparison with strategies for other high traffic periods, like Black Fridays. That’s worked really well for us,” Clark added.
4. Support, support, support
From onboarding to the loyalty program’s launch, LoyaltyLion’s clients have direct access to the company via a Slack channel that Clark and Casey set up.
“Rather than waiting for a support ticket to be answered, clients have a direct channel for any questions they might have, and pretty well close to 24 hour support,” Clark explained. “The Chivery absolutely loved this service.”
And because LoyaltyLion only offers this channel of communication for a window of time (i.e. during the sale period), it remains manageable for the team.
5. Find ways to reduce server load time
When The Chivery launched their loyalty program, Casey and Clark quickly realized one of their biggest issues was that a huge amount of the load on their servers was generated from people who weren’t even logged in.
“The Chivery had a huge amount of guest visitors coming from their other properties (i.e. their blog), who aren’t necessarily customers, they’re just checking it out,” Clark explained. “That caused a huge amount of strain on us because we didn’t have that much optimization in place for guest visitors.”
LoyaltyLion’s loyalty program activates when a customer logs in. If a user is not logged in, they see a splash page with pertinent information about The Chivery’s loyalty program, and a generic looking widget.
“Once we realized there was a hell of a lot of guest traffic, we quickly cast guests out,” Clark explained. “We found that because the page doesn’t need to be refreshed, we could cache all that.”
Clark says doing this meant he was able to reduce the amount of load on their servers by over 50 per cent.
“It definitely helped us with future high traffic periods, as well.”
You might also like: Don’t Get Caught With Your App Down on Black Friday & Cyber Monday
6. Isolate large and small clients
Clark explains that most SaaS applications use a multi-tenant architecture, where all the tenants use the same software and resources ("share everything"). The other end of this spectrum is more of a "share nothing" architecture, where you have a completely isolated set of resources for each client.
Ecommerce has a mix of small and large merchants, so LoyaltyLion decided to design their architecture to sit somewhere in the middle of the two ends of the spectrum, in order to give their clients the most flexibility and stability.
“We share as much as we can, like our CDNs and our web servers, because these are very easy to scale. We use AWS Autoscaling to increase/reduce the number based on demand,” Clark explained. “For our database however, we keep larger clients isolated in their own schema.”
Clark says there are two great reasons for this:
- It's good security. No chance of data leaking between users (e.g. a bad query, bug in application). Note: If this is your main goal, there are other ways to achieve it (e.g. row-level security).
- If a client ends up being very large, you can easily move them onto a dedicated database server to optimize their performance (e.g. you could tune this database based on their unique usage patterns). This also avoids one large client impacting performance for all the smaller stores.
But, the CTO adds there are some drawbacks to consider:
- There's a resource overhead doing things this way (primarily that it will require more memory and disk space).
- Running aggregate queries across all clients is more complicated.
Is your app ready for traffic surges?
It’s easy to feel like the only way to prepare for a client’s launch is to think about every possible thing that could go wrong and prepare for the worst. But, Casey and Clark say stress tests should be more calculated.
“It’s a mixture between the business side of things, what do you want to do from a strategic point of view, and the software side of things, so can your software handle it,” Casey explained. “Is there anything you can do, smart tech wise, to make everything load a little bit faster, or run a little bit more cost effectively? That’s what we’ve done going forward.”
Read more
- How to Run a Design Sprint for Your App Marketing Team
- Storefront API Learning Kit
- How to Upload Files with the Shopify GraphQL API and React
- How to Level Up Your App with Theme App Extensions
- Introducing Shopify Developer Tools for macOS
- How We Built Out Our Reporting Dashboard with Shopify Polaris
- App UX Design In 2021: What You Need to Consider
- How to Build Powerful In-App Surveys: Put the User First
- How We’re Improving Discoverability On The Shopify App Store
- Free Webinar] Building Great App User Interfaces with Polaris
You might also like: 5 Ways to Prepare Your Clients for Black Friday