2015 Year in Review: Building A Fast Growing Bootstrapped Business
What's it like to run a growing bootstrapped business? Let's look back on 2015.
It hardly feels like any time at all since I wrote this post last year.
A lot has happened in those 12 months, but at the same time, I don’t feel like much has changed about the way that we’re doing things (which in a way is good).
You see, one of the fears I personally have as a founder is that, as you grow, things just start becoming becoming…..unwieldy.
You need to hire good people, there’s more pressure, there’s more potential points of failure, you feel like development slows down as your app becomes more complex and then there’s more distractions from keeping you focused on the task at hand.
A key part of how you grow is learning how to handle all this stuff, it’s stuff that you didn’t envision you might need to do when you started building your app – back then all you needed to worry about was getting traction. Now that you have traction you need to adapt to whatever the world decides to throw at you on a given day (we’re a resilient bunch).
I’m really excited in this post to share some of the key milestones that we crossed this year, what we tried (and failed) plus some exciting new stuff we’re working for for 2016.
Monthly Recurring Revenue (or MMR) has always been our primary focus. As a bootstrapped business we need to make decisions around how we spend cashflow to get the best potential outcome for that spend, with the proviso that the more revenue we generate, the more we can invest back into growth/expansion of the business (via hiring or new features).
This includes things like:
- Payroll
- Tax liabilities
- Office expenses
- Infrastructure costs
- Marketing expenses
- Contractors (Accounting/Legal/Design/Dev etc)
With this in mind, you could say that we’ve been quite conservative with things like hiring this year. Our core team hasn’t grown much (which hasn’t affected our ability to execute), but it’s certainly an area we’re looking to grow in 2016. Check out our open positions here.
The graph above shows our revenue growth for the last 12 months. It’s been pretty consistent, with some spikes at key times of the year
But even though that has been our main focus we’ve seen huge growth in other metrics.
Our signups skyrocketed by 277% this year, but one issue that we face in this department is that there’s a huge amount of noise.
Particularly:
- Contestants signing up thinking they can manage their linked social accounts from our main marketing site
- Lots of curiosity signups on the Free plan
This can make it very hard to measure true conversion rates of certain acquisition sources or growth experiments.
Support requests also increased at a similar rate. We put in a lot of work into support to have high quality resources to link a customer to for almost every sort of question they can throw at us. This makes support quite quick, and in the case where it may actually be a bug we’re still pretty quick to fix (sub 4 hours).
This coming year we’re hoping to add some resources in the USA to handle issues outside our typical Australian timezone support hours.
Our traffic growth this year has far outpaced any other metric (which is always fun for engineers). The number below excludes many of the fake impressions or bots that hit the network (we remove these every month), that’s a growth of 635% (1200% if you look at Google Analytics).
A big part of the reason behind the traffic growth is not only because we have more customers running more campaigns, but we also have Capture running on over 1000+ sites now. Many driving Millions of page impressions per month into their opt-in forms.
An important metric also is the number of actions performed on the platform. This number follows quite closely with our other metrics at a 315% growth rate. We also added a new type of metric late last year which is Events, these are secondary actions that might happen during a campaign (usually clicks on Facebook Like buttons or post Capture events).
We now have 4 developers working on the platform (more on this below). We average deploying changes 6+ times per day to production.
The rate of growth in the last year certainly has thrown additional challenges at us:
- More focus on scaling, redundancy and security
- Focus on platform and entry fraud
- More integrations (we integrate with over 50+ services) means more points of failure and more resources needed
- We have 4 apps now – which spreads dev work across multiple places
- We support 20+ languages, this means every time we release a new feature we need to ensure we can support the correct translations
- The realisation that our current billing system isn’t flexible enough to handle multiple products
That being said, we managed to pump out a huge amount of features in the last 12 months. There’s also hundreds of smaller updates and improvements that didn’t even make it to that page.
We are extremely lucky to have many brands and customers use Gleam to execute their campaign ideas. In the last year we’ve been blown away by some of the results our customers have achieved.
Android Authority have driven Millions of actions and run a almost 50 campaigns in the last 12 months.
The awesome guys over at The Beard Club ran close to 30 campaigns. Including a Party With Dan Bilzerian, a Bikini Model contest and let their customers win Free Beard Products for a year.
Litter Robot ran a hugely successful 25 Days of Christmas campaign with a new unique campaign every single day. Along the way they managed to collect close to 9k UGC photos from their users with unique #nomorescooping hashtags.
We are huge gamers here at Gleam and we’ve put a lot of effort in the last 12 months to support E-Sports through several integrations (Twitch, YouTube + Steam). So it’s great when we see gaming organisations use the platform to reach possibly some of the most engaged users on the planet.
ESL One has been using Gleam to run their contests at major events, it’s fantastic seeing the amount of buzz and entries they get in realtime.
Razer has been consistently running campaigns to engage their audience all year, with some amazing results. They also customise the widget using Custom CSS fairly heavily.
As an app grows, and as the team building the app grows, you often have to make changes to how you manage your development cycle.
In our case it used to be very simple. I would scope features and John would build them. But soon we started adding remote devs to the team who would be working on different features. Again we tried to keep this simple, and create a productive environment so that local developers could maximise their output.
Each local developer can build themselves a team of up to 4 remote devs, these developers will work from a task list inside Github on things like:
- Features
- Integrations
- Improving Test Coverage
- Frontend Tests
- Fixing Bugs
Once features or improvements are ready for testing we’ll push to our staging environment, then everyone on the team will test and comment on the pull with things that still need to be fixed. Once we’re confident that the feature is bug free (and the build passes) then the pull request gets assigned to the main developer who will then merge into Master. Occasionally bugs creep through, but since we use Bugsnag to push Exceptions our HipChat room we pick them up and fix them very quickly.
Some of the features our remote devs have added in the last year include:
Allows users to send Gleam data to their own specified endpoints.
For a long time we were letting customers use HTML. This alienated less tech savvy users, so we built a nice editor which allows easier editing of elements.
In April Bit.ly added a 10k monthly restriction to their URL shortens. We do more than that per hour, so we built our own URL shortner with a nice 4 letter domain name (wn.nr).
That is one of the downsides of working with or relying on so many 3rd party APIs. They can change, TOS can change or restrictions can happen and you need to decide how you accommodate those changes.
Customers having the ability to send completely customised post entry emails is incredibly important. One of our devs built out this feature earlier.
We added support for the popular Steam platform. I don’t think there’s anyone else in our space that supports Steam like we do.
Our custom fields used to be controlled by YAML. Which is about as intuitive as you can get from a customer perspective. Now we have a nice drag and drop editor.
So far, this development process has really helped accelerate the output we can get from a single developer. Whilst also freeing up their time to work on more important tasks (without compromising lack of feature development).
If you like this sound of this workflow, we’re currently looking for remote developers!
So, what does 2016 have in store for Gleam? Well, we already have about 15 features in our pull pipeline ready to go into the App, so keep an eye on our Updates page for those.
When we launched Gleam in 2013 we only had a single product – Competitions. Since then we’ve grown the product to one of the most flexible on the market with more integrations than anyone else, we’ve also added Rewards, Captures and our UGC Gallery product.
The problem is that we’ve never revisited our pricing. We essentially giveaway access to 3 other apps for free, and whilst this isn’t necessarily bad, if they don’t generate direct revenue then the amount of development time they get allocated is not in proportion with the revenue generating apps – in essence you don’t give the newer apps the same chance to succeed.
Coming early this year we’ll be pushing out new pricing for our Apps. Our aim is to be completely transparent so here’s the plan:
- Firstly, all existing customers will be grandfathered on existing pricing. So don’t panic
- Competitions will be getting 2 extra plans, the monthly cost will be increasing and the yearly cost will decrease. We will also be trialling a yearly plan aimed at Hobby users
- There will be some changes to what Actions or features are available on each plan, but this will only impact new customers
- Captures will be coming out of BETA with some new V2 capabilities (after which all BETA testers will get their earned credits allocated)
- You’ll be able to buy Competitions, Rewards, Galleries or Captures separately
- Credits for Rewards and Captures that you buy will be available across an unlimited number of Sites
- Or you can signup to a Package which gives you access to all our apps (at a deeply discounted rate)
- We’re moving away from each Site having separate billing. Now you’ll be able to buy access to a number of sites as part of you plan and just use them as needed
- There will be more flexibility for Agencies to scale up and down based on the number of clients they need access for
- Team management will be rolled out on Plans as standard
- We’ll be making changes to our Affiliate program to reward paid referrals on an ongoing basis (and removing the free account incentive). Unfortunately it just drives the wrong behaviours.
As with everything we’ll keep you in the loop when we expect these changes to take effect. There will be a handful of clients where their existing plan conflicts somehow with the new pricing – for example if you have 1 Business account and 1 Pro account currently, these will be the customers we expect to migrate first.
In the 2 years we’ve been running the company we have never had a UI or UX designer. The design has always been handled by myself or John using things like Bootstrap, Flat UI or other web components like Chosen.
For the past 6 months we’ve been working to redesign our backend for customers to vastly improve the campaign on-boarding and setup experience.
Here’s a sneak peek of the new design below:
We’re moving to a completely AngularJS backend which greatly increases the flexibility of what we can do (currently it’s all Ruby). Below is the entry setup tab, another awesome thing about this is that we’ll be able to progressively save your campaign – so if your browser crashes or something happens during setup you won’t lose any of your hard work.
We’re improving the onboarding for new users too, each screen will have a quick tour of the key features when you first start using it.
This is the menu, we’ve streamlined the ability to manage your Sites and also added in-app notifications so you can keep up to date with new features and other super awesome Gleam news.
The campaign overview screen has been refined to give you more information, it will also have much better filtering so you can view campaign performance by date range or filter by name. We’re also planning to add Revenue tracking across all campaign types (probably not right away, but it will come).
In the backend we’ve also added improvements to managing your actions, this includes making it easier to pick winners from the Actions tab.
With the introduction of separate plans for various Apps you’ll be seeing much more new functionality and features being added.
A new version of Galleries is coming with an improved design, full screen options, better visibility of voting, ability to upload directly to the Gallery and more import sources.
The backend will give you a much more visual feel for the Galleries that have been created.
Viewing individual images is getting an upgrade, you can page through images, votes are much easier and we will also be supporting text posts too.
Capture is probably my favourite product to work on currently, there’s so much potential lurking underneath (and plus the results that BETA clients are getting is nothing short of amazing).
Expect a big focus on improving this product and adding more templates and designs over the next 12 months.
The Capture setup process has been streamlined to provide a nicer flow. You’ll notice we also allow you to get a view of what the end Capture will look like on Desktop or Mobile.
We have completely redesigned all our templates to make them much cleaner, they will also include 2 step signup processes, the ability to have a call to action to close (i.e. No Thanks), and all templates will be fully mobile responsive.
This is the new side view Popup With Image template. You will be able to directly edit the HTML and CSS of every template to make it your own.
And finally we have a range of new Takeover templates that will really add extra punch to your campaigns.
Instagram has recently rolled out a new API policy which will prevent brands from running campaigns that drive Follows or other activity outside the Instagram platform.
You can administer a promotion on Instagram if you comply with all applicable laws and regulations, but don’t directly incentivize other actions.
What does this mean for Gleam users? The new changes come into affect in June 2016, so existing actions will continue to work until them.
After June 2016, you will no longer be able to award entries for Following an Account or Liking a Photo inside our widget.
Obviously this isn’t great news for customers, we always prided ourselves on being one of the only platforms with a seamless Instagram integration for contests (and loved seeing the results customers were getting). We are releasing a few alternative actions for Instagram to replace the Follows (similar to Google+ and Facebook), which you will see in the next month or so.
From what I understand, businesses will still be able to run competitions inside their Instagram page asking users to Like/Comment/Follow on a post. These policies only apply to apps using the API.
I think it’s important in this post to reflect on some of the mistakes we made (intentionally or unintentionally). Mistakes are natures way of learning, and if they didn’t happen then we wouldn’t grow.
We have been developing our new plans since last December, John is literally going crazy right now.
It’s really easy to underestimate how much work is involved when building something complex. Billing is no exception, and now that we bill for multiple products there’s lots of edge-cases to consider:
- Billing Cycles
- Upgrades
- Downgrades
- Pro-rating
- Limits
- Credits
- Velocity Based Notifications (based on usage)
We made quite a few mistakes in scoping out exactly what we wanted our billing to do. This meant cutting features and completely removing and ideas to allow users to add-on whatever feature they wanted to any plan 😭
Migration paths in particular were also something that was quite overwhelming. It wasn’t until we did a retreat away for a week that we really started making some significant headway.
This ended up costing us quite a few months of development (maybe 4) – but that’s always going to happen when you want to build something flexible rather than something that works in a very linear way (like the plans do at the moment).
This is a topic I’ve wanted to talk about for a while, but never quite found the right place to bring it up. It almost warrants its own Blog Post.
Fraud is a huge consideration with any type of incentivised activity. And there’s two particular areas that need addressed.
This type of fraud is fairly easy to detect, you have users entering under multiple email addresses, referring themselves virally for more entries or using proxies / fake accounts to drive up their entry count.
The more of it we see, the easier it is for us to detect. Occasionally we see some fairly sophisticated stuff, but fortunately it’s extremely hard to enter contests en-mass whilst pretending to be human.
One of the downsides with running a free platform is that you will always have people that abuse it. In our case we are seeing an increasing trend of individuals creating fake contests that never have any intention of awarding a prize.
This is much harder to detect, as you have less signals to work with. It also takes a lot of human interaction, which has taken a lot of my focus away from the core product.
But the good thing here is that, this is something we do care deeply about and have been building systems to ensure that if we suspect someone is not legitimate they will be required to provide verification before they can run their campaign or even use the platform again.
So if you see some campaigns that say Promotion Disabled then this is likely the reason. You can also report campaigns via our contact form and we will investigate.
I would suggest being vigilant for things like
- Small streamers or bloggers giving away large ticket items
- Contests or videos in which you never see proof that the prize exists
- Are organisers announcing their winners?
- Do some campaigns continually get their end date altered?
- Do the campaigns have legitimate actions? For example if someone is asking you to complete an unrelated survey – chances are they are trying to profit from it
Back in April, Bit.ly gave the middle finger to anyone using their API and reduced the number of requests you could perform on a non-paid accounts to 10k per month. This wasn’t sustainable for us, so we decided to build our own URL Shortener.
Building the shortener was pretty easy, the hard part was finding a decent domain to use. Short domains usually cost a fair amount of money, even then it’s still really hard to find one that fits with your overall theme and branding.
That was until I came across the .nr TLD, I instantly thought that wn.nr or Winner would be perfect for our use. Not only that, but it was only 4 characters long (even smaller than using Bit.ly).
Everything was running smoothly for months, until suddenly the entire .nr TLD went offline. Even Google.nr wasn’t responding. It was over 24 hours until it came back.
A month later, the same thing happened again. Turns out they must run their TLD from some Internet Cafe and someone tripped over the cable again.
Needless to say that it’s very frustrating when something like this happens and there’s absolutely nothing in your control that you can do. We however find quite a hacky solution to this problem, we set our TTL on the DNS to 2 days – so if it ever goes down again it’ll not impact us for at least 48 hours.
Moral of the story is, be wary of new TLD’s that don’t have solid infrastructure or failover mechanisms.
Now when I say cost, I don’t mean monetary cost. Our actual infrastructure cost is fairly reasonable, and the performance/configuration of our hardware has generally never been a problem.
What hasn’t scaled well is our codebase. Particularly when it comes to calculating metrics and other counts on the fly.
There becomes a point when doing 1,000 writes to the same row per second gets expensive.
This means we spent a fair amount of time on performance, redundancy and efficiency – to ensure that we get the absolute most out of our hardware, and that we have enough capaciity to sustain huge traffic bursts (like the ESL finals or the Superbowl).
I think there’s a lot to be said on how a startup handles growing pains. Obviously the best way is doing it in way that isn’t noticeable to the customer (which involves having good monitoring in place). It is hard to imagine that we’re pushing 100MM pageviews per month with no real dedicated infrastructure engineers or devops.
This is something I really want to do more of this year, every person I speak to always tells me how awesome Webinars are at driving new customer growth.
And I see the point, it allows you to talk to many people at once. It’s extremely practical and a fantastic use of time.
So I definitely plant to do more videos and webinars, along with some pre-recorded ones that we can use for prospects that want live demos.
It’s also important to reflect on the good things you did during the year. What worked? Can you scale it? Can you do more of it?
This advice probably goes against much of what is taught when it comes to SaaS sales but here goes.
We completely stopped taking sales calls this year. There was a number of reasons behind this decision:
- Calls aren’t scalable, if I’m doing 4 per day that’s 4 hours I’m not writing content or other marketing activities that will drive incremental customers for years to come
- Our plans aren’t expensive, so the ROI on calls is very low
- We aren’t a sales heavy organisation like many more expensive competitors. Our aim is to build great products so we invest more in development
- Some Enterprise businesses are wanting to do 2-3 calls then end up purchasing our Pro plan for $39
- A lot of the calls end up covering basics
- Some calls are with prospects that do not actually diving into our guides or docs, then ask very vanilla questions via the phone
- Many prospects have already tried out our widget in another brands campaign, so they are very aware of certain capabilities up front
Instead we chose to automate our process in a way that tried to answer as many questions as possible then get the customer to give us more targeted feedback which we can answer easily via email.
We’ve written a lot of guides that give deep insight into our product like:
- What is Gleam?
- How Can I Use Gleam?
- How Are Others Using Gleam?
- Getting Started Guides
- Live Campaign Examples
On average even with this method over 90% of customers that email us asking for a call end up signing up for one of our paid plans.
There are plenty of outliers to this particular process. Agencies are one, since they generally have more complex requirements, but even then I think you can drive the right sort of behaviours by having the right plans available for these customers.
I still do the majority of customer support, and I love it. I love talking to customers, finding out their pain points then trying to do something to solve it.
I was worried this year that our support volume would become unmanageable. Being an Australian business there’s always a gap of 6 hours or so that we’re not instantly responding to issues for UK and US customers. But that never happened, much of the support we get is easily answered, and even if it isn’t customers aren’t expecting an instant answer.
In the last year we’ve managed to cut down on the amount of un-necessary support we receive just by either improving our documentation or making subtle changes to our UI to prevent confusion.
I’ll provide a quick example of something that was causing a lot of support issues which we then fixed.
Earlier in the year we rolled out the ability to bulk manage your Actions in the backend. It allows you to multi-select a bunch of rows then perform a bulk action like Delete on them.
We put a huge focus on building content in 2015 that showed the power of our product, without trying to be too salesy.
I think there’s a huge amount of merit in building great content that appeals to customers that are trying to achieve a certain outcome, but ties it back to your own product. The key is to make the content really really useful.
For example:
We’re all fanatical E-sports fans here at Gleam, and over the last few years we’ve seen it grow at a tremendous pace. We also knew that not many platforms were supporting integrations with Twitch or Steam so it made complete sense to build this.
If you had asked me a year ago what I felt was the most engaged audience for giveaways and contests, I probably would have said Women over the age of 30. But, when you see the data on how engaged gamers are with the brands and games they play – they completely blow that demographic out of the water.
We now have many many clients in the game industry including:
- Hardware manufacturers
- Large streamers
- Game studios
- Large gaming events
All using the platform in various ways, from launching new hardware, to promoting their products via a particular streamer, promoting an event, or even creating an instant redeem reward to give out 100,000 beta keys for their new game.
I’m really excited to see how the E-sports landscape changes over the next few years.
If you don’t enjoy using your own product, then it can be really hard to see its flaws or understand its strengths. I always enjoyed this deck on how Github Uses Github to Build Github, there’s nothing better than being the #1 advocate of your own product.
In the last year we used our own products in many different ways to grow our own business:
- Using Capture Bar for backend and language notifications
- Using Capture to increase our Email Opt-in rates on the blog
- We ran 5+ contests, some of our own and some with partners
- We created hundreds of Live Demos and example contests to make it easier for customers to see the power of our product
- We even created specific examples purely for blog posts.
2015 has exceeded our expectations, we’ve had so much fun continuing to work on a product that we love and also see many of our customers grow and flourish too.
Here’s to 2016!
Stuart & John.
Feel free to follow us both on twitter: @thegyppo and @ponny
You Might Also Like
Practical Ways to Use Lifecycle Emails to Get More Customers
Join us as we explore how to delight your customers using transactional and lifecycle emails.
15 Pre-Launch Growth Hacking Strategies For Startups
Don't underestimate the power of growing before you launch. Here's our top tips.
5 Things We Did In 2014 To Grow By 1059%
We managed to grow Gleam by 1059% in one year, lets take a look at how we did it.
The Pros & Cons Of Working From Home
Get these 20 tried and tested tips to make life easier when you work from home.
Stuart McKeown
Stuart McKeown is one of the Co-founders at Gleam. Aside from writing and helping businesses grow, he also enjoys sound design and drinking tea ☕️