2019 Tech Stack for Bootstrappers

For a long time, Amy and I have resisted publishing tech and tool reviews or even sharing our “preferred” tech stack for running our business.

Our #1 priority is our readers and our students, and for the most part, they don’t care what tools we use so long as we’re helping them get where they want to go.

However, for the last 12 months or so, I’ve spent a TON of time on the tools-side of our business. And for the first time, I feel like I have some specific and concrete lessons learned, ranging from:

which tools we use, and how we chose them

the most valuable features of those tools, and how we use them

the most frustrating problems we have with our toolchain of choice

As you read, you’ll quickly notice that these review aren’t sugar coated, most including a few items I love and a few items things that drive me batty.

Some of our tools downright suck and have even cost us customers! 😡

In all of these cases, it’s a great example of how often we have succeeded in spite of our tools.

Cuz when you operate a business, you’ve gotta get used to operating in imperfect conditions. Good tools can improve your and your customers’ experience, but perfect tools - if such a thing even exists - aren’t going to be the deciding factor between your success or your failure.

Our business runs on about a dozen tools. Most are paid, but several are free (or have free options). Total monthly costs vary, but our software related expenses are pretty consistently under $1000, and always under $1500/month.

Here they are!

_Note: in just three of these products we have included a clearly indicated affiliate link. We LOVE these products, and recommend using them regardless of the commission we might earn if you sign up using our link. But hey, the kickback is nice too, so thanks in advance!

Website Generator - Nanoc

With that change came some “new” technology to replace the Wordpress-powered site that we’d used to generate millions of dollars of revenue over the previous 8-9 years.

We chose Nanoc because it was built in Ruby and would be easy for Thomas to help us customize and improve (thank you, Thomas!). Our new posts are easily composed in Markdown, and publish/track changes with git.

👍 Fast pageload, easy drafting

Serving pure static HTML means our website is fast, secure, and relatively unbreakable. This is probably the biggest benefit of going this direction.

I really like most things about this workflow, and especially like being able to work locally and without distractions.

👎 Adding images is clumsy, Compile times can be slooooowwwww.

I only have two complaints about Nanoc: compile speed, and adding an image to an article.

Previewing changes to formatting or text requires recompiling the site, and we learned that Nanoc loads ALL of the content files to check them for changes. With our sizable back catalog of content, this has gotten slow.

Adding a new image is a multi-step process of copying that image into the /content/assets/images/ directory (which means I have to find it, or have it handy) and then manually typing out one of a few different image tags.

The compile speed issues are not show-stoppers (and can possibly still be optimized), just increasingly annoying when I’m making tiny tweaks and want to quickly see the change in a browser. It’d be amazing if Nanoc had a way to specify a single file to compile and skipped loading/scanning the rest of the repository.

Static Site Hosting - Netlify

We chose Netlify when we relaunched our Nanoc-powered site in 2015. It has lots of nice bells and whistles like using a single text file to define all of the redirects from our old URLs. They also support a simple method of password protecting pages or directories, handy for sharing exclusive content.

👍 Fast and easy

Static sites are fast, and Netlify delivers on that front as well.

Early on, their technical support was notably good, and we were very happy customers. They even helped me debug compile errors a couple of times - totally above-and-beyond type stuff.

👎 Crappy customer support experiences

Sadly, Netlify lost points with us after a few nasty run-ins with their support & CTO and, when they raised a giant pile of VC money in late 2018, things have only seemed to get worse. 🙄

Thankfully, one of the nice things about running our site with static HTML is that the host matters a lot less than with other platforms, so I can see us finding a new host in 2019.

Email Marketing & Automation - Convertkit

I am working on a much larger, comprehensive write-up about how we evaluated the options, why we were motivated to change providers at all, specifics about how I planned and executed the migration, and the strengths/weaknesses that I’ve found in ConvertKit.

The short version is this: I grew our business by 150% YoY in 2018 using advanced email marketing automation, but the platform we were running on (Drip) had become a raging dumpster fire.

