This is the tale of how I launched LinksSpy.com. I wrote it both to get a few thoughts off my mind and to give a counterpoint to articles like this one from RivalFox. I don’t want to be negative about RivalFox’s achievement: Those guys rock and they deserve every last bit of it! – I just want to add another data point.
tl;dr: I did a few things right, I did quite a few more things wrong, but in the end I shipped and had moderate success so far.
Some Background on LinksSpy
LinksSpy allows you to spy on your competition and learn where they get their links from. This helps you to build more high-quality links to your website – thereby sending you more visitors and helps you get ahead of your competition on Google.
It is targeted mostly at SEO agencies, who use it to optimize their clients’ websites.
I came up with the idea while working with the beautiful people at Moz – who were kind enough to take me on as an intern despite serious legal obstacles (Short story: I could only work unpaid because I already get paid, they wanted to pay me for legal reasons).
So I felt that I had to give something back and I came up with an idea to lower their churn rate. That idea eventually evolved into LinksSpy.
How I built LinksSpy
I built LinksSpy on the side. My day job doesn’t leave me with a lot of room, but I usually manage to sneak in about 10 hours of work each week.
For the techies: LinksSpy is built with Rails and runs on Heroku.
The Build-Up Prior To The Launch
I started working on the LinksSpy-predecessor around this time last year. It was a clunky shell script written in node.js. It was designed as a one-off project – to be run only once as a test to see whether it would reduce churn or not.
After I was back to Germany from working in Seattle, I didn’t put much work into the script; mainly adapting it to work with the free tier of the Moz API.
However, I put up a basic landing page and started collecting email addresses. I also bought my way into betali.st, which got me 226 addresses for a modest $39 (at a 41.4% conversion rate). The addresses were of pretty good quality, too.
Up to the launch I mainly focused on building a web app to present the data and talking to potential customers from my growing mailing list. I scanned through my list using Rapportive – which allows you to find people in your target niche. At various stages I onboarded two or three users at a time to beta test LinksSpy – making very clear that while usage is free during beta, I would eventually charge them.
All the time I didn’t have an automated process for the competitive link analysis. Every time a user created a new campaign the process would look like this:
- the web app would send me a file with the data (URL, competitor URLs, campaign ID, etc)
- I would load that file into the modified shell script and let it run on my computer at home
- The script would query the API and compute everything in a single run. Often it would crash two or three times before running successfully – I had to restart it every time and hope for the best.
- After the script finished, I would take the results and copy&paste them into a special form in the web app at which point they became available to my users (they get an email)
I implemented a lot of feedback from my beta testers (Thanks again, guys!) over the following months – along with credit card processing (using Stripe & Koudoku) and a feature to do outreach.
After about eight months of development, I finally got fed up with postponing the launch again and again and again. I pulled the trigger and announced the upcoming launch to my mailing list of 268 subscribers on 24.04.2014.
The Launch
The Launch Email Sequence
I went with a launch email sequence of three emails:
- a launch announcement email(4 days prior to launch)
- the actual launch email – 20% off for 48 hours (at launch)
- a reminder email (8 hours before the discount runs out)
Here are the stats for those three emails:
That converted 10 out of 268 people to paying customers – a 3.7% conversion rate. This does not seem too bad, considering I had no free trial.
I think that went pretty well – I could have warmed up my email list a bit more, but overall I am pleased with this part.
The Product At Launch
Pricing & Trial
First lets talk about pricing. I launched with a 3-tier pricing of $10/20/40 – which includes the 20% discount mentioned in the emails.
Two days after the launch I increased prices to $10/25/50. Prices have remained at that level for the past two months.
When I launched LinksSpy there wasn’t a free trial – and there isn’t one up to this day. This was a bit of swimming against the stream and I got some negative feedback about this – despite a 60-day money back guarantee.
I was craving the ultimate validation for my product: People were actually willing to pay for LinksSpy.
To that end it worked beautifully and I got 10 paying customers for a total monthly recurring revenue (MRR) of $190.
In hindsight I believe that it would have been wise to offer a free trial. If nothing else, it would allow me to collect email addresses, improve onboarding and learn faster.
I also got the feedback from a few people that I am not charging enough. I’ve probably told a dozen people that they should charge more – and here I am charging too low for my own product. That is a special kind of stupid.
I am going to change both shortcomings in the upcoming weeks. Together with introducing a 7-day trial I will raise prices to $19/$49/$99.
Having the trial be that short is quite unusual, but users get value out of LinksSpy almost immediately after sign up. That’s why I’ll have a real short trial first and maybe test a longer (14 or 21 days) trial later.
Bugs At Launch
About two (2!!!) hours before launch I decided that it would be a really wise idea to make this little (8 characters!) change to the source. What could possibly go wrong?
Well…. a whole lot of things could go wrong. You could corrupt your data model and show your newly-found customers a (not so nice, default Rails) error page. Things like that.
It took me about 2 hours to put that wrong to right – and about a dozen emails to apologize to everyone affected by it. Lesson learned: Don’t be an idiot, keep your hands away from the code and where I can see them 48 hours before the launch.
Missing Features At Launch
The quote that helped me launch LinksSpy was this:
“If you are not embarrassed by the first version of your product, you’ve launched too late.” – Reid Hoffman, Founder LinkedIn
And indeed, I felt that LinksSpy was months away from being “launch-ready”. Among the missing things were:
- no automated processing of created campaigns – I still had to run the script manually and it would fail at least every second run. It took 24-48 hours before data was
available for a newly created campaign - While I wanted customers to input their CC data right after sign up, you could bypass that and just create a new campaign. This allowed you to use LinksSpy without being charged a dime. One guy used this and got his report for free (because I didn’t manually check)
- no custom error pages, just the default ones created by Ruby on Rails (still rocking those)
- there were quite a few UI bugs in the app (and some still are)
- No drip email campaign to collect email addresses
- No lifecycle emails for new users, only minimal onboarding help
- Even users that had cancelled / were not paying could still log in and use LinksSpy
- NO consistent design for the marketing website & application. The marketing website / blog is based on WordPress and the Genesis theme – the application and the main landing page are designed using Bootstrap.
I could find more things to go on the list, but what’s important is that LinksSpy was far from perfect when I launched it. Still, I got happy paying customers.
Marketing at Launch
None except announcing it to the mailing list. Despite me knowing that this is the worst possible move, I didn’t put any marketing effort into LinksSpy. I wanted to keep quiet about it, get some paying customers and see how well it would work out.
Luckily, it worked out quite well. Some people got the first quality links to their website within hours of signing up for LinksSpy. LinksSpy got some great endorsement on Twitter:
https://twitter.com/TheDaveCollins/status/470913396523937792
I could have done a lot more than tweeting about it and announcing to my mailing list. I haven’t done much for the last two months either, instead focusing on improving the product. I will focus way more on marketing in the weeks & months to come (hopefully I won’t go back to just coding. If you want to help me, remind me of my pledge on Twitter 🙂 )
LinksSpy Today
LinksSpy had $255 MRR – coming from 15 customers – on 01.07.2014 (about two months after launch).
I have seen three people cancel their accounts, which means about 15% churn rate – which is to be expected for a newly launched product.
All those numbers should be taken with a grain of salt, because my numbers are still so low.
As my goal is to be able to live off LinksSpy’s revenue in 2022 (no kidding there; that really is my goal) at the current growth rate I will be at about $3500 by then :-D. Not quite enough yet, but not too far off either.
Customer Segmentation
LinksSpy is aimed at SEO agencies, but so far I didn’t convince many agencies to sign up. Most of the customers so far are SMBs and quite a few people who I know personally.
I need to focus more on marketing to SEO professionals.
I will do so by being more active (and buying ads) on /r/seo, /r/linkbuilding and other watering holes for SEOs.
Improvements To The Product
I’d like to think that I have made considerable improvements to LinksSpy, but I still feel like I need to do much more. That’s probably normal, though.
Here are a few things I accomplished in the past two months:
- completely re-wrote the backend; replaced the node.js script with Ruby and fully automated it. This decreased the turn-around time from 24-48 hours to < 2-4 hours. This is a great win for my customers as they get their data faster.
- LinksSpy now automatically runs reports for the campaigns every month (whenever Moz provides new data), so that customers can keep a close watch on their competitors
- The campaigns show a lot more data than at launch (e.g. which websites already have a link back to you)
- a bunch of minor features like filters for suggestions, better export functionality etc.
- I added a mandatory “why are you canceling” text box to learn why people are canceling and how to improve my product
Marketing
I have slowly started to ramp up my marketing. I check reddit for topics where I can contribute to the discussion and mention LinksSpy when appropriate.
Most importantly, I started with building content on the LinksSpy blog. I hired a guy through oDesk who writes rather long (1,000 words) articles for the blog (examples here and here. He’s got a bit of an audience, which is a great benefit on top of his well written articles.
Additionally, I started tagging people for remarketing with PerfectAudience and AdRoll about a month ago. My plan is to use remarketing to get people to sign up for a drip email campaign.
I have written 3 out of 5 planned emails so far. I’ve got the banners for it and I’m tagging the people. All that is missing are the last two emails before I can start with remarketing.
Once I have the drip email campaign and remarketing in place, I want to focus more on getting visitors to the page. Before having that it would be like carrying water in a sieve.
Lessons I learned
I have learned quite a bit: Some things went well, others not so well.
- First of all: Launch it, ship it, then improve it (based on what you learn)
- Have an email list and keep it warm. I partially failed at keeping it warm. I only sent 4 emails over the course of 5 months prior to launch.
- Betalist.com works really well for getting a few hundred subscribers to your mailing list
- Don’t change code shortly before launch
- Do more marketing – something I constantly struggle with doing
- All of this is really hard. It’s easy to understand the concepts & broad strokes, but you need to nail the details to succeed. Doing >> Reading
Conclusion
That’s the hardest part here: Do I have enough numbers to come to any meaningful conclusions? Maybe, maybe not.
What I can say so far is this: It is NOT easy. I haven’t even reached product-market fit and the way there is blurry and uncertain to me. There is so much more to learn about my customers and how I can provide value to them.
I am looking forward to that challenge and think that I know enough to succeed. Let’s see if I can execute well enough 🙂
Was it wrong that I launched so early? I don’t think so. 10 minutes after the launch, when I learned of the severe bug, I felt like it was the worst decision ever. With two months distance from that evening, it doesn’t look that bad anymore. I got some amazing feedback, happy customers and the advice (from said customers!) to charge more. That isn’t too bad – eh?
Recent Comments