Making a Shopify App: Learn HOW
Posted By Seller Panda comments March 15, 2015
Making a new Shopify app is the lynchpin of our business (and the most fun part). So how do we do it?
First, we need to understand what apps Shopify users want. There’s nothing worse than throwing a party that no one shows up to. The lean startup methodology is something we live by (though not to the extent of making a cult out of it.) So we talk to customers by Skype to understand their needs.
Running an e-commerce business is hard. Users have dreams they’re trying to make come true, and are dealing with lots of moving pieces. So we ask about what causes them problems. What can be automated? How can we save them time or money (which is the same thing?) Not surprisingly, people who spend all day working with the Shopify platform typically have ideas on how the experience can be made better.
Customer interviews are actually my favorite part of the process-speaking to innovators is always fun. It takes a certain unique kind of personality and courage to open a small business.
We have a window in the middle of the office where we write down users’ app ideas in temporary marker:
At this point, we don’t kill any ideas. It doesn’t matter what we think of them. They all go on the glass.
Eventually, the window gets full. How do we decide which ideas to turn into an app? Very simple: we gather around the window and try to kill the ideas on it.
What marks an idea for death?
Well, if someone else has done it well, we generally don’t want to do it. We like to bring new things into the world. An app that’s already built and deployed, which works well? The only way we can compete with it is by doing the same thing cheaper. And that’s a losing game, because someone can always do it cheaper than we can, and it’s a race to the bottom. We don’t think Shopify needs another SEO or shipping app, only cheaper. Sometimes, the users we speak to are focused on their product and don’t know there’s an app which solves a pain of theirs, so we direct them to this app. Of course, if there’s a significantly better way of solving a problem, that’s a different game.
If we can’t see a clear and straightforward way to technically implement an idea, we kill it. We’re a startup, which means we have to bite off pieces we can chew. Tackling a problem which we don’t know how to solve from the beginning, and dedicating our limited resources to it for an extended amount of time is an invitation for trouble.
If there are not enough potential users for an idea, we kill it. How do we know if there are enough potential users? We figure out what a potential user’s store looks like, and build a program to analyze sites to see if they fit. Is the idea an app to allow users to manage lots of products easily? We take a random sample of Shopify stores and see how many products they have, then extrapolate to the 100K stores built on the platform. If we can’t figure out how to measure how many potential users there are for an app accurately, we kill it.
Then we choose from the surviving ideas based on how cool we think they are.
Now the coding begins. We actually have our own PHP framework that we developed ourselves. Jeka, our developer, figures out how to get the necessary information and set it through the Shopify API. He then creates the necessary databases, queries, etc. Then he sits down with with Igor, our designer , and together they design the app layout and look. Once they’ve settled on the design, Jeka builds the app, which takes about 3 weeks. Then we all try as hard as we can to break it (we call this Quality Assurance). Once we are reasonably sure that the app will not explode when installed and used, we give it to our friends with Shopify stores to play with (to join this group, just leave your email on top.) Then we send it off to Shopify for final approval. Once the app has been approved, we release it to the world!
You can see our latest effort here. It’s called Swatchify, and it lets users display items with color variations gracefully and elegantly to their customers. More on that in a separate post…