Our tech stack: The tools we’ll be using to power Karbon in 2021

Let’s forget how ridiculous 2020 has been for a little while and reflect on how things have changed for the better.

It’s a few months late, but every year I share an update on the systems and operations we implement at Karbon. Essentially, this is how we try to maximize revenue per employee.

We run an unusually (according to Californian standards anyway) capital-efficient business, and do our best to ensure the machine completes as much of our work about work as possible. This strategy keeps our human resources focused on delivering a delightful customer experience.

Quite a few things have evolved in our business operations over the last year or so. Some due to vendor increase in pricing, others due to our ever-increasing scale, and some because our business is maturing.

Here is what our tech stack looks like as we head into 2021


Salesforce is the powerhouse behind all our customer interactions. Our system of record, if you like. 

We integrate all our systems, including the Karbon platform, into Salesforce. Pretty much everything about a customer is stored here. 

I think the key to Salesforce is keeping people out of it as much as possible—the data being fed to Salesforce is typically from our other systems. This, in theory, should keep the accuracy up and the risk of duplication and manual effort low. 

Luckily our Salesforce data is relatively clean and our automation efforts have been worthwhile in this area.


We dumped Marketo last year for Pardot and haven’t looked back. 

The integration with Salesforce and the cost-savings were the main reasons to make the switch, but none of these enterprise marketing platforms are really that great. 

Autopilot is a great Australian success story, but our integration and functionality requirements don’t really allow us to migrate again in the short-term.


Zuora is the backbone of the operations in our business. All our invoicing, payments, accounts, and subscriptions are managed in Zuora. 

When we first started out, the Chargifys and Recurlys of the world were not up to where they are today. For better or worse, we made a deliberate decision to take our first and very last dollar through the Zuora platform. 

I believe this is the right decision, although operating such an integrated and enterprise style product with little or no resource is a difficult task. 

While we haven’t customized Zuora all that much, it is heavily integrated into our application via our hand-rolled Back Office Hub. 

Zuora has also allowed us to manage our revenue recognition from day 1, ensuring our accounts are accurate and able to be closed within 5-10 business days every month. A topic for another day is the ever-reducing relevance of the GL in businesses where specialized vertical software is becoming more prolific.


We’ve migrated our warehouses to Google’s BigQuery product which, along with Snowflake, are the most reasonably priced offerings available in the market. 

Combined with Stitch, which sold to Talend last year, we populate our warehouse (mostly) hourly with data from Salesforce, Pardot, Zuora, our custom-built Back Office Hub, Facebook and Google Ads data, Pendo, all application data (via Segment), Vitally for our NPS data, and our soon-to-be-released Community, Insided. We also place our monthly consolidated financials in the warehouse.


Based on the data in the warehouse, we’ve built out dozens of reports in Mode that not only surface our SaaS vanity metrics (MRR, Net Retention, NPS, Magic Number, CAC, etc), but this well-coordinated dataset allows us to dig much deeper into the usage behavior and product journey that trialists and customers embark on. 

We now know the impact of various interactions we conduct along the journey and can fine-tune our delivery offerings to maximize the benefit to the prospect, and therefore increase conversion and customer satisfaction.

Something that sets the Karbon team apart from most other software teams is our deep understanding of the accounting segment. We’ll be using this data more and more as it continues to expand, to ensure that we're delivering the highest value we possibly can to our base.

Sales and go-to-market tools

Go-to-market technology has evolved rapidly over the last few years, but sales strategy has barely changed over the last 50 years. Technology merely enables us to (hopefully) serve more customers with less resources. 

We've tried many tactics to enhance our velocity and capacity, but we continually conclude that our prospects would like to be guided through the purchasing process. To enable this, we make as many appropriate resources available to them as economically possible.

Therefore, while we add technology around the edges, our sales and go-to-market tools haven't changed very much over the years. 

We use:

  • Outreach for our sequences, sales engagement, and automated emailing

  • Bombora to gather intent data

  • Handwrytten for highly personalized (post-COVID) old school letters

  • Zencraft to manage the shipping and delivery via UPS

  • WeConnect to deliver LinkedIn connections

  • Hunter to discover email addresses in targeted accounts

  • Calendly and Clearbit also play significant roles in our GTM efforts


Customer Success technology has equally evolved and there are many options for teams to help manage the health and engagement of customers and users.

Gainsight is probably the leading Customer Success platform on the market, but to keep things relatively simple, we chose Vitally due to its integration capacity into our existing systems. Also, our stage of life does not require large, enterprise, customer success software.


We implemented Intercom a few years ago and it's served us well, but it can be frustrating at times. My impression is that they've been given the scare of their lives from Drift and they've had to move fast to try and evolve their product as well as their GTM strategies. 

Intercom is still relatively strong in the support area, but its limited functionality for sales and integrations is disappointing for such a large, well-funded organization.

Influx & Rainforest

While we’re talking about support, our in-house personnel are supplemented with an elastic service provided by Influx, which is based in Australia. They have agents in the three major timezones and we make sure everyone on the Influx Karbon team is certified and trained in Karbon. 

