One of the great things about Shopify is the huge range of apps available for it. Need some new functionality? There's a good chance somebody has already built an app that does it.
But there's a downside.
£5 a month here. £15 a month there. Another £20 for something else.
Before long, a collection of fairly small features can turn into a significant collection of monthly subscriptions.
Sometimes that's completely justified. A good Shopify app can save a huge amount of development time and provide functionality that would make no sense to build from scratch.
But sometimes the requirement is actually quite specific and relatively simple.
That's when I start asking: do we actually need another app?
The problem: collecting orders at events
A client of mine regularly attends events where customers can collect parts they've ordered online.
That's convenient for the customer and useful for the business. It can save delivery costs and means an order can be waiting for the customer when they arrive at an event they're attending anyway.
The awkward part was communicating all of this through the online shop.
We needed customers to see which events were available for collection, choose one, and have that choice clearly attached to their Shopify order.
We also didn't want somebody to have to keep editing the Shopify theme every time another event was added to the calendar.
The solution was already being used: Google Calendar
Rather than creating another system for the client to maintain, we used something familiar: Google Calendar.
The business simply adds the events it's attending to a dedicated calendar.
I then added custom functionality to the Shopify cart that reads those upcoming events and presents the relevant ones to the customer before they continue to checkout.
Instead of somebody having to update both a calendar and the website, the calendar becomes the source of the information.
Add an event to the calendar and it can become available as a collection option in the shop.
What does the customer see?
When a customer reaches the cart, they can choose the normal delivery option or select collection.
If they're collecting at an event, the upcoming eligible events are displayed as simple choices.
They select the event they're attending and continue with their order.
Behind the scenes, that choice is added to the Shopify order information, so when the order arrives the business can immediately see that it shouldn't be dispatched in the usual way.
Instead, it needs to be taken to the selected event ready for the customer to collect.
Nothing particularly complicated for the customer and, importantly, nothing new for the business to learn.
Then we realised we could solve another problem
Event collection was only part of the story.
Customers could also collect directly from the warehouse.
The problem with offering warehouse collection is the expectation it can create.
If your website says "collection available", customers quite reasonably assume somebody will be there when they turn up.
For a small business, that's not always realistic. People might be making deliveries, attending events, visiting customers or simply doing the hundred other things involved in running the company.
The last thing the business wanted was to feel somebody had to be at the warehouse all day just in case a customer appeared.
So we added bookable warehouse collection times
We extended the same idea using a second Google Calendar.
The client can add the periods when somebody will actually be available at the warehouse.
Shopify reads that availability and turns it into collection dates and time slots for the customer.
So instead of:
"I'll collect it from the warehouse at some point."
the customer can choose an actual available time.
The business controls those times simply by updating its calendar.
It's a small change that solves a real-world problem
This is the kind of website development I particularly enjoy because the interesting bit isn't really the code.
It's looking at how the business actually works.
In this case, we haven't just added a collection selector to a website.
We've made event collection easier to manage, reduced the chance of orders being accidentally dispatched, given customers clearer information and removed some of the pressure on the team to constantly be available at the warehouse.
The business can decide when collection is convenient rather than the website inadvertently deciding it for them.
And there's no additional monthly app cost
There are Shopify apps designed to handle local pickup, delivery scheduling, appointment slots and similar functionality.
Some are excellent, and for more complicated requirements I'd happily recommend using one.
But this client didn't need another large system.
They needed Shopify to do one fairly specific thing that fitted the way their business already operated.
Once the functionality had been built into the theme, there was no additional monthly app subscription just to keep it running.
That's an important distinction.
Custom development has an upfront cost, whereas an app usually spreads its cost over time. Neither approach is automatically cheaper.
But if a relatively straightforward feature costs £10, £20 or £30 every month indefinitely, it's worth asking whether implementing it properly once would make more sense.
Does that mean I avoid Shopify apps?
Absolutely not.
I use apps where they make sense.
Payments, subscriptions, complex fulfilment, accounting integrations and other specialist functionality can involve far more than something I'd want to recreate inside a theme.
A mature app also comes with ongoing development, support and maintenance. That has real value.
But I don't think installing an app should automatically be the first answer to every Shopify requirement.
When is custom Shopify development worth considering?
I tend to consider custom development when the requirement is specific to the business, the functionality is relatively contained, and Shopify already gives us most of what we need to implement it.
It's particularly worth considering when an app would introduce lots of functionality you'll never use simply to provide one small feature that you do need.
It can also be a good option when the information already exists somewhere else — as it did here with Google Calendar.
Rather than asking the business to maintain the same information in several places, sometimes we can just make those systems talk to each other.
The useful question isn't "is there an app?"
There probably is.
With Shopify, there usually is.
The better question is:
"What's the simplest sensible way to solve this problem?"
Sometimes that's installing an app in five minutes.
Sometimes it's a small amount of custom Liquid and JavaScript.
And sometimes it's connecting Shopify to a tool the business is already using.
In this case, a couple of calendars and some bespoke Shopify development gave the client exactly the workflow they wanted — without adding another system to manage or another monthly subscription to the bill.