TL;DR – 2020 has been a difficult year for us, but we still did very well and feel very fortunate. Despite the fear and uncertainty of a pandemic and hiring difficulties, we managed to ship a ton of new product features, welcomed three new faces to the company, reorganized our teams, improved customer support, got our organic traffic trending upward again, and had a nice bump in revenue.
An Unwelcome Surprise
A wave of fear and uncertainty swept in on us in March as COVID-19 cases started to appear in the communities where our team members live and lockdowns were imposed. Despite the scariness of the situation, we all felt very fortunate that we’re a remote company and able to continue our work, mostly as usual.
Partners and especially kids being home when they otherwise would be at work or school was challenging, but we were also anxious of what might lay ahead. Would our revenue stay strong? What could we bear before we had to start laying people off?
I crunched some numbers and presented the team with some worse case scenarios that showed how resilient our company is. It would take a massive drop in our revenue before we would have to start letting people go. Taking comfort in the numbers, I now felt like this guy…
Almost 2 million people dead, tens of millions sick, and millions without a job/income and unable to pay bills. Tens of thousands of small businesses have failed and will never return. But we’re fine, most of our customers are fine, and some are even thriving.
The scale of the economic devastation this pandemic has caused is hard to wrap my mind around, and yet looking at the stock market one would think everything is totally fine (but of course the economy is not the stock market). I can’t help but feel that the other shoe is yet to drop. With multiple vaccines now being administered, healthwise 2021 is looking to be a turning point for the better, but I fear it could also be an economic turning point for the worse.
It’s hard to know what to do to help in a situation this complex. We offered relief to any of our customers who were struggling due to the pandemic:
We also doubled our charitable contributions in the hopes that it has an impact.
Although our team and their immediate families have managed to be clear of the virus throughout 2020, I only wish I could say that none of them have had the virus to date. This first week of 2021 a member of our team has tested positive and we’re hoping for a quick and painless recovery.
Let’s all hope that in 2021 we start to see the cases come down as a result of vaccinations.
Company Retreat Cancelled
It would have been our 6th annual company retreat, but alas, it wasn’t meant to be. Something about flying people from different corners of the globe during a pandemic seemed like a bad idea.
We were planning to attend WordCamp Europe in Portugal. We were going to fly into Lisbon, spend a few days exploring there, and then train to Porto for the event. We were so excited.
Several of us also had plans to extend the trip to explore more of Portugal afterward. My wife and I were planning to explore the southern part of the country. Cancelling the convertible rental car and the AirBnBs along the route I had planned was a total bummer. Hopefully we can visit Portugal for a company retreat in the future.
When WordCamp Europe was cancelled in March, we pulled the plug on our retreat as well. As a small consolation, I extended our paid holiday break a bit around Christmas and New Years.
It seems highly unlikely at the moment, but I hope we’re able to safely meet up in 2021.
Hiring Difficulties for SpinupWP
2020 was a very frustrating year for us in growing our team, but we persevered and finished strong. Despite perpetually being in a state of hiring, we finished the year with just two more team members than we started, but with an additional two signed up to join us in January.
I started 2020 with two recruiters helping me with hiring, but it didn’t work out. I plan to try having someone help me again this year, but will probably try a part-time HR person to help with more than just recruiting. I’ve always had better success working with people on an ongoing basis.
All that to say that all of the hiring heavy lifting fell to myself and the team in 2020.
Right from the start we aimed to grow the SpinupWP team. Gilbert and Ash were getting bogged down in daily support, fixing bugs, and updating our infrastructure. We weren’t making as much progress on the vision for SpinupWP as we would have liked.
In March, Gilbert asked to drop to working 4 days per week so that he could work on Lemon Squeezy, a side project he was collaborating on with some very solid partners. Ugh. Normally this wouldn’t be a problem, but as were trying to build out the team, it was bad timing. We seemed to be going backward.
In April, we were thrilled to hire a developer to join the SpinupWP team. Unfortunately he worked for 8 days then quit without notice. Horribly unprofessional. We were shocked that we had misjudged him so badly. It was particularly frustrating because we had waited for him to finish up with his current employer and had to start the whole hiring process again. It really set us back.
It wasn’t until four months later (August) that we were able to hire another developer to join the SpinupWP team. We kept the hiring machine going and signed up a fourth developer to start in November. Things were looking up.
Unfortunately, November would prove to be a tumultuous month. It started out great, with George joining us as the fourth SpinupWP developer, but a couple weeks later, Gilbert gave notice that he was leaving to go full-time on the project he’d been working on part-time since March.
I figured he’d go full-time eventually, but damn, now? Again, not great timing. Ideally we would have George onboard for a couple of months before Gilbert left, but hey, who should expect “ideal” in 2020!
Three days later, the other shoe drops. The developer who had joined us in August (less than three months ago) gives his notice. He has been made an offer he can’t refuse. I don’t blame him, but damn that’s frustrating. 😠
Now, in two weeks it will be December and we’ll be back down to two developers on SpinupWP, one of which has been with us for just a month. Ugh, worse off than when we started the year!
After a quick chat to vent our frustration, Ash and I got back to work on hiring. In just a few weeks we managed to sign two exciting new developers to join us in January. 💥 This may sound like it was rushed, but credit goes to Katelynn and Carl for jumping through our hoops quickly and showing us what they’re capable of. We’re confident that they’re going to make excellent additions to the team and can’t wait for them to start contributing. Ash, George, and I are pumped!
With what I described above, it might sound like I was upset with Gilbert this year, but I wasn’t. The timing was frustrating but that was hardly his fault. He put in five solid years with our company and I’m grateful for the excellent work he did for us over the years and getting to know him. We really do wish him and his partners all the best with their new venture. We had a little going away video chat with Gilbert and although we didn’t achieve our goal of making him cry, we told stories and reminisced about the good times we had. It was a very nice way to cap off his solid five year run with our team.
The pandemic definitely made hiring harder this year. With most companies forced to go fully remote and hire remote workers, we were instantly no longer one of the few fully remote companies hiring. The number of applicants we would get for a job posting has been in decline over the years as more companies (especially bigger ones) have embraced remote and have been hiring remote workers, but this year it really dropped. Last year we would have received nearly 100 applications and now this year it’s just a few dozen.
Hiring and Shuffling our Plugin Teams
For all of 2019 and into 2020, our development teams looked like this:
All teams of two developers, but for the plugin and site teams, each developer wrote code for one product and reviewed code for another. Pete coded alone on WP Migrate DB Pro but reviewed Iain’s code for our sites. Iain coded alone on our sites but reviewed Pete’s code for WP Migrate DB Pro. Similarly, Jonesy coded alone on WP Offload Media but reviewed Matt’s code for WP Offload SES and Matt coded alone on WP Offload SES and reviewed Jonesy’s code for WP Offload Media.
Unfortunately these teams found it very difficult to review and test code for a code base they weren’t actively programming on themselves. For this reason we decided to reshuffle our plugin teams into teams of two developers and have them do development cycles together on different plugins. We also have lofty plans for our plugins for 2021 (more on that below) so we’re going to need extra hands in the code.
Matt rejoined Pete in March, working on WP Migrate DB Pro again. And in September, Jonesy welcomed Erik to the WP Offload Media team. We plan to rotate these teams around to other products as well, doing a cycle or two to add new features to WP Offload SES, and maybe start a new product this year.
Customer Support Levelled Up
Just a few years ago, our developer team was handling all customer emails. Even if you asked for a refund, they would handle that. This improved in 2018 when we welcomed Caillie onboard. She started handling all pre-sales and billing.
At the beginning of 2020, Iain suggested that we experiment again with a dedicated support person using LevelUp Support, an agency that specializes in providing support agents to WordPress product companies. Several years ago we had tried a dedicated support person, but found most of the support requests were too technical for them and there weren’t enough non-technical issues to keep them busy even part-time. I was skeptical, but gave the green light…
In June, an agent from LevelUp, Eli joined us. We were very impressed with her quick ramp up, ability to learn, and excellent responses to customers. Eli now handles all the frontline support across all our products, including SpinupWP. We’ve also just started onboarding another, more technical agent from LevelUp to see if he can help out with more technical questions about our plugins, providing more timely responses to customers, and freeing up our developers even more. Huge props to Iain for coming up with this idea and seeing it through.
This success with LevelUp gave us confidence to try an agency to help us with SpinupWP support as well. For SpinupWP, we would need much more technical folks though. They would need to be able to debug problems with sites and servers.
Late in the year, we brought Arya onboard from Bobcares as an experiment. It’s been a month so far and we’ve been impressed. She’s still drafting responses that we review before sending, but very soon she’ll be replying directly to customers. Once she is settled in, we plan to bring another agent onboard full-time to cover more of the clock. Eventually we hope to offer a 24×7 support option.
Our Team Now
This is what the company looks like today (the muppets are people we are in the process of hiring):
Iain has fully adopted the product manager role for our plugins. I meet with him once per week to get an update and discuss the direction things are headed, but otherwise his hands are on the wheel, helping steer those two teams forward.
Ash has stepped into a Lead Developer role for SpinupWP on a trial basis to start, to see if he likes it. This started late in the year, so it’s still an experiment. If it works out, it will take a good chunk of work off my plate, freeing me up to do other things.
Our Team in the Future
As you can see in the chart above, we’re hiring a developer to work on WP Migrate DB Pro. Once that person is up-to-speed, Pete will move over as a fifth developer on SpinupWP.
I’m managing less than I was at the beginning of 2020, but still too much to be highly effective. I still write almost all of our marketing copy and I’ve been an awful bottleneck the past 18 months. We absolutely must hire a writer this year.
I also spent a massive amount of my time on hiring and HR in 2020. This is not my strength, nor do I enjoy doing it. I’d gladly hand it off to someone, but the problem is that it’s not a full-time job and I haven’t had good luck with part-time contractors in the past. Regardless, I must try to find a part-time HR person in 2021.
Despite the difficulties, I’m really happy with how we ended the year. We added three new faces, signed up two more to join us this month, and it’s clear who we need to hire in the first quarter of 2021. Let’s hope we have good luck finding folks to bring onboard.
WP Offload Media
Jonesy did an awesome job again in 2020 nurturing his baby WP Offload Media, and growing it into a big boy plugin. We shipped two whopping major releases and seven minor releases.
We finally added the ability to serve private media via Amazon CloudFront with a custom domain name, something we had on our list for five years! This release also included complex tools to move media between different paths in the bucket and it included support for Amazon S3’s latest security features.
The next release involved a big upgrade to our WooCommerce integration and a new tool to add metadata for already offloaded files. This was Erik and Jonesy’s first collaborative release and it worked out great!
Next up is better integration with Elementor, Beaver Builder, WP Bakery, and BuddyBoss as well as a complete UI refresh. Lewis has done a fantastic job collaborating with the team to come up with some sweet mockups. 😍 He also did the HTML and CSS to make it easier for the team to implement. Stay tuned for more on this.
An interesting detail about the UI work is that the team has chosen Svelte over React for this project. 😱 I plan to sit down with Jonesy on the Delicious Brain Waves podcast this month to discuss what’s up with that!? Be sure to add the podcast to your player so you don’t miss it.
Later this year, we plan to start working on an easy button for WP Offload Media, allowing customers to start offloading their media in 1-click, no AWS account required. Be sure to subscribe to our email list if you’re interested in hearing more about this.
WP Migrate DB Pro
We shipped 5 minor releases (1.9.9 – 1.9.13) of WP Migrate DB Pro in 2020, all bug fixes, basically defending it from software rot.
Software is a lot like lumber. It's perishable. It rots. It needs regular maintenance otherwise it's broken down by its environment.— Brad Touesnard (@bradt) November 2, 2020
The real exciting stuff for WP Migrate DB Pro happened in our beta channel. We shipped the first 2.0 beta in February with a refreshed UI and shipped seven more releases after that including an all-new Media Files addon that is much better than its predecessor.
Matt and Pete have been doing an awesome job getting 2.0 to the finish line. As of the November 2.0b8 release, all of the addons are now supported, so give it a go. We’re aiming to launch 2.0 out of beta within the next couple of months. Get on the WP Migrate DB Pro email list for updates on this.
Once 2.0 has launched, among other features, we’ll be working on a dry-run feature for WP Migrate DB Pro, allowing you to preview find & replace operations before executing them. We also plan to dabble in some cloud features this year, starting with the ability to save migration profiles to your account and have them available anywhere you activate your WP Migrate DB Pro license.
Despite the hiring difficulties discussed above, Ash and Gilbert managed to make some excellent progress on the app in 2020 with some very welcome help from George at the end of the year.
You can now also see available updates for WordPress core, plugins, and themes in the dashboard and run the updates remotely (hat tip to Lewis for the awesome work on the UI here). You can correct file permissions in 1-click and view server disk usage in the dashboard.
In addition to all those new features, we kept up with server software. Early in the year we added support for PHP 7.4 and later we added support for Ubuntu 20.04 LTS. We quietly removed MySQL 5.7 and PHP 7.2 options and notified customers of the need to upgrade. We’re very close to adding PHP 8 as well.
We also experimented with pricing, changing from limiting plans by number of servers to number of sites. Our conversion rate dropped as a result, so we reverted back to per-server pricing. I’m really excited to launch our next big pricing experiment in the next couple of months…
Check out this beauty that @pixels4lyf just whipped up. Looking forward to getting this implemented when we get back from holidays. Allowing people to try @SpinupWP before they put a credit card down is going to result in more customers methinks. pic.twitter.com/Jt2W46Yo5A— Brad Touesnard (@bradt) December 9, 2020
Although we haven’t seen a hockey stick inflection point yet, we have seen strong, steady growth each month, doubling our MRR over the last 12 months. SpinupWP is now the control panel for 3,500 servers and 19,000 sites! 🎉 Those are crazy numbers! Although we’re very pleased with where we’re at, we’re hoping the combination of a free trial, more features, and our efforts with ads and content will increase our growth rate over the next 12 months.
We have some big plans for improving SpinupWP in 2021. First, we’ll make it much easier and safer to customize Nginx configs and we’ll allow you to subscribe/unsubscribe to notifications for specific servers and sites.
Once that’s shipped, we’ll be tackling the following over the next 12 months (in no particular order):
- Dark mode
- REST API
- Custom SSL certificates
- External databases
- More backup storage providers
- UI for server software updates
- New domains UI with advanced redirects
And here are a few things we might also get to:
- CPU/disk/memory reporting and alerts
- CloudFlare DNS integration
- Let’s Encrypt wildcard certificates
- Log viewer
- Weekly/monthly/yearly backup retention periods
Join the SpinupWP email list for updates.
WP Offload SES
We also shipped five minor releases. We added support for new Amazon SES regions, compatibility with the latest releases of WordPress and PHP, and plenty of bug fixes. Matt did an awesome job keeping on top of these issues and deciding when a release was needed.
We saw the first renewals kick in at the beginning of the year and really compound our monthly revenue. 2020 revenue ended up over double the previous year. 🎉
We plan to add new features to the plugin this year, but are still deciding between two paths. We might decide to simply add more providers and rename the product to WP Offload Email. We could add support for Mailgun, Postmark, Sendgrid, etc.
Another option is adding lightweight newsletter functionality. That is, the ability to send a basic email to a list. Of course, we would need to add the ability to manage lists and allow subscribers to subscribe/unsubscribe too. This is the path that excites me the most at the moment as it is something we would use ourselves.
Get on the WP Offload SES email list to find out what path we end up choosing.
What would you like to see us do with WP Offload SES? Let me know in the comments below.
Iain and Ram did a great job this past year keeping our sites up-to-date, cleaning up crufty backend code, as well as adding new functionality. And on the frontend, Lewis has cranked out a ton of beautiful improvements to the sites with help from Caillie on content.
For the SpinupWP site, the install wordpress on Ubuntu guide was completely revamped and our blog archive was reorganized into a much nicer page. Lewis also added a new section to the home page and dedicated provider pages to emphasize that SpinupWP works with any provider.
For this site, Lewis revamped My Account with a new UI, launched stellar What’s New? pages for each product, redesigned our documentation, improved the upgrade pages, added a new press page, and made our content a pleasure to browse.
Of course, there were also hundreds of styling tweaks, bug fixes, etc, but needless to say, Iain, Ram, Lewis, and Caillie are the reasons why the sites are so tight today.
A year ago, in my review, the biggest marketing news was that our organic traffic for this site had been in free fall all of 2019. Fortunately our efforts this past year seem to have paid off…
As you can see, we had a tiny recovery in the first half of the year and it remained stable most of the rest of the year. Hopefully as we continue to execute on purging, merging, and updating old content as well as producing new content, we’ll see an upward trend again.
SpinupWP organic traffic is up 50% since this time last year, which is great, but the volume is so much smaller than this site. I’m hoping to at least double the traffic to that site in 2021. We finally got serious about link building later in the year, so hopefully that starts to pay off.
Callie has been doing a terrific job ramping up on SEO best practices, collaborating with me on a plan, and executing. She has been sharply managing our content calendar, making sure we have something new to email about every week, and pushing forward on our link building plans.
We also experimented with different forms of content this year besides articles. Lewis did some stellar “design for developers” tweets that got a lot of attention…
We ended 2020 with 62% more new Twitter followers than the year before.
We also launched Delicious Brain Waves, a new podcast we plan to use to cover topics that interest us and hope that translates to interesting topics for our audience. So far we’ve just had two episodes, one discussing React and the other, pricing models.
We plan to discuss Svelte next. I’ve also been considering having guests on the podcast from outside the company, people who are working on things I’d like to discuss.
We also added video to every chapter of the install wordpress on Ubuntu guide.
Time for the annual update of our revenue chart with no numbers 😉…
We experienced healthy growth again this year with total revenue up 19% over last year. This is a drop from last year’s growth rate, but I’m still very happy with it.
I’m hoping to see a higher growth rate in 2021 as we execute on the plans discussed above.
I’d like to thank my whole team, Jonesy, Iain, Ash, Matt, Pete, Caillie, Lewis, Ram, Eli, Erik, and George for all the good things they’ve done in the past year that I haven’t thanked them for. From updates to our wiki, to reminders in Slack, to all the lines of code that I never saw.
I especially want to thank those who brought things to my attention that were difficult to address. I’m grateful to have a team that isn’t afraid to speak up when something is bothering them so that we can constantly be improving things.
I’d also like to thank my mom for keeping our books and running payroll. I’m grateful to have someone I trust unconditionally with access to my bank account.
And thanks again to my fellow entrepreneurs for helping me work through the typical struggles of a solo founder and those unique to me.
Finally, thanks to you, our customers. Without you none of this would be possible. I feel very fortunate that you love the products we build, appreciate the quality, and are willing to reward us with your hard-earned dollars. We’re aiming to greatly improve our current products you know and love, as well as build new ones that we hope you’ll love too.
I’m incredibly happy with our team and the work we did together this past year. I feel as though 2020 has been a solid year for the business and that we have a firm footing to take our next step up as a company in 2021.
What would you like to see from us in 2021? Let us know in the comments below.