Our biggest priority with switching to ConvertKit was our delivery and open/click rates - it doesn’t matter how powerful the automation tools are if the emails don’t get to the inbox!

Here’s how things look since the switch:

👍 Email delivery is up, and ConvertKit seems to have found the right balance of power and simplicity

At the time of writing, we have less than a month with ConvertKit as our primary sending infrastructure but so far the results look good. Open and click rates have increased back to our previous baselines (in some cases, a difference of 10% or more).

I also really like using their form embeds - they’re very easy to customize AND the built-in statistics are something we’ve never really had. Finally, we know what our opt-in conversion rates are and where to focus our efforts to improve!

ConvertKit’s support and migration teams are great. The platform is simple but powerful once you understand some of it’s “philosophy” which I was able to do within a couple of weeks of active use.

👎 Stats seem like they are always out of sync.

Right now my #1 complaint about ConvertKit isn’t a lack of power (though it did take me a couple of weeks to unlearn my expectations from Drip and get used to how CK handles things). My REAL complaint is how often their stats are inaccurate.

This might seem like a small thing, but I regularly do something (e.g. import a CSV of subscribers into a new tag, or add a list of subscribers to a new sequence) and for HOURS ConvertKit tells me that the number is still zero. The problem is that at first glance, I’m not sure if the import or action was done correctly, or if I made a mistake, or if there was an error. I second guess myself often (even though nothing bad has happened yet).

ConvertKit’s support assures me that this is “normal” because they batch these updates, which doesn’t make it okay. The simple fix isn’t even making the batches run faster, though that would be nice. The best solution would be to tell me the last time a stat was updated, so I can quickly see “oh, the stat I’m seeing is just outdated,” instead of wondering if it’s outdated or if I made a mistake.

But really, that’s my biggest complaint.

If you’ve made the leap into advanced email marketing automation, or are considering it, I think that ConvertKit is the best option on the market today.

Disclosure: Yes, we are friends with ConverKit founder Nathan Barry. Amy even played a role in coaching Nathan in the direction that would eventually become ConvertKit. Personally knowing Nathan (and a number of his team members) did play a role in the decision, but it’s not a factor in why I’m giving it a solid review.

What DOES matter is how Nathan leads his company with integrity and transparency as priorities.

Customer Support - Helpscout

We’ve been using Helpscout as our shared helpdesk inbox thingie since the summer of 2015. It’s fine.

I don’t know anybody who LOVES their helpdesk tool, to be honest. We don’t really use most of the “advanced” features or integrations.

For us, it’s a shared inbox with the ability to view the shared record of customer conversations.

👍 Custom “Meta”

There’s a small, simple feature that lets you inject HTML into the sidebar to show outside information about the customer you’re communicating with - this is super valuable, even if it requires some custom coding.

The simplest version is something I use often - it’s simply a quick-link to search ConvertKit for a subscriber that matches the email of the person attached to the support thread.

👎 Search sucks

My biggest complaint about Helpscout is that their Search is super flaky. I can almost never find the thing I’m looking for with their search, even if I know the terms/phrases exist.

Email - G Suite

Behind the scenes of Helpscout, we use Google Apps or “G Suite” as they call it these days.

👍 Just works. Best inbox search.

The only time we log in is when I’m trying to find an email that Helpscout’s search won’t turn up.

👎 Google

If you’re (rightfully) worried about the scale and breadth of the Google surveillance machine, you might want to opt for a more privacy-oriented email host. I could see us switching away in the future, but it’s not a huge priority.

Digital “Storefront” - Podia

We (unintentionally) made it extraordinarily difficult to find the things we have for sale unless we are actively promoting them to our email list.

You might find that one of many random links to various different sales platforms have been scattered across our site and emails. Webinar replays were able to be purchased directly from Crowdcast, which was a pretty lousy customer experience.

