Storemapper: Bootstrapped to $50,000+/year in 2 years (with live metrics)

Two years ago I launched Storemapper an embedded store locator service that runs on any website or ecommerce platform. Today around 500 brands use Storemapper to help their customers find the closest place to buy their stuff.

The service has grown from bootstrapped to over $50,000 per year. It’s not cool like a billion dollars, but not half bad for a side project. Today I want to share some data, stories and things that did and didn’t work.

Thanks to Baremetrics, which offers one-click SaaS metrics for Stripe, you can see the real metrics for my business on this live dashboard.

36 hours in a first class cabin

Two years ago, August 2012, I was doing freelance work for ecommerce merchants on Shopify. Within the span of a weeks, several of my clients asked for a store locator for their site. You know what I’m talking about, enter your zip code, find the closest store near you.

Given how ubiquitous store locators are on the web, I figured their must be a plug and play solution. An hour of quick research and I didn’t find any good options so I made a note to prototype a no-coding-required solution for merchants.

A few weeks later I was headed from San Francisco to Buenos Aires, Argentina. I booked the flight with miles and in some fluke I was able to upgrade to First Class if I routed through New York JFK. With an eight hour layover in the Flagship Lounge I was looking at nearly 36 hours of free wifi, unlimited champagne and coffee and very few distractions.

So I set a goal, to build an entire Minimum Viable Product on the flight and launch it as soon as I landed in Argentina. So that’s what I did. I built a very very stripped down, barely workable version, launched it when I landed, sent an email to all my freelance clients:

“Here’s this thing, here’s what it does, sign up here, put your credit card in there, it costs $5/month.”

On Day 1 Storemapper had 3 paying subscribers.

With hindsight and the experience of building other products that didn’t get any traction, I know that starting from this position, with certainty that some customers will pay for the product is a fantastic starting point for a small business or passive income side project.

Minimizing time suck

At the time I launched Storemapper I was juggling lots of other competing priorities. I was heading to South America to cut my cost of living so I could work on building the first version of my main startup idea. SolarList was a much larger technical problem and I needed to dedicate lots of time to it, on top of freelancing to pay the bills. So from the start the most important metric for Storemapper was minimizing my time commitment to 10–15 hours per month, total, including support emails.

SaaS (software as a service) subscriptions can take a long time to build up to meaningful revenue. See also: the long slow SaaS ramp of death. So it’s important not to get bogged down over-optimizing early on. I forced Storemapper to stay low priority in the beginning which ultimately lead to a better product and happier customers.

The first version of Storemapper was a true minimum viable product. It lacked tons of important, some might say critical, features. I didn’t make a logo or get an email address. The landing page was literally a few lines of text and a big blue sign up button. You couldn’t change your password or even cancel your account. There were no receipts for payments and the first few credit card transactions were even handled over non-SSL connections (sorry Stripe!). No terms of service, no privacy agreement. Really a lot of missing things.

But because it clearly met an unmet need that customers were willing to pay for it continued to grow slowly (5–10 new paying customers per month), without consuming my life.

A few things that worked well during this period:

Build features slowly

I didn’t build features until 1) a _large_ group of potential customers said they wouldn’t sign up without it or 2) _many_ existing customers said they would leave without it. I diligently kept a detailed backlog of every possible feature request, but held a very high threshold for actually building them.

Batch support requests

It’s such an awesome feeling to nail a customer support request. When a customer emails me asked for something and I can ping them back in a minute with exactly the right answer, I love it. But early on I think you can’t compete on support speed. You should batch support emails, answering them every few days. I kept support emails in a separate gmail account and only logged in infrequently, knocking out the requests at once. I definitely lost a few customers in the process but it was essential to maintaining my sanity. It’s hard to do support requests at all in the early days of SaaS. You constantly do the math on how an entire year of this customer’s subscription doesn’t add up to one hour of your freelance rate. The amazing part is a high percentage of those support requests solve themselves, customers end up answering their own questions.

Let bad shit happen

Storemapper was my first product. I had done freelancing and consulting before, but this was the first time customers had given me their credit card in exchange for a product that was supposed to work. Bad shit is going to happen, so zen yourself up before you get started.

