Patrick McKenzie (patio11) here. You’re getting this email because you asked for my occasional thoughts on making and selling software. Today we’ll be making software to sell software — fun stuff! The goal is giving you some actionable ideas for getting the tooling and process needed to do medium touch sales, in a way which won’t make you feel like you’re hawking used cars.
[Edit: Alright, strictly speaking, you might not have ever gotten an email from me. Somebody might have just given you the link to this page, which is an online archive of an email that I sent to folks who had asked for it. If you'd like to get articles like this in your inbox, totally free, about once a week or two, give me your email address.]
2014 has been a wonderful and occasionally trying year for my family and our business. One of the reasons is that we celebrated the birth of our daughter recently, so I haven’t had quite as many cycles as usual. The other is that a few processes I was using ran up against a brick wall of scaling problems.
For example, I’ve been working on increasing the MRR of Appointment Reminder, a SaaS product historically sold on the low-touch model. While I have done occasional enterprise sales, the beating heart of the business has always been low-touch scalable approaches like email marketing, free trials, automated onboarding, and the like. Folks occasionally ask me “What is your sales process?”
I had no sales process. Occasionally, by grace of God (and Google), potential customers expressed interest in possibly considering our software. These occasional emails hit my inbox, along with several hundred other emails a week. On those occasions where I was feeling very energetic and organized, I successfully sold those clients in an ad-hoc fashion — basically, making up presentations, collateral, arguments, and paperwork as I was going along.
Most frequently, though, I just dropped the ball. For example, here’s a fairly typical email:
I’d write back:
There is a lot wrong with this.
One thing, which I just learned from Predictable Revenue: rather than giving Cindy the quote which she asked for, I should have asked Cindy to hop on a quick call with me to discuss how they were planning to use Appointment Reminder. This would have given me the opportunity to make sure they didn’t have any requirements which would blow up the deal later, like e.g. “It needs to integrate with software which you can’t integrate with” or “Whoops, my understanding of this was that you’d do all the data entry for us. What do you mean you’re a software company? What’s the difference?” (You won't believe how many times I thought I was in late-stage negotiations with someone when the actual state of the deal was "This will never happen.")
The bigger thing, which has bitten me more times than I can count in the last four years, is that I often drop the ball on follow-up.
I tend to keep my to-do list in my head, and allow my inbox to add stuff to it. On a good day, I can remember four priorities about as complicated as “Sell Cindy on using Appointment Reminder.” Given that most of the time a sale of this complexity would take a few weeks to resolve, it would be highly likely that something would come up in the business between the time I sent this email and the time the sale would theoretically close, and I’d cache evict any memory of having been in correspondence with Cindy. Sometimes, Cindy would write back and say “OK, we want to go forward with this. What do we need to do?”, but more frequently Cindy would go silent at this point, I would not take any action (because Cindy, being silent, was not in my inbox pushing additional work at me), and that sale would die.
Why would Cindy go silent? Presumably, she occasionally gets busy just like I occasionally get busy, and while she had the declared intention of buying Appointment Reminder, the daily grind or uncertainty about the next steps made her forget about it prior to bringing that to conclusion. This happens all the time. It isn’t a rejection, but we introverted engineers often misread it as one.
What I should have done is summoned up my founder gumption and, taking a play from Steli Efti, continued pinging Cindy every few days until we got to the next step or she said “Actually, we’ve decided against going with you.” That’s what Cindy actually wants to happen, because nobody emails the CEO of a company called Appointment Reminder and asks for a quote for services just because they’re lonely, but I failed at providing a good customer experience to several dozen Cindys over the years.
Putting In Place A Sales Process
So I decided to create a process for “medium-touch” sales like this, with a goal of
This is strikingly similar to how I went about firing myself from Bingo Card Creator customer support last year.
What A Medium Touch Process Looks Like
Mine is still very much a work in progress, but given that even at our modest scale I had too many leads to give them an adequate amount of attention, I decided to start with just doing a bit more active selling of inbound leads rather than e.g. trying to implement the Predictable Revenue model with outbound prospecting, qualification calls made by dedicated specialists, and lots of high-touch sales. We’re still going to close the overwhelming majority of our accounts with the low-touch self-service signup, and we’re still going to get leads in a totally inbound fashion, we’re just going to dial up the amount of human contact those folks get where that make sense.
My tried-and-true low-touch sales model has someone sign up for a free trial of the Small Business ($79 a month) plan, get ~5 lifecycle emails from us, and either choose to continue as a customer or fall out of our funnel. A few of those lifecycle emails ask them to talk to me, but I don’t do pro-active outreach except via cron job. We’re not replacing this, we’re just improving it by e.g. having a human ready to do onboarding (as a supplement to our automated onboarding infrastructure), keep tabs on where folks are in trials, reach out proactively if they seem stuck, and the like.
On the slightly-bigger-but-still-not-Enterprise-enterprise ends of the scale, we’re just going to take the happiest interaction I’ve ever had when ad-hoc selling an enterprise system, write down what steps happened, and try to re-trace those steps again.
Step 1: Getting Sales Out Of My Inbox
While Appointment Reminder does not exactly drown in leads (on the order of 50 to 100 a month), we’re waaaaay past the point where I could keep track of them in my head, and while I could probably have done something with Trello or a spreadsheet, those aren’t quite as scriptable as I’d like. That will become important for reasons we’ll discuss in a minute. So we needed a CRM.
(Memo to devs: a “lead” is someone on the spectrum between “prospect” and “customer.” Where exactly that line is drawn depends on the company. At Appointment Reminder, you’re a lead if you’ve either requested we contact you about AR or signed up for the free trial. Someone who is merely passively consuming copy on the website is not a lead yet.)
CRMs are funny duck, software-wise. Every software company I’ve ever worked with either scratch-builds their own or creates an integrated FrankenCRM which is tied at the hip to their admin interface. I’m not afraid of duct tape and bubble gum, and that meant I’d be spending relatively little time building it out (relative to tweaking procedures for actually using it), which seems like a good tradeoff for me. Plus, since using an existing CRM gets you 90% of the way there for simple needs, that meant I could do customization/integration stuff in the month before my daughter was due and just stop whenever I needed to stop.
There exist many options for CRM software. I have experience through client work with two of them: Salesforce and Close.io. Of the two, Close.io feels much more my speed as a small business. (It doesn’t hurt that I know the founders and they are great guys.)
I wanted all of our leads and trials to show up automatically in Close.io, and for as much sales-related communication with them as possible to be reflected in it (thinking forward to when someone who is not me will be doing it, the more it is somewhere central rather than in an individual’s inbox, the less likely we are to have a failure to communicate important state regarding our discussions with a lead).
Where do leads come from? In our business, they’re all inbound:
I wanted there to be zero bookkeeping work required to get leads into Close.io, because I don’t even successfully do bookkeeping when it involves actual money rather than probabilistic access to notional future revenues. So I looked at their integration options.
There exists a way to integrate Close.io with one’s email account, but that is a non-starter for me for many reasons (HIPAA compliance being required for more than zero emails sent to me being an easy and obvious disqualifier — granted, if there is HIPAA-sensitive in my inbox someone is already breaking the law, but I don’t want to exacerbate it by forwarding that to another non-compliant system).
Instead, I used Close.io’s API to sync trial information between the AR system and Close.io. I then reconfigured our contact form to forward to an alias that Close.io provides which creates new leads from emails forwarded to it. These two things catch roughly 95% of our leads without any intervention from me. (The exception is when someone emails me directly to ask a question, which meets the business definition of lead but isn’t automatically exposed to code which creates a lead. I then enter them manually.)
The really fun thing with the API is that you can sync a lot of things which go beyond mere contact details. Let me show you a screen shot (if it doesn’t display in your email client, you can see it here).
Sidenote: How long did this take to build? Approximately three half-days where I was non-productive due to the stress of impending fatherhood. Their API does a lot of stuff right. It isn’t quite Twilio or Stripe but it is head and tails above most sales/marketing software (which I am, regrettably, professionally obligated to be familiar with integrating).
Anyhow: now the state of a lead is in Close.io. What does that let us do?
Step Two: Plan And Execute A Process
At many SaaS companies, Sales and Customer Success (pro-active customer support which is designed to actively sell accounts by making sure people have a happy experience early — basically, an enterprisey way to say “concierge on boarding”) are run as separate fiefdoms, but that doesn’t make sense for our scale.
We do have one relevant distinction, though: publicly available plans (the ones on our pricing page) versus custom plans. That includes everything from (at the moment) a single doctor with 100 appointments a month (our publicly available plans don’t include HIPAA compliance, which they need) up to “we’re a state’s parole system — what would it cost to send every felon in the state a reminder to check in with their parole officer twice a month?”
For publicly available plans, we’re just doing bog-standard concierge onboarding and reach out. There’s very little particular cleverness involved at the moment.
Proactive Outreach During The Trial
This is one of those cases where having a proper CRM really shines. You just define a few heuristics that suggest someone is having a not-terribly-successful experience with the trial, make a saved search for trials meeting that heuristic in the CRM, and tell the CS team that when they start work for the day they should look to see if that saved search returns any results and, if so, reach out and help the customer.
Again, this isn’t rocket science.
Notice that this is very similar to a lifecycle email, which would probably be triggered by the same symptom but instead ask them to do the work. That can be done with a cron job and doesn’t require a CRM. The difference here is we’re involving actual humans to help out with the concierge work.
An added benefit: folks speaking to customers about data exports typically couldn’t crack open the code and add a new lifecycle email without assistance, but they can use a CRM to put together a saved search or report without needing it to be coded, and then do delivery of services against clients in that group without needing support from an engineer. For example, if the CS team comes up with the idea one day “Hey, I bet folks are a lot more likely to succeed if they have caller ID enabled”, then they can get a list of everyone who doesn’t have caller ID enabled and start sending emails through the magic of copy and paste. If that works after doing it for a week, great, it can be automated or turned into a more formal process. If not, no worries, experimentation is what we do — simply stop copy/pasting the “Hey, wouldn’t it be great for your customers if they saw your number on their caller ID? Let’s get you started with that.” email.
A Defined Sales Process For Our Enterprise Offerings
I went back over my notes for the last few years, figured out which of our enterprise sales processes seemed to work out with the least stress for me and the least amount of “Why kind of crazy request is that?” from our prospective customers, and just wrote down the steps.
Those steps were, briefly:
We’re open to changing this for particular customers, and it will probably change over time, but just the discipline of committing the happy path to paper means that I shouldn’t be scratching my head anymore about where Happy Teeth Dental is in the pipeline. They’re now at a defined stage: Quote Outstanding, and that makes it clear to me what I have to do this week in regards to them (get in touch and ask if they’re ready to move forward yet), and it makes it really clear that I shouldn’t be mentally scoring them as “We’re almost certain to get a check from them” yet.
In addition to visibility into individual deals, this gives a bit of visibility into the whole pipeline’s aggregate health. I used to have nothing other than an untutored suspicion “How are we doing right now? Umm, not so great? The Happy Teeth deal is stalled and I’m not sure where I am with that municipal department and I have a vague feeling of insufficiency with regards to how many deals I’m working right now.”, but now there will be a clear, visible number of how many deals are actually making forward progress, how many are weeks away from actually closing, etc.
Breaking it into stages allows us to finally start with a bit of specialization of labor, too. I resisted bringing in help for enterprise sales because of shadow objections like “I can’t have someone negotiate contractual terms” or “I’m the only person qualified to make a decision on whether an integration is viable as an engineering matter.” Now that the process is in stages, I’m not a blocker to some of the key ones. My sales rep doesn’t need authority to bind the company to contracts to get a verbal “Yes, we want it.” from her customers.
She’ll get the “Yes” and I’ll get the handoff to execute contracts, which both decreases the amount of work I have to do and also lets me deal from a position of “Hiya, procurement officer: your end user has already promised my people that this is happening, so lets not have silly paperwork issues from either of us inconvenience your user” rather than treating that discussion as a negotiation.
Step Three: Find Someone Else To Execute For You
I’ve always waited too long to ask for help with things — I answered all BCC support email for 8 years (six years too long) and considered myself indispensable for doing AR sales until quite recently. That’s not a business — that’s a job… a job I’d never actively seek out, which I happen to suck at, and which I was actually failing at due to having too many things going on in life to execute consistently.
So I’m firing myself, again. Or, well, putting on my businessman pants and hiring somebody who actually enjoys sales work to execute on our (nascent, weeks-old) sales process. It is certainly a work in progress.
I don’t know to hire sales folks, to be honest. Luckily, I don’t need a team of hundreds of them, I just needed one to get started. I happened to run into a friend of a friend who felt comfortable talking on the phone (she previously ran a business which required lots of that), was reasonably software savvy, and had already had the experience of doing customer success style work for a software company. We were having dinner with our mutual friend one night and, after hearing the one sentence description of what Appointment Reminder does, she immediately said “That would be perfect for my dentist because…” and followed with exactly the two things I would say to sell AR to a dentist.
I offered her a job on the spot.
It took a few months for us to mutually be in the right place for it (infrastructure needed to get built out, childbirth happened, etc), but she’s currently ramping up.
“Ramping up” is a very important thing for you to understand if this is your first rodeo. It takes a while for a sales rep to learn your product, your sales process, and what works and doesn’t work with your customer base. Even very smart people don’t hit peak efficiency for a few months.
Even if you could wave a magic wand and make them peak efficient on day one, they would still be cash-flow negative.
Why? Well, say for the sake of argument that my sales rep (who is very, very part-time) has on-plan total compensation of $2,500.
OK, wait, back up — what does that actually mean?
“On-plan” implies that there is an existence of a defined sales goal, called a quota. Most sales reps are compensated on a commission basis, such that they earn more money if they exceed their quota. If you’re smart as a business owner, the sky is the limit for them.
Anyhow, “on-plan” typically means that someone has not merely scraped by and hit the bare minimum quota to stay employed, but they’ve produced a target you’re happy with.
I’m going to elide the actual details of our commission structure, partially for privacy and partially because it’s literally weeks old and I have no clue whether it is effective yet. I don’t want anyone out there to wholesale copy it if it turns out to be catastrophically bad. Let’s say, hypothetically, that on-plan performance for Appointment Reminder corresponds to adding $1,000 of MRR in a month.
If it costs $2.5k of total compensation (base salary, commission, and all of the assorted taxes/perks/etc) to hit the on-plan performance of adding $1,000 of MRR, then the business loses $2.5k on the sales rep in month 1, $1.5k in month 2, and $0.5k in month three, for a cumulative loss of $4.5k. (I’m ignoring churn to keep the math easy.)
Why do it, then? Because in month 4, the rep is finally cash-flow positive (for $0.5k). The $4.5k loss is repaid in month 6. And then the magic of calculus happens and the business starts to make a lot of money.
This early cash flow crunch is why SaaS companies, despite having very little costs to get going these days, choose to raise outside investment. You hire dozens of sales reps in parallel, wash out the ones who don’t successfully hit quota consistently, buy very nice cars for the ones who do, and reinvest the revenue they bring in into more marketing spend to buy more leads to keep more sales reps busy on their phones. (Many SaaS companies you’re aware of have floors upon floors of sales reps. A company which raises an A round has basically committed itself to hiring dozens to start, scaling up to hundreds on the way to IPO.)
Reasonable people can disagree on whether that model is sustainable as executed (and S-1 filings of SaaS companies trying to IPO are, to many people, hilarious for this reason), but at my scale, I’m less looking for explosive growth and more for continuing to run the business in a way which makes sense for us and our customers. So we’d self-fund the ramp-up period and reinvest profits in a fashion similar to the way we have for years.
Building Things To Make Sales Pros More Effective
I’m a software guy, and when I think improving processes I think “Whee, time to write some code!” (Sometimes to a degree which is detrimental to the business.)
The deep integration between our CRM and our application has been a major win. I discussed that already. What else have I been writing to make sales more effective?
Internal opportunities tooling: Selling to your existing customers is orders of magnitude easier than selling to new customers. We’ve never really strictly enforced the quotas differentiating our tiers from each other, so I had poor visibility into how many people were over quota, but it turns out that it is almost 10% of the user base. I built out capability in our billing system to upgrade a user’s account without forcing them to log in and initiate it themselves. Then I built a screen in our admin dashboard which shows all the accounts that are over quota and links them to their contact details in the CRM.
Now our sales rep can just go dialing for dollars.
(Notice the upsell thrown in as long as they were on the phone? This is one of those things that I have an intellectual appreciation for, as it has to work at scale, but would probably not bring myself to do every time. Folks more constitutionally prepared to be doing sales, luckily, don't tie themselves in knots about just throwing an extra sentence into the conversation.)
This works a lot better than any interaction which forces Miriam to go to a computer, sign in, fire up her browser, go to our website, sign in (using a password that she may not have used in two years, given that Miriam is often not one of the people using the system daily), navigate to the payments screen, and upgrade her account by herself. It’s a huge win-win: Miriam gets to go right back to doing her work, we get to collect the revenue we’re entitled to for providing services, and it costs us virtually no administrative work at the margin.
There are presently three people working on Appointment Reminder at any given time: myself, our sales rep, and my VA, who is helping out with tier one customer support. (Ask me if you’re curious about going into depth on that — I might write an essay about it in the new year.)
I was going to keep us all on the same page via email, but that puts more work into my inbox and results in crippling levels of stress, so instead I took Jason Winder’s advice and set up a Slack instance for the company.
We made a few private groups — basically, a channel representing a function of the company that the boss can force-subscribe a user to — and assigned people as required. If you’ve just got a quick question about how to answer a sales objection like “I’m not sure I see ROI in that”, you can just drop it into the sales chat rather than having to do the higher-friction “Craft a letter to my boss asking him to instruct me how to do my job better.”, and I or the other team members can reply to that at a leisurely pace in the slack periods (Slack periods?) of our workday.
I’ve used similar systems with many client engagements, and they’re great for keeping teams, particularly remote teams, on the same page. Also, having a virtual water cooler makes the work feel less cripplingly isolating.
So what can you build with Slack? Integrations between your other systems and the channels relevant to them. (I cheated and used Zapier rather than figuring out the Slack API.)
For example, when we get a new lead, we historically announced that fact with email and an SMS to the sales manager (that’s one line of Twilio code, BTW). These days, all we have to do is tie “New Lead in Close.io” to “Send a message to the sales channel in Slack.” That lets people get notifications relevant to them through the Slack desktop or mobile apps, and only get them when they should be working.
Sidenote: I’m philosophically against interrupting people outside of core hours unless it is an emergency, and if it is an emergency, the person interrupted should usually be me because responsibility flows uphill.
This also allows low-friction collaboration around those messages, which is a beautiful thing to see when it happens.
In-app messaging: There is an old saw about every application eventually expanding to include a half-hearted implementation of email. We have a really simple system which lets us drop messages directly on the in-app dashboards of our customers, which is useful for less digitally inclined customers who don’t check their emails often but are in the app every day. (You could probably do this with Intercom or what have you, too.)
This is another thing that we can sync directly with the CRM, by the way, though that isn’t actually done at the moment. Hmm, that’s silly. Writes two lines of code. OK, now it is done.
Tracking “presence”: What’s a good time to call up the office manager at a dental practice? Well, to a first approximation, if she’s sitting down at her computer, but not actively doing anything with it, now is probably a good time. We have a really simple heuristic that can tell whether a user is logged into their account but not presently in the middle of a task.
With just a little more work, you can do something similar to pub/sub for your sales reps, letting them subscribe to updates about e.g. Cindy’s presence if they’re actively trying to get in touch with Cindy, and unsubscribe later. They’ll do that for each of the N people they’ve tried unsuccessfully to contact (a fact which, n.b., can get pulled out of the CRM without the sales rep having to do anything, which means this is scriptable up the wazoo).
Since we have messaging in the app, we could drop a quick notification in an unintrusive fashion saying “Hiya Cindy, This is Patrick. (Yep, I’m totally a human.) I’ve been trying to get in touch for a while. Is now a good time for me to call you?” and, if yes, start the call.
My first instinct was to put this on a page in the dashboard, but as long as we’ve got Slack, why not push work at people rather than having them have to remember to pull work from our database?
So How Is It Working?
Way too early to know! I put in place a lot of the technical infrastructure right before my daughter was born, then disappeared for a few months. We’re onboarding our first sales rep as of literally a week or two ago, so between holidays and ramp-up time, it will be months before we know whether things worked out.
I’ll keep you posted. If there is anything you’d like to hear about in more detail, drop me a line.
P.S. Progress update on the conversion optimization course: still working on it! The baby has been keeping my wife and I rather busy, but I’ll let you know when it is ready.