JFS and consulting packages were purchased through an old DPD account, which worked but had one of the clumsiest checkout workflows ever, so I’m sure we simply lost people to cart abandonment. We used Samcart for our Holiday Bundle sales (their one page checkout template is AMAZING for tiered bundles, but everything else is pretty bad). We even had Gumroad in the mix when we first launched JFS in 2015, and have a sale or two come through there every month.

LOL. What a beautiful mess. But somehow…still profitable!

Flash forward to 2018. I’d been eying up a new-ish platform called Podia for a while. I even did a personal demo with the founder, Spencer Fry, shortly after a relaunch and rebrand of the platform.

I enjoyed Spencer’s outlook for the product, and the checkout experience was very elegant especially in comparison to our janky-ass DPD cart. But the feature set was still pretty limited at the time, so I put Podia in the “promising, keep an eye on this for the future” category.

I came back to Podia in October of 2018 and was impressed with the continued progress. I spent an afternoon setting up our JFS products, and a week later, decided to move ALL of our smaller digital products under one Podia roof.

👍 A unified “store” experience for our customers

One of my favorite parts about switching to Podia is how easy it was to go from “products scattered all over the damn internet” to having one place to find everything.

Another thing I love is offering our customers a single login where they can access EVERYTHING they have ever bought from us.

Note: this “unified login” is in place for new customers going forward, and I’m planning to import our entire customer history in Q1. When this happens, we’ll be able to send an link to every past customer to create a login and access everything regardless of where and when they bought it. I am very excited!

👎 No real stats

Right now my #1 complaint about Podia is the lack of a way to “snapshot” my sales data. There is a very basic way to see total sales on a per-product basis, but you can’t scope that to a specific period of time.

Basically my only option is to export our sales data into a CSV and muck around in spreadsheet filters.

On the other hand, NO reports also means that our reports are never showing inaccurate numbers. 😂

👎 Weak Courseware

My other major complaint is that their courseware is… very limited, and just not robust enough to power our flagship course 30x500. Moving 30x500 is going to be an undertaking, so when it happens I really would only like to do it once if I can.

Podia’s courseware might be good enough for a beginner, but it’s basically just static pages organized by a table of contents.

With that said, I have a lot of confidence in Spencer and his team upgrading their courseware to support things like assessments and real progress tracking/student analytics. I’ll be patient!

Courseware - Teachable

The courseware industry is notoriously full of bad, ugly, difficult/confusing software. We’ve tried most of the platforms out there, and keep an eye on new/emerging options as well as ongoing developments of the existing players.

When we set out to build 30x500 as a self-guided course in 2015, we narrowed it down to just a few real contenders.

At the time, Teachable was still fairly young (and still called Fedora), but was the only option we could find that didn’t look like it was designed in 2004.

Since that launch, we’ve had more than 700 students enroll in 30x500 and processed around $1.4M in sales on the platform.

👍 Nice looking student experience

I think the Teachable student experience is generally pretty good (especially compared to most of the other options). It has a built-in progress tracker, and a decent mobile experience.

If you’re comfortable in HTML/CSS and code, you can customize it quite a bit.

👎 Everything else

Unfortunately, I don’t have a lot of other nice things to say about Teachable.

We had technical issues that directly impact people’s ability to purchase our course

The purchase workflow is very clumsy, and often confuses our students

The course analytics - which had us very excited at the start - turned out to be useless in terms of understanding where our students are succeeding or struggling.

The sales analytics are not useful at all (especially once you add payment plans into the mix). There’s so much useful business intelligence that COULD be shown, but instead I get unfiltered gross sales. Show me per-product sales! Show me student progress! Show me churned payments that need recovering!

Speaking of churned payment plans: there is no way to restart a payment plan that failed due to credit card failures. The only option is to create a separate “product” that contains the number of payments left, and ask the student to re-enroll. Thankfully our payment plan churn rate is extremely low, but even then I’m frustrated every time I have to jump through these hoops.