Being relatively small still, we are believers in elastic services such as this to supplement our own resources. We also incorporate this model in our testing of the platform by utilizing Rainforest.


We achieved SOC II Type 1 certification earlier this year and as we developed our processes for compliance, we removed and added some internal systems.

We still utilize Okta for our identity management. More and more vendors are supporting SSO / SAML for login and provisioning, and this makes the life of IT ops people somewhat simpler.


Internal content is now written and stored in Quip, for no other reason other than we try to keep our numbers of new vendors to a minimum. 

Salesforce purchased Quip in 2016 for a reported $750m. The product itself is fine, but it feels like anyone who was really involved has gone to the beach for the last few years. 

Arguably newer platforms such as Notion, Coda, Joplin, Guru, Slite, and Roam might do the job better, but it’s fine for now.

Contentful & Netlify

We’ve migrated our website to the Contentful content management system which is distributed utilizing the Netlify platform. 

We find changes are easy and quick to make and deploy, versioning is effective, and I’m hoping to utilize Contentful’s multi-language features as we grow to international markets.

Internal collaboration with Zoom, Slack and Karbon

Like everyone else, we use Zoom for meetings and Slack for internal collaboration. 

I’ve written about this before but I still find asynchronous decision-making in multi-timezone, multi-region organizations sometimes has a negative impact. 

It’s difficult to portray tone in Slack, whereas longer-form synchronous writing is usually more thoughtful of its intended audience. Confusion around intent can impede sensible decision-making.

Therefore we use our own product, Karbon, heavily for most of our ongoing work-related collaboration. Of course, I’m biased—but we’ve come to rely on Karbon, and it has genuinely made our company more efficient in countless ways. 

I recently shared some of the ways we use Karbon internally. 

Speaking of which…

Microsoft Azure & Base2

Our platform predominantly runs on Azure, but we now have the capacity to deploy data centers relatively effectively with little human intervention. Not only in Azure, but in AWS as well. 

Our environments are deployed entirely via code and destroyed when a new release is conducted. There are a number of benefits to this strategy—the main one is that scheduled release outages can be all but eliminated. 

Our vendor, Base2 has been instrumental in leading this fundamental architectural change and while there are still many more things we can do, we’re more nimble and organized in our DevOps lifecycle than ever before.


Everything that users do in the application and website is able to be measured with events that are delivered to Segment via code or API.

Sources, as they are known, then get distributed to destinations. We’ve reduced our destinations over time to consolidate our lexicon, but Intercom and Vitally are applications that consume our events system and we now operate a Google BigQuery warehouse that houses every event in the platform.

To improve our data governance, we’ve moved our spreadsheet to a tracking plan within Segment’s Protocols functionality, and we operate extensive computed traits inside Personas

Being able to assign traits to users and accounts via these automations inside the database at the time the identify or group call is triggered, rather than managing those attributes (traits) inside code, is a significant gain. 

This creates clear separation between code and data, and is a more reliable method of user and account updates.

Sadly, Segment just sold to Twilio, which is amazing for Peter Reinhardt, his co-founders and their investors. Hopefully, they leave the product alone for some time to come. Their purchase of SendGrid is a good omen. Now we’re Twilio customers without ever purchasing a Twilio product (yet)!

What’s missing

One significant aspect of our stack that is missing is a product metrics solution.

While we’ve tried with MixPanel before and failed, it wasn’t really their fault or the fault of the product. 

The main issue is the reliability and rigidity (or lack thereof) of our events system. 

In order to extract the correct information and be able to ask reasonable questions and receive reliable answers, the data entering the analytics platform must be timely and reliable. 

For example, payment events are a critical part of the life cycle of a customer. If the successful payment is not registered against the account, then it’s impossible to understand all the events that users conducted prior to the successful transition from prospect to customer. 

We’ve taken our time to get this aspect of our events system correct and in Q1 we’ll be looking at product analytics software such as Indicative, Mixpanel, Amplitude and Pendo.

Algolia & Elastic Search

We’ve been utilizing Algolia since we first developed Karbon’s initial search functionality, and while it has been a significant part of our platform, our use case has diverged from their ideal customer, so we’re now conducting a project to rebuild our search functionality utilizing Elastic Search. 

Essentially, our data is vast because it includes emails, documents, contacts, notes, comments, etc., but our users are (relatively) constrained. So when you search through your emails in Karbon, it’s not as though I’m also searching that data (you’d hope not, right?) or anyone else’s for that matter. 

Algolia’s best use case is a relatively smaller amount of data, like product catalogs, or transaction data with many thousands or millions of users, like in Stripe or Shopify respectively. Their infrastructure at the price is no longer suitable, so we’ll manage that change and improve our functionality in the process.

In summary, our stack is in a pretty good place this year as we mature into a $10m business and beyond. 

Items will move on and off the list as our requirements change, and those with different expertise will join the company and influence our toolset and optimize our GTM. 

For now, the operational platform is meeting the needs of the strategy. But who knows what next year’s version of this article will look like!