I got my first furious email from a customer who simply couldn’t believe how difficult to use my (five dollar a month!) product was. I got my first midnight phone calls from a frantic designer on a deadline trying to get a store locator up for a client. If you build software you’re probably used to striving for things to be 99.99% excellent but it’s just not possible when you launch a product. You won’t even get close to that in the early days so don’t give yourself a heart attack.

Never underestimate the power of saying, “I’m sorry, that happened, here’s how we’re going to fix it.”

Growing to meaningful revenue

In Spring 2013, Storemapper was pushing about 50 customers and generating a few hundred dollars per month in subscriptions. The money wasn’t meaningful, but Storemapper was valuable to me as an experiment. I had only started learning to code about a year before I built Storemapper (in late 2011) so I was learning all about scaling a real product with paying customers, in a low-risk environment. We had some outages, some downtime, some accidentally deleted accounts, incredible lessons for me as a software entrepreneur and ultimately not that costly for anyone.

But I decided to get more serious. I set a target in six months I wanted Storemapper revenues to cover (Brooklyn) rent. I got there and a little more. By the end of the year, December 2013, Storemapper was doing around $2,000 in monthly recurring revenue.

Throughout I stayed within my cap of 15 hours per month. This was a classic example of effectively using Parkinson’s Law containing time allocation to force creativity. I was now over two years after quitting my last salary-paying job so I also didn’t spend any money, literally zero dollars, on any growth strategies.

I tried some things that worked and others that didn’t. Here they are:

Raised prices, a lot (do this)

This was the best growth hack by far. $5/month was an arbitrary number that I picked initially reflecting how incredibly crappy the first version of Storemapper looked and felt, even though it did actually do its core job well. 6+ months later it looked and worked better and had lots of new features, options, knobs and faders to it so I raised prices 80% to $9/month for new customers. Month-over-month growth in signups continued to rise so three months later I raised prices again to $20/month, a 300% increase in pricing over four months. It turned out I had dramatically underpriced Storemapper as new signups continued to increase at the new price point. Lesson learned: always test higher prices. I didn’t bother with the setup required to run simultaneous A/B tests. I just raised prices and watched what happened.

Automate common on-boarding support requests (worked)

Storemapper is a somewhat unique product in that it has exceptionally low churn. Once you get a customer set up, you get the locator on their site and get their locations loaded in the database, they are pretty likely to stay a customer as long as they stay in business. So I focused intensely on converting every customer that signed up. One thing I found by doing some follow-up interview from customers that signed up for the free trial but didn’t convert was that they often would quit the product because of a perceived lack of feature that we actually did have! They just never bothered to shoot me an email and ask about it. So I made a ton of rudimentary screencasts and embedded them all over the app’s interface prompting users to watch a tutorial about what was in front of their faces. I wasn’t winning any minimalists design awards but it definitely worked. Getting out in front of common questions like “Do you have X?” or “Can I change Y?” both increased conversions and cut down on support time.

Referral marketing (total bomb)

During this period I did a pretty good job of maximizing value out of each potential customer that signed up for a free trial, but I really struggled trying to find a way to increase the top of the funnel. The number of free trials signups was relatively flat at around 30/month (more on this later).

On occasion we found that a developer/designer or “web guy” would sign up for Storemapper on behalf of a client and then sign up subsequent clients. I decided to try to encourage that kind of referral growth by building out a referral marketing system. I briefly tried a few third-party solutions but found them too expensive for this stage. I put in a solid day of coding to roll my own solution, creating unique referral links for each new user, making nice Facebook/Twitter/email share buttons and building a cookie-based tracking solution that would give each user credit for their referred customers. I pitched customers through email, in-app pop-ups, flash notices, offered 1 month free, then 3 months free, then a perpetual revenue share… total new signups through this channel to date: zero, zilch, nada, not a single click or share. I do not have a clue why.

For more on this strategy check out this detailed post on Tim Ferriss’s blog on how Harry’s actually was able to use something similar to capture 100,000 emails. If you’re a Ruby developer definitely use their open-sourced code here as a starting point.

Hiring a growth-hacker hit man (badly mis-managed expectations)