Teachable’s support routinely deflects our student’s problems back to us, even when the problem is with Teachable’s software. Unless I copy the CEO in on my support emails, it’s common for problems to go unresolved or deflected.

These are just some of the most egregious complaints. The list goes on and on.

To his credit, Ankur (the CEO) has always responded when I’ve asked him directly for help, but the problem is that I shouldn’t need to personally email the CEO to get decent customer support.

Webinar Hosting - Crowdcast

The word “webinar” still makes me gag, but I’d by lying if I said we didn’t enjoy doing them!

That said, one of the most common experiences with webinars is unreliable audio and video. Technical issues are stressful for the presenter, and frustrating for attendees. Almost every
‘new skool’ webinar I’ve attended in the last 2-3 years has started with the “can you hear me?” dance, followed by the hope that the recording will work.

👍 Most reliable audio and video

Thankfully, this is where Crowdcast shines.

The performance is most reliable in Google Chrome (for presenters AND attendees), which isn’t great, but at least we can send out an email before hand that tells people, “If you don’t use Chrome, you may experience technical difficulties.

Crowdcast’s live broadcast “just works” like you’d want it to, and the instantly-available recording afterwards is a huge win.

👎 Confusing UI

Thankfully it does the ONE THING it needs to do well, because the rest of the app is confusing as hell.

Everything from event setup, to hiding important navigation/features at the bottom of the screen for viewers, causes some kind of confusion. The UI is too busy trying to be clever.

👎 Don’t talk for more than 2 hours

There is a technical limitation in the otherwise rock-solid streaming system that recordings are limited to 2 hours.

That, in itself, isn’t really a big problem. The problem is that as you approach the 2 hour mark the application provides a warning about this limitation, but it DOES NOT SAY that the broadcast is going to end at 2 hours.

It’s an avoidable problem if you’re running a multi-hour workshop (as we tend to do). The fix is to break the event into sessions, a native feature that Crowdcast handles pretty well, with just a few annoyances.

But we’ve been bitten by this “limitation” more than once, and it’s not a good look.

Podcast Hosting - Simplecast

Simplecast was an early mover in the “new generation” of podcast hosting platforms, and when we started using it I found it to be the most user-friendly option on the market.

👍 Easy to understand, straightforward stats at a glance

If you can publish a blog post, you can publish a podcast with Simplecast. It’s still stupidly easy.

I also like how Simplecast shows the listener statistics. Due to the nature of podcasts, stats still are limited, but at least Simplecast makes it easy to understand them.

👎 Simplecast 2.0 is coming

For 18 months or so, the Simplecast team has been warning of a complete overhaul of the app. Tons of new, groundbreaking features. A bold, new design.

As of a few weeks ago, I finally got a demo of the new platform. I’m…not as excited about it as the Simplecast team is. I appreciate all of the work that’s gone into it, and maybe my opinion will change once I’ve had a chance to be hands on. But for now, I’m eying up alternatives that are adding high-value features (like built-in transcription services) rather than a new coat of paint on old statistics.

Automation - Zapier

I freaking love Zapier. I actually don’t know how I lived (or ran businesses) before Zapier. It’s the best.

As you’ve noticed, we use a number of different tools, and our business depends on those tools being able to reliably talk to each other.

In the past, we would have had two options:

Choose a single monolithic tool that claims to do everything under the sun (but almost certainly sucks at everything it does), OR

Write and maintain custom code that connects our pantheon of tools together with their APIs…assuming they have APIs. And those APIs are well documented. And that these integrations are logged completely and comprehensively, in case of edge cases that break things.

Both of these options are awful, and both of these options are completely obliterated from existence thanks to Zapier.

Maybe I should do a more in-depth screencast of how we wire all of these tools together with Zapier? @me on twitter (@alexhillman) or email [email protected] if that’s something you’d be interested in!

I can’t think of something that I dislike about Zapier. It rules. 👍👍👍👍👍

A friend pointed out that while he’s also a huge fan of Zapier, he does worry about how much he relies on them. “if Zapier goes away, or gets bought, I’m fucked.” This is a good point!

