Alec Wayman, App Developer at Swanky, takes you through the details of Shopify custom apps. He covers everything you need to know about custom app development for your Shopify store.
Apps are used for all kinds of reasons, in all sorts of situations. For this reason, talking about apps can get confusing. This article will unpack what Shopify custom apps are, how they work and what you need to know about their functionality for your Shopify Plus store.
Within the context of Shopify, an app is something which extends the base functionality of the Shopify platform.
The best way to understand this is through examples: if you want to have recurring payments for subscriptions, you might install Recharge. If you want to leverage email marketing, you’d likely install Klaviyo. And if you want to integrate between an Enterprise Resource Planning (ERP) system and Shopify, you could install Patchworks.
But, if there isn’t an app in the Shopify store which covers your requirements, then a custom app needs to be built. With custom apps, there is near limitless functionality available for your store.
How do Shopify custom apps work?
App APIs
In all cases, apps installed on a store function in the same way; they interact with a store’s data objects using Application Programming Interface (API) endpoints provided by Shopify.
Unlike a User Interface which connects humans with software, APIs connect programmes or software to one another. In other words, an API allows one programme to interact with another.
There are many APIs available from Shopify, all offering different functionality. For example, the Storefront API is queried whenever Liquid (Shopify’s templating language) is used to get store data inside a theme file.
Accessing store data is a key requirement of apps. They most commonly do this by using the Admin API which provides two protocols: GraphQL and REST. These both have different use cases and limitations. GraphQL allows access to specific pieces of data in precise quantities, whereas REST has set response packets which must then be parsed by the recipient programme. Due to the precision of GraphQL, it is widely considered the superior protocol of the two.
Access Permissions
When working with Shopify apps, APIs and store data, it’s important to ensure you understand how access permissions work. In other words, knowing which apps need which data to function, and not providing unlimited access to all data. Limiting access is fundamental for the security and integrity of a store’s data.
To give an example of this, an app which exports orders will need access to the data for Orders, Customers (for delivery information), and Products (for Line Item details). These only need to be readable, as no data has to be edited.
Another example would be an app which adds a Customer tag when triggered would need to have read and write access for the Customer object in order to edit it.
Rate Limits
Another factor to understand about this topic is that all APIs have rate limits. These are concrete numbers, as seen in the table below, that control the rate of requests or data an API can receive. Without these limits, the rate of requests isn’t consistent and can overwhelm a programme when traffic is high. The concept behind these rate limits is known as the ‘Leaky Bucket Algorithm’.1
This is done for many reasons, including the reduction of hosting costs, spam prevention, and to encourage efficient software design. Any programme accessing the API must account for these limits.
Data from https://shopify.dev/docs/api/usage/rate-limits
An example of this in practice is seen in Swanky’s work with a recent client who needed to integrate their ERP with their Shopify Plus store. The programmes previously installed on the site were pulling data from Shopify into their databases, but did not have any contingency in place for hitting the rate limits. Consequently, when traffic was high, like when an email was sent to all of their customers with an offer, Shopify stopped returning data and the order information was not exported from Shopify.
The solution for this was to even out the rate of calls to the API so that usage limits would not be reached. This was achieved by delaying the programmes calling the API if the limit was approached, until the API usage credits were sufficiently replenished.
How API versioning effects Shopify custom apps
All APIs are subject to change over time as Shopify evolves and improves. The consequence of this is that a piece of data which an app relies on can be moved or completely removed from the API causing a breaking error.
Shopify has a very rigid release schedule which makes predicting these changes easy. However, it is possible for an app to run quietly in the background of a store for years without any issues until a warning pops up that a piece of data will no longer be available as of a certain date. This requires developers to find out whether the change will break something and to fix it if so.
Due to this versioning and updating, developers should keep track of which Shopify custom apps are using which versions of APIs, and make updates accordingly.
Hosting Shopify custom apps
An important factor to bear in mind when scoping out a custom app is how it will be hosted and the costs this will incur.
When an app is ready to deploy it needs to be installed on a server. This will store all the app’s data and run any processes required for it to function.
The cost of hosting services will vary depending on the compute power needed to run the app. Compute requirements will in turn depend on the tasks being performed, the volume of data being handled, and the codebase efficiency.
If an app is being built for a sole retailer, installed on one store and only intended to perform small tasks, it can be hosted relatively cheaply (costing between $50-$100 USD per month). However, if an app’s purpose is to handle large amounts of data, or perform complex tasks frequently, the costs will increase relative to the hardware requirements.
App maintenance
App maintenance, like hosting, can come as a surprise cost to retailers. While every effort is made to create Shopify custom apps that run flawlessly, and with no down time, this is almost impossible. Ideally errors would not break an app, but sometimes this is unavoidable.
Developers can implement systems to monitor apps and inform teams of real-time errors from a central location, but this can be a long and costly process.
Whatever your chosen solution, ensure there is allowance for ongoing maintenance costs when planning a custom app build.
How does Checkout Extensibility affect Shopify custom apps?
Over the next year, Shopify is replacing checkout.liquid with Checkout Extensibility, and Shopify Functions is replacing Shopify Scripts. These are two exciting changes for the Shopify platform, but they significantly affect how apps will be implemented.
In short, Shopify is moving towards a model where more functionality can be achieved on its platform, but that functionality must be executed through apps. These are either custom apps or pre-built apps available to all store owners.
For more information, read the articles linked above, or see what Shopify has to say about these updates.
Examples of Shopify custom apps
Swanky is no stranger to Shopify app development. When we’re building Shopify Plus stores, custom apps are sometimes necessary to extend the functionality of a store and solve unique technical problems.
Take a look at some of the Shopify custom apps we’ve built in the past:
Credit app for Saddleback
The Saddleback team needed a fully-bespoke credit app for their UK B2B store. Each Saddleback stockist is given a certain amount of credit depending on the stockist tier they belong to, and this needed to be deductible as buyers added items to their cart.
This level of complex functionality was not immediately available in Shopify and so our development team stepped in to create a custom app to fill this gap.
You can read more about our work with Saddleback here.
Subscription solution for LiquorLoot
LiquorLoot (previously named WhiskyLoot) has a business model focused on taking a customer from beginner to expert in their understanding of whisky and other spirits.
In order to achieve this, their subscription model necessitated a tailor-made solution. This consisted of using a custom app in conjunction with Recharge’s subscription services, enabling subscribers to receive their boxes in a specific sequential order.
Read the full LiquorLoot story here.
Bespoke product builder for Veneta Blinds
Australian retailer Veneta Blinds offers a vast range of made-to-measure products.
Customers can pick not only colour, style and thickness, but also input the exact measurements required.
The blinds are priced to the exact dimensions, as well as factoring in weight for shipping costs. This means that every order on the store creates a unique product with a unique price. To handle this, we created a bespoke product builder.
Read more about this custom solution for Veneta Blinds here.
How will you use custom apps on your Shopify store?
Apps have historically been an excellent way to add functionality to a Shopify site. With the introduction of Shopify Functions, the range of functionality increases and apps will become more accessible than ever before.
Despite the introduction of Shopify Functions, custom apps will remain the best way to add bespoke functionality to a store. However, their development is complex and takes significant planning, design and testing in order to optimise their use.
Consequently, it is important to obtain the exact requirements for a custom app’s function and timeline. It is also important to clarify the ongoing costs of hosting and maintaining a custom app as explored above.
If you have questions about Shopify custom apps or want to know how we can build a custom app for your store, get in touch today.
For reference
[1] https://www.geeksforgeeks.org/leaky-bucket-algorithm/