As I mentioned, customer conversion was doing well, but I wasn’t making much progress on new customer acquisition. I knew almost nothing about Adwords and other paid acquisition channels so I reached out to the author of a very popular marketing blog with the following email:

Dig your blog. I run an e-commerce SaaS app. It’s solid and growing slowly organically, customers are happy and it requires almost none of my time but my passion project (a solar energy business) is keeping me from doing any real time investment in customer acquisition.
The app, is the slightly dull topic of adding a Store Locator to any website. It’s the best solution on the market and there are of course 100,000s of potential customers. It’s a waste that somebody is not building this out with heavy customer acquisition and growing this to a massive user base (users pay $9/mo w/ very low churn).
Any tips for finding a solid marketing partner, either equity partner or pay-for-performance?
Thanks for the advice and all you do.

To my surprise a response came back with two connections cc’d. I set up a quick discussion with one who was extremely smart and competent and just setting out on his own so, I hoped, keen to do some work to build the portfolio. My terms were a long shot: a strictly performance-based compensation with firm user growth targets in return for a percentage of lifetime revenue of the company and equity that ratcheted up to 50%. Miss the targets and get nothing. The targets I set out were super-aggressive but we agreed on the structure.

Long story short, we didn’t come close to the first (again, very aggressive) target. When it became clear that I was serious about ‘hit the targets or get nothing.’ We amicably agreed to dissolve the deal. I have a lot of respect for the growth hacker in question and I’m honestly not sure what the takeaway is from this story, but I definitely could have handled it a lot better.

The powered by link (SaaS viral superpowers)

In a happy coincidence the customer acquisition channels that did, and do, work for Storemapper are all totally free and largely passive channels with self-reinforcing growth loops. Today almost all new customers come via organic search (and no I’m not going to say a word about the dark arts of SEO), app stores like Shopify’s and the little “powered by Storemapper” link at the bottom of nearly all of our store locators.

Tons of our customers saw a Storemapper on another site, wanted it, clicked the link and signed up to become a paying customer. I begrudgingly added the “feature” of removing this link for our Premium pricing plans a few months ago but almost every new customer becomes another little acquisition channel adding up to 1,000s of click-throughs to our landing page per month.

Up-selling to annual billing (how to make $2,000 in an hour)

This isn’t so much a growth hack that did or didn’t work but an example about how having a customer base can save your ass sometimes. For most of 2013 I was riding pretty close to edge of financial oblivion. I had moved back to New York City, hugely increasing my monthly cost of living, still trying to get my startup off the ground, run Storemapper on the side, and freelance enough to pay the bills. Shortly after moving back, I realized I had misjudged the timing on some inflows and outflows. I didn’t have enough cash to cover rent and some other bills and wouldn’t get paid an invoice until a week too late. I literally had about $500 in the bank and sat for a few hours trying to figure out how to make some quick cash. I hacked up a way for Storemapper customers, most of whom were paying $9/month, to switch to annual billing for $99/year and sent out an email blast. 11 people switched over. 10 more the next day. In a few days I had another $2k in my bank account. Phew!

I think this is pretty common knowledge now, but even though it decreases your annualized revenue, switching customers to annual billing is great for your cashflow and sanity. Make it as easy and enticing for customers as possible.

Odesk lead generators (a flop for me but maybe not for you)

I thought this idea was pretty clever at the time but ultimately it didn’t work for me. It’s pretty easy to glance at a website and see if they are a good candidate for a store locator. In the main navigation is a link “Find Us” that goes to a page with a uselessly massive list of locations and addresses. If you have this kind of distribution, a store locator will absolutely pay for itself many times over by making it easier for people to find your distributors. So I went to odesk looking for people who do outsourced data mining, put together an little tutorial on how to identify these sites and put up a ton of listing. I hired about 12 workers on test runs, experimenting with pay for successfully finding a good lead, pay by the hour, pay for successful closed customer, etc. Ultimately I spent about $100 before deciding it wasn’t bearing fruit. The key problem was that I didn’t have a master list for them to churn through. I think this idea would have worked really well with some kind of huge list of websites as a starting point, but just telling them to go out and “sift through the internet” for this kind of website went nowhere.