The good news is (and why I don’t worry as much) is because Zapier isn’t the only option on the market. Others like Tray.io (which supports the rest of our tools, including new additions like Convertkit) already exist.

Given how many businesses DO rely on tools like Zapier, including companies that have higher security and compliance requirements than we do, I confidently predict that we will see more and more options being available to choose from (and migrate to, in an emergency).

Video Calls - Zoom

Remember when Google Hangouts came out and it felt amazing to instantly get 2-5 people on a screen and then spend a few mins doing the usual conference call “can you hear me?” dance?

👍 Great video quality, works out of the box, built-in recording

Zoom is like that, but without the dance. Zoom is one of those tools that Just Works 99.9% of the time.

Built-in recording is also a useful bonus for referring to conversations later.

Huge fan. A++++ would zoom again.

👎👍 Native client

I have a firm suspicion that part of why Zoom works so well is because it requires downloading and installing a native client. I don’t actually have a problem with this, but it is notable because “guests” will need to download and install zoom to participate in a call with you.

Zoom makes this process about as fast and painless as possible, and I haven’t really run into an issue with this. I consider it a positive, but I could see it being an undesirable “extra step” in certain situations.

👎 Why we aren’t using Zoom Webinars

“Wait, doesn’t Zoom do webinars too? Why do you use Crowdcast for webinars instead of Zoom?”

The best part about Zoom is their audio and video reliability. But the other best part about Zoom’s meeting feature is that it has an essentially zero-step setup. Click a button and go. Their webinar setup, on the other hand, is a hot mess by comparison. Their built-in registration tools are ugly and difficult to configure, with a zillion confusing settings in a poorly designed web admin (yes, more confusing and more poorly designed than Crowdcast).

I’m also not a fan of forcing our webinar viewers to download and install a client to participate in the event, especially a client that feels like an afterthought compared to their meeting client.

If you’re already using Google Forms or something similar, you’re going to be familiar with the basic workflow that Typeform offers for creating surveys. If anything, I think it’s a little bit easier because they separate the “construction” of the form from its presentation.

But the real power of Typeform is in what they call “logic jumps” that allows you to show and hide different questions or options depending on how the survey taker answered a previous question. It even generates a handy map of how questions link to each other, and the potential paths someone might take.

Here’s what that looks like with our relatively simple form. There are 7 questions total, but each person will only be asked certain questions depending on how they answer the 2nd question.

Another thing I really like is being able to pass variables into hidden fields. This means that since everyone getting this survey is coming from our email list, we don’t need to prompt them for their name and email again since we already have that!

Typeform makes it super easy to pass the subscriber’s email directly into the URL of the form and store their email address along with the answer.

Then, we use Zapier to save those answers back into custom fields in Convertkit, closing the loop!

👎 Pay extra for additional logins

This is really a small thing, more of an annoyance than a complaint (and with an easy enough workaround).

Typeform has a couple of reasonably priced plans, but only allows for additional logins on their top plan (starting at double the price) AND they charge per additional user.

I almost never complain about pricing, but it’s one of those scenarios where additional seats isn’t really creating more value, just charging me more so I can give my teammate their own login credentials.

Student/Customer CRM - Airtable

I’m the kind of person who defaults to Google Docs spreadsheets as a low-fi database that I can quickly filter, sort, tally, and track. The trouble comes when the thing you’re tracking starts getting messy and complicated, or when multiple people are working in that spreadsheet.

Last year I ran into exactly this kind of project while doing a big revamp to our hiring process at Indy Hall. Our spreadsheet of applicant data was quickly becoming a mess, and my team and I were struggling to come up with any way to manage nearly 100 job applicants in a brand new hiring process.

That’s where Airtable saved our butts.

My favorite way to describe Airtable is mixing the relative ease of tossing data into a spreadsheet with the power and flexibility of a true database. But that’s abstract, and still somewhat confusing.

