Since some point last October, I’ve been on a mission to connect all of the different pieces of software that we use at SLSC so that we have “one source of truth” for our client numbers.

When we first started, I was very diligent about tracking and following up with all of our leads and new clients as they were getting started. I would also create and pull reports on a pretty consistent basis to see how the business was tracking.

As complexity was introduced into the system through different pieces of software (like e-mail automation through InfusionSoft, scheduling through Acuity Scheduling, etc.), it became more and more difficult to actually track what was going on.

At some point, the friction to actually pulling all of our numbers became so great that we stopped doing it with any consistency.

Around the same time, we had reached a stage of growth where just about everything was constantly breaking – from front desk employees not doing their job duties, to lack of follow-up from coaches doing consultations with prospective new members, to disastrous logistics management and coaching during classes.

While I would certainly advise any business to know their numbers, it was very obvious to me where our business was broken and what we needed to prioritize fixing. Even if we did have detailed numbers of all of the stages of our funnel, I don’t know that we would have prioritized things too much differently based upon that.

However, as we started to right the ship and fix our broken processes, I started to realize how little our staff understood about the actual underlying mathematics of how a CrossFit gym operates.

If you see a gym with pretty full classes and understand that each member is paying somewhere in the ballpark of $200/month, it can seem like the gym is killing it.

However, it’s easy to miss the constant churn of members, the significant drop-offs in the onboarding funnel between someone coming in for a consult and making it to the third month of their membership, and the constant rising costs through increased property taxes, increased minimum wage, increased need for meetings with more staff, and the standard yet still never pleasant unexpected repair and maintenance expenses.

Knowing our numbers was not so much about dictating our decisions as far as what aspect of the business we would prioritize or which part of our lead funnel was the leakiest – instead, it was about giving our staff perspective on how unbelievably difficult it is to get people to commit to training in the first place – and how difficult it is to keep them around once they do commit.

Given our location in a highly transient downtown area, we do have a unique challenge relative to many other CrossFit gyms in terms of how many members move away on a monthly basis – although we do have the luxury of quite a few people moving into our neighborhood as well.

While many gyms would be happy to add 5-10 new members per month, we often need to add 5-10 members per month just to replace our members who moved away – not even counting the other members who quit for other reasons.

Based upon this, I’ve doubled down on having an accurate process for pulling and sharing our monthly numbers that is also low-friction, since manually pulling and editing multiple spreadsheets on a weekly basis in order to review for our meetings is simply not going to happen.

I’ve been learning to code with formal help from my friend Kori as well as informal help from John and Griffin – and whoever else I periodically text with questions about setting up a server or some sort of opaque error message.

Over the last eight or nine months, I’ve set up the following situation:

All of the pieces of software that we use at SLSC to manage clients (InfusionSoft, Zen Planner, SmartWaiver, Square and Acuity Scheduling) dump their information into relational databases in Airtable – and all behavior is associated with a unique client record. 

Most of this was done through Zapier – and other pieces of it were done through little web apps to work around Zen Planner’s lack of an API.

Airtable views of clients in various stages of our onboarding process are regularly reviewed during meetings so that coaches are aware of how their people are doing – and where we are losing people in the process of onboarding them.

•I wrote – with Kori’s help – a Web Data Connector that pulls data from Airtable into Tableau in order to create visualizations of our lead funnel, including total conversion numbers, coach conversion numbers, and general members gained and members lost dashboards showing how our membership is tracking over time.

These dashboards are embedded on my own site at so that staff can access them and review them on their own if they wish to.

This has been a huge learning project in terms of my own lower intermediate-level abilities to write software. While I’m not really an expert in anything, I’ve learned pieces of Rails, Python, JavaScript, SQL and Apache system administration to make all of these different pieces of the puzzle work.

While this project is not quite done – there’s still several dashboards I would like to create as well as several edge cases in the way that the data is pulled that need to be cleaned up – I feel like we actually have something that is working close to how I envisioned it.

While there is a sense of accomplishment based upon that, I have no idea of this is going to actually make a material impact on our business.

My hope is that – through regular review of the numbers and an understanding of how and when people drop off – we are able to give staff clear goals and get more buy-in from them in terms of taking ownership of creating a world class gym.

If you’re not taking a look under the hood regularly, it is difficult to understand how flakey people are, as well as how many people will quit at the drop of a hat based upon one bad customer service interaction or some sort of inconvenience in terms of their ability to get to the gym.

I also hope that having these numbers handy allows us to zero in on problems in our business and increase our growth since we are still short of where we need to be to have the financial stability to aggressively pay off our debt while still reinvesting in our facility and paying our staff a living wage.

When we opened SLSC seven years ago, I never imagined that my days would be spent writing code and leading meetings, but it turns out that’s what it takes to run a small business – so here I am.