Okay, this list is getting a little long, let’s talk about the (first) time I tried to sell Storemapper

At the end of August 2013, my solar energy startup was launched out of Beta and we were just about to close an angel round. Storemapper was a solid little product with predictable, growing recurring revenue and a lot of room to get bigger with a focused owner or team behind it. So I decided to see if I could sell it. I wrote a single email to a few people in my network and the NYC Ruby community. You can still read it here. The response was crazy. I got nearly 50 emails back. Some of them were clearly scammy. A lot of them were people wanting to partner without putting any skin in the game, which was of no interest to me.

The market for selling/acquiring small software businesses, and probably the overall market for small businesses, is very inefficient. Unless you’ve created some kind of bidding war for your business, to make a deal happen it seems you have to take a much lower price than the true value of the business. There’s so much uncertainty that buyers only buy when they feel like they’re getting a steal.

I had a few discussions with people who properly valued the business and offered deals that were pretty close to “fair” but they weren’t willing to risk the cash upfront. The complexity of the deals, with sliding payout structures and claw-backs and everything else just didn’t justify the economic value. I did get a few tentative cash offers, but despite the fact that I pointed them Fred Wilson’s clear assessment of appropriate SaaS multiples, the highest offer was twice annualized revenue of $20k, so $40k. At that point I probably would have sold for around $80k, but in all cases the option to keep Storemapper felt much better.

I did however meet some really cool people in the process. Totally worth the experience despite no deal.

Growing the team: Awesome people that didn’t work out

Another part of the reason I didn’t sell Storemapper, at that time a good friend and one of his colleagues made me a counter-offer. They would take over product development and marketing of Storemapper. I would scoop most of the existing recurring revenue monthly and we would split new subscription revenue, with their share of that increasing over time, up to 66%, as they hit performance targets.

Aside: The structure seems similar to an interesting deal the Coderwall team did with Assembly recently.

I was thrilled. Despite the fact that they both have demanding full time jobs, on paper these guys were the dream team to take over the product and grow. The deal lasted about 4 months before unraveling. After coding on my own for over a year, adding the first new collaborator, going to n > 1, was really hard and product development slowed and took up more of my time not less. It was nobody’s fault, but none of us had experience with stage of building an engineering “team.” Coordinating schedules made it really tough to find time to work together and consensus on any issue, from product to marketing, took way too long. In the meantime we weren’t growing very quickly so the new partners’ revenue was hardly any incentive at all.

Like the previous partnership, things ended largely amicably, with everybody acknowledging that things just weren’t working.

I think for these kinds of deal to work out, one side really needs to commit. In both cases, everybody thought they were being really clever by putting together an elegant solution where nobody could really lose much, but that also just made the incentives too unattractive to justify the work. Either the new guys coming in need to put skin in the game and buy into the company, or the owner needs to take a bigger gamble and offer a chunk of the existing business to bet on growth.

I was way too conservative with this and neither deal netted much except experience.

Re-investing for growth

In February of 2014 I was back to being a solopreneur, running Storemapper on my own. I also found myself with a lot more free time on my hands. If you’ve been following the background story you’ll know what that means for my other businesses. So for the first time, a year and a half after it went live, I made Storemapper a priority. From all that time, I had a really robust and well-prioritized list of potential features and improvements to be made and within a month of 15–20 hours/week Storemapper was dramatically improved.

I saw an immediate big uptick in converted users.
Customers loved the analytics suite, with the back-end powered by Keen, that allows merchants to see detailed data on where people want to buy their products, and in particular where they want to buy it and can’t find a place to buy it.
On the back of that and several other big features we launched tiered pricing including a Premium tier a higher price point that is seeing good adoption. We now have six plans in all: Micro for early and small businesses, Pro which suites the majority of our customers, and Premium for power users and big brands, with a monthly and annual option for each.

In the last four months total annual recurring revenue has more than doubled to around $54,000/year. Not too shabby for a side project.

I’d love to hear any thoughts or comments on the business and I also hope a few entrepreneurs find some bits of this tome a somehow useful.

If you enjoyed this post

I’m writing an ebook on building micro-SaaS businesses. Why not check it out?

Sign up here