👍 Finally, the CRM we’ve been dying for.

Thanks to Airtable, I FINALLY have a way to wrangle our students’ progress, milestones, and successes.

Using a set of linked tables, I can quickly and easily add notes about updates from students, and specific personal advice that we’ve given them along the way. When we’re racking our brains for examples in workshops talks, we can filter/organize those updates by the types of products our students have shipped.

We can track when and where this data gets used and shared in case studies and articles, and (soon) keep an eye on “freshness” of our updates so we can remember to check in with students we haven’t heard from a while.

And, for the first time, we can start to keep a running tally of our students’ revenue! Student revenue is all self reported, and we always ask for permission to share that data publicly.

But even without personally identifying our students annual revenue figures, or the total lifetime revenue they attribute to what they learned in 30x500.

I’m really just getting started with what’s possible with Airtable and how it fits into the systems we’re building for our business.

👎 The “It Can Be Anything” problem.

In one specific way, Airtable reminds me of Trello. And it’s not that Airtable has a Kanban view for entering/sorting your data.

Trello and Airtable are both tools based around YOUR data and YOUR workflow. That makes them infinite flexible.

That’s why I was able to build the CRM of my dreams, one that actually helped me manage the minutiae and details of relationship over time, rather than focus on where someone was in a pipeline.

The problem is that starting from a blank Airtable Base or Trello board is difficult and daunting. Even the wide world of pre-configured templates available for Airtable didn’t help me because I really didn’t understand how the templates were set up in the first place.

What I discovered is that the trick to learning Airtable, like learning Trello before it, is to watch someone actually use it.

What ended up working for me was spending a few hours on Youtube watching people build different kinds of Airtable demos before I understood how it really worked.

And now that I really understand it, Airtable is one of my favorite tools in our toolchain going into 2019.

Segmentation - RightMessage

RightMessage includes a growing suite of tools that include two main parts:

RightAsk, which helps us understand our audience better.

Campaigns and Funnels that help us show the most appropriate information and offers to our readers and customers.

RightMessage synchronizes with ConvertKit and lets us apply a layer of personalization to our entire site. As one example, once we know that you’re interested in a certain topic, we can introduce “recommended reading” that’s tailored to helping YOU solve the problems in your business that you’re facing right now, instead of having to spelunk through our entire archives (and sometimes cryptic post titles) to find the best resources.

Another example (and one that we are still working to deploy) will be applied to our CTAs across Stacking the Bricks. Currently, we manually choose from one of a half-dozen different free offerings that could be associated with a given post, everything from courses that help with productivity or marketing, to a relatively generic newsletter signup.

But once you’ve signed up for, let’s say, our Year of Hustle Roadmap and email course, it doesn’t make sense to KEEP showing you those opt-ins. RightMessage makes it easy for us to adjust those CTAs sitewide based on what you’ve already signed up for.

We’re really just getting started with RightMessage…I look forward to being able to report back our own success stories!

Whew! For someone who really didn’t want to talk about our tools, I guess I had a few things to say 😅

As our toolkit continues to evolve, our #1 priority in almost every tool is how quickly we can use it to get a result, either for ourselves or our students. We need to be able to learn and start using the tool quickly.

Our 2nd most important factor is Quality Customer Support, but sometimes that changes over time or it’s impossible to tell early on. In some cases, I’m even willing to use an inferior product (within bounds of reason) that has measurably better customer support.

Just remember, there’s a bunch of things that will cause you to fail before your tools do, including spending too much time worrying about your tools. Your tools are likely to change over time, and not always for the better. You’ll probably migrate between competing tools more than once during the lifteime of your business, that’s just part of the process.

But if it helps, pick something from our list. If it’s good enough for us to generate thousands of sales and millions of dollars, it’s good enough for you to do the same!

There's more where that came from

We email every Wednesday with the latest insights from our business, our students, and our research. Drop your email in the box below and we'll send new stuff straight to your inbox!