Pippin Williamson

Every year since 2012, I have written a year-end review post to look back on how we did, what we achieved, the struggles we encountered, and more throughout the year. In past years, I have written these posts on Pippin's Plugins, but starting from now, I will be penning them here at Sandhills Development's new home on the internet.

Previous year in review posts: 2012 | 2013 | 2014 | 2015 | 2016 | 2017 | 2018.

A lot happened in the last year and I cannot possibly mention everything, so I will focus on some of the highs and lows.

Establishing our brand

It's an interesting thing trying to re-create an established brand.

Between 2009 and 2013, our brand was me. I was running a website called Pippin's Plugins and releasing plugins under that brand. It was working pretty well and I managed to create a strong personal brand.

In 2013 I formally established the company as Pippin's Pages, LLC. I used that name because I also operated a website called Pippin's Pages that acted as my general website development portfolio and I wanted to have a company name that didn't lock me into building plugins. I felt "Pages" was more ambiguous than "Plugins".

Later in 2014 I hired my first employee, Sean Davis. At that time, the company was still very much "me" and Sean was a guy that worked for me. It was the same way for my next two employees, Andrew Munro and Chris Klosowski.

Frankly, I did really well at establishing a personal brand. The irony of that, however, is it's really hard to re-establish your brand when the original brand is already so strong.

As the company grew, in people, products, and revenue, I started becoming dissatisfied with my personal brand. I wanted the company and the brand to be able to do so much more than plugins and websites, and I wanted it to be more than just me, so in 2015 I formally changed the name of the company to Sandhills Development, LLC.

The thing is, however, the formal name of the company has very, very little to do with the brand of the company and the brand that is associated with the work the company produces. Even though Sandhills Development has been a team of more than just me since 2013, we still constantly see the "Made by Pippin" or "Hello Pippin" when people talk about or contact us.

On the one hand, this is incredibly humbling and something to be proud of, but on the other it's frustrating because our products are so much more than just me.

We began pushing out the wider Sandhills Development brand in 2016 and then even more in 2017. It was a slow process but we made progress. Oftentimes we would send an email to our customers, make it very clear what the subject matter was, and include "from Sandhills Development" or similar in it and every time we would have someone respond with:

Who is this? What is Sandhills Development?! Go away spammers!

Sigh . . .

Slowly over time, however, we managed to make progress on re-branding Pippin's Plugins and each of our products under that brand as Sandhills Development. We still have a ways to go but we're closer to the finish line than ever.

One of the largest strides we made in the project was completed in September 2019 when we re-launched our company website. Sean Davis took on the project and did truly amazing work. Be sure to check it out!

For the first time, we have a home on the internet that I wholly feel represents us as a company and the things we do. I couldn't be prouder to show it off.

Organizing for the future

There have been a lot of distinct phases for our company, and they mostly align with the size of our team and how the team members are divided across projects.

Like many bootstrapped tech companies, our first phase was when we were just one person (me). We entered our second phase when we began hiring our first employees and then grew by 1-3 people each year for several years in a row.

Those first and second phases were both the most difficult and the simplest. We had no idea how to run a company and so were very literally figuring it out as we went. That was challenging but also extremely exciting. It also had a certain simplicity to it too because we were at a size where we hadn't yet encountered challenges that arise as the number of people increases. Aside from figuring out how to pay people for the first time, the overall complexity of the company was very similar to running a solo operation. Everyone reported directly to me and that was it. We didn't need managers or directors or even team leads. There was one team and one lead.

That early structure began to strain at the seams, however, as the team size grew and we found ourselves with distinct role-based teams. We went from a team where everyone was a developer and everyone did support to a set of two teams, one that did development and one that did support. Then we grew into having a marketing team too that was made up of a mix of people from the development and support teams. Then we changed into having a dedicated marketing team where marketing was each of those people's sole jobs. Then in 2018, our teams changed again when we began creating an administrative team, but like before this team was made up of team members that split their role between administration and their other tasks. And in 2019, we adjusted again as our management teams moved from part-time company management to full time positions.

Through all of these team changes, we've experienced at least six different phases of the company, and with each transition between phases, we've learned a lot.

In general, we have been able to adapt to our team changes pretty smoothly and without significant disruption to our workflow and effectiveness, but in the last two years we began to really feel the strain of our mostly flat organization. It was becoming increasingly apparent that we were going to need to adopt a more traditional company structure that included clear hierarchy, and defined accountability channels.

For the first few years, I was the lead for every area of the company, including development, support, and marketing. Over time I brought on people to replace myself in those roles. This last year I again replaced myself in two more major roles.

In January, 2019, Chris Klosowski stepped into a new role as our Director of Technology. In this role, he took over all responsibility and management of our development teams and technology, affording me much more time to focus on other areas of the company, like figuring out how to re-organize the rest of the company to help ensure our longevity.

In freeing up more of my time to focus on the company, a funny thing happened. It became very apparent to me that I wasn't very well suited to do the thing I had just allowed myself to focus on. You see, I am really not good at organizing and communicating with people. I could clearly see where our company's organization and structure was struggling but I really didn't know how to go about fixing it. I was pretty sure I knew what we needed to do but doing it was a whole other matter. I was fortunate, however, to have one of the most organized and detail-oriented people working with me.

Six months ago, in July 2019, Kyle Maurer, whom had previously been working in our support and marketing teams, stepped into a new role as Director of Operations. On the surface, his new job was simple: manage the people side of the company. Behind the scenes, however, this is one of the toughest and most important roles in the company. If we don't keep our people happy, we don't keep our people.

At this point we had grown to 24 people and it had become abundantly clear that we needed someone putting their full attention on ensuring our people are happy, organized, heard, cared for, and that the company is fulfilling its promises to them.

I have always loved building things. Whether it was a tree house in our family orchard, a WordPress plugin, a microbrewery, or hiking trails in the woods, the excitement of creating drives me. I am motivated by creating and shaping. I am not, however, excited about steering or managing a thing once it's built. I have re-discovered this over and over again. I always need to be building something and then, once it is built, I need to hand the reigns to a new driver.

Under Kyle's lead, we have laid a lot of ground work this year that will help carry us through the next few stages of growth at Sandhills Development. While we do not have explicit goals of doubling the size of our teams, we do want to make sure that our organization is ready and able to handle it if that growth happens. If we never grow and we stay comfortable at the size we are, that is also okay because the work we’ve put into structuring the company will benefit us at our current size and upwards of 50 or more people.

Revenue and profit

2019 was our best year yet for revenue, and it was one of our most profitable, giving us more security and flexibility in the future to grow and reinforce the company.

Note: the revenue numbers in this section are for the software side of the business and do not include revenue from our breweries.

At the end of 2018 I set a goal of hitting $3,500,000 in revenue, an increase of nearly $1,000,000 over 2018. We didn't quite make it but we got really close. Our total revenue in 2019 was $3,454,759.93. Our revenue in 2018 was $2,589,934.90, so we saw an increase of $864,825.03.

Our expenses in 2019 rose to $2,557,560.05, an increase of $338,724.29 over 2018.

There are hundreds of places that we spend money, but here are some of the largest categories:

  • Payroll: $1,874,802.66
  • Insurance (liability, health, and workers' comp): $144,361.17
  • Merchant processing and bank fees: $108,783.27
  • Marketing / advertising: $63,014.91
  • Service subscriptions (Mailchimp, Zapier, internet, etc): $38,583.85
  • Legal and accounting fees: $29,687.61

Profit

I wish businesses would talk about profit more often. It is one of the single most important parts of running a business yet people so often seem to be afraid to really talk about it. Profit is literally one of the foundations that keeps a bootstrapped company alive. Without profit the company has two choices:

  1. Shut down
  2. Take outside investment and hope profitability is achieved before it is too late

We are committed to staying profitable because profit is what allows us to grow, take care of our team, create new products and features, give back, and everything else. Without profit none of that happens.

I loved seeing this Tweet from Josh Pigford:

https://twitter.com/Shpigford/status/1214972579187953669?s=20

In past years I haven't shared our real profit numbers, just our revenue. It's time, however, to follow Josh's lead and talk more openly about profit, so here we go.

On $3,454,759.93 revenue, we had $664,312.01 in profit. That's a profit margin of 20.6%, an increase of 1.6% over 2018.

With profit we can build cash reserves and security; security that allows us to weather downturns in business. With profit we can take exceptionally good care of our team. With profit we can invest in our futures. With profit we can do more.

Profit is not our motivator but it is our lifeblood. We strive for profit because it is what enables us to pursue those things that do motivate us.

Revenue by product

In 2019 we ran six core products that each generate revenue. Here's the breakdown of how each one did in terms of gross revenue:

  • AffiliateWP: $1,272,293.46
  • Easy Digital Downloads: $1,009,080.44
  • Payouts Service: $24,446.03
  • Restrict Content Pro: $467,806.26
  • Sugar Calendar: $6,282.75
  • WP Simple Pay: $307,743.63

I will talk about the achievements and struggles of each product more in-depth below.

Team growth

In 2019, six new people joined Sandhills Development, growing our team size to 24. These 24 people work on the digital side of the business (WordPress plugins). There are also 14 people that work in the brewery side of our business, which I will share more on below.

Alex Standiford came on board as a platform developer focusing primarily on AffiliateWP. Since joining he helped us release 12 updates for AffiliateWP and numerous more updates to its add-on plugins.

Spencer Finnell also joined us as a senior developer to work primarily on WP Simple Pay and Easy Digital Downloads. He took over as the primary developer for WP Simple Pay and has now also taken on a role as a primary developer on our Sellbird platform.

Adam Lea joined us as an Application Support Specialist. He primarily helps customers of WP Simple Pay and, along with the rest of our support team, lends a hand in the support queues of our other products and helps to test bug fixes and improvements to WP Simple Pay.

Andrea Whitmer joined us as an Application Support Specialist and focuses mainly on Easy Digital Downloads. She also tends to customers of our other products and helps us test bug fixes and feature improvements to Easy Digital Downloads and its extensions.

Michael Beil, whom has worked with us on a part-time basis for many years, came on as a full-time team member as an Application Support Specialist for AffiliateWP. Along with his work assisting AffiliateWP customers, he helps the development team by reporting bugs and testing fixes and improvements to the entire AffiliateWP suite of plugins.

Joe Wells came on board as the third full-time member of our marketing team. He has worked to considerably improve our email marketing efforts and to improve copy and graphics across all of our product websites.

Would you like to be included on this list next year? We're currently hiring for junior developer and application support positions! Get in touch.

Content production

Sandhills Development built much of its original traction and brand reputation on content published on Pippin's Plugins.com. It was the frequent tutorials, musings, podcasts, and write ups that I wrote there that really helped build our early audience. As we grew, however, it became increasingly difficult for me to maintain the same publication rate. Eventually my writing dwindled to almost nothing.

In my 2018 year-in-review post I described the content plan we laid out and how we hired a dedicated writer, Mandy Jones, to help us get back into a routine of hitting Publish.

In 2019 we collectively published 129 blog posts across our websites. That's an average of ten and 3/4 blog posts per month.

Check out our blogs to see the kind of work we've been producing:

I am immensely proud of the level of content we've been able to produce this year. A huge thanks is due to our content team for the coordination and work necessary to pull off this amount of content production.

We are just finalizing our content plans for 2020 and it's going to be another excellent year for content.

Customer support

With five primary product brands and tens of thousands of customers, our customer support team stays very busy. The support team is now made up of seven dedicated and extremely hard-working people and led by Keri Jacoby, our Director of Support.

Customer support is one of the single most important jobs at a digital company like Sandhills Development, and it's easily one of the most challenging. The work load is high, it never stops, and those working in support have to constantly flip between dozens of different contexts as they assist customers with a wide array of questions and issues.

Here's a brief overview of our support volume from Help Scout:

  • 23,845 new tickets received
  • 54,461 messages received from customers on tickets
  • 107 tickets handled on average each day
  • 22,754 customers interacted with
  • 56% of all tickets resolved on the first reply
  • 1 day and 20h average resolution time
  • 5 hour and 15 minute average response time
  • 4 hour and 26 minutes average time to first response

Note: this excludes support messages sent through social channels and WordPress.org support forums.

Of all our products, Easy Digital Downloads is our highest volume in terms of support tickets. It was responsible for 47% of all ticket conversations with 11,090 conversations handled in 2019. Our next highest product was AffiliateWP with 6,768 conversations.

I want to commend our support team for the stellar work they do every single day. It's not easy and so often it's a seemingly thankless job. Regardless of the company, the next time you talk to a person in a customer support role, tell them Thank you! and share your appreciation as best you can. They do not hear it nearly enough.

Now I'd like to look back at a few product-specific achievements and challenges.

AffiliateWP

It was an excellent year for AffiliateWP.

AffiliateWP is irrefutably the best affiliate marketing plugin for WordPress and is used on more than 25,000 websites. We've worked very hard to get it here but we are not even close to done. There is so much more we want to do to continually improve the platform and we couldn't be more excited for the future.

We made a lot of progress on further improving AffiliateWP this year and released 13 updates, including two major versions that introduced significant new features.

The new standout features include:

  • Improved flat-rate referral calculations for WooCommerce, Easy Digital Downloads, ExchangeWP, and WP EasyCart
  • Better email notification control for affiliate managers
  • Referral summary widget on the WP dashboard
  • Expanded REST API routes for customer records
  • A Danish language translation
  • An improved German language translation
  • Improved payout processing flow, including payout previews
  • Integration with our new Payouts Service for paying affiliates

There were also 80+ bug fixes and improvements included in the 13 updates.

One of the biggest improvements the platform saw this year was the introduction of our Payouts Service, which is a stand-alone service that is directly integrated into AffiliateWP as a core feature. It is helping to solve one of the biggest pain points our customers have had for years: paying their affiliates.

Payouts Service

Unless you want to use PayPal, paying people around the world is hard. There are tons of different systems that allow one to send money to someone else, but very, very few of them permit you to send money to a bunch of people at one time. For example, let’s say you run an affiliate program and each month you need to pay 50-100 people for the commissions they have earned. How do you do it? Unless your answer is PayPal, there just isn’t a good answer.

With our AffiliateWP customers, this is a pain point we see all the time. After seeing customers run into the same challenge over and over again, we decided to try and find a solution. We wanted our customers to be able to easily process payouts to their affiliates, whether they were paying a single person or a hundred different people.

I began working on the problem about two years ago and slowly architected how a system could work. It took almost a year to mentally map it all out but once I had it, I took it to Tunbosun Ayinla, one of our developers that was working on AffiliateWP, and walked him through how I thought it could work.

He agreed it should all be doable and so set out to work, and seven months later we had the first version of our payouts service up and running for internal testing. Starting in July, 2019, we began using what we’d built to process payouts for our own affiliate programs.

It worked.

In September, 2019, we launched the first beta of our Payouts Service for AffiliateWP and then officially launched it for all customers in November. Since launching we have set up payout accounts for website owners in thirty different countries and they have affiliates in more than 20 countries that are all registered to receive payouts through our service.

The Payouts Service is integrated directly into AffiliateWP and is available to every customer, regardless of their license level and account status.

Though the service has only been live for a couple of months, we’re processing $5,000-$10,000 per month in payouts and that amount is steadily growing with new sites and affiliates connecting every day.

Easy Digital Downloads

2019 turned out as a great year for our flagship product. We didn’t achieve all that we wanted but considering the major challenges that were thrown at us, I’m very proud of what we did this last year.

Along with sending out dozens of updates for our core plugin and extensions, we completed a required update for major regulatory changes and made a lot of progress on our Easy Digital Downloads 3.0 project.

SCA

In September, 2019, we released updates to our Stripe and Recurring Payments plugins to add full compatibility with Strong Customer Authentication regulations.

This series of updates took an enormous amount of time and effort to complete before the deadline and significantly delayed our other development plans for Easy Digital Downloads, but it was a really important set of updates that opened up the door to a lot of future functionality. To finish it, we had to practically rewrite our entire integration with Stripe since their APIs changed so drastically.

Easy Digital Downloads 3.0

It has now been two years since we first started the complete overhaul of Easy Digital Downloads and we still have more work to do before we are ready to release it to the world.

There have been two primary overarching goals with the 3.0 release:

  1. Completely re-engineer the database layer for all transactional data to help stores scale and provide significantly easier access to the data for developers
  2. Overhaul our reporting features to provide stores with much more meaningful information that can be used to make data-driven business decisions

On the surface this may not seem like that daunting of a task, but in reality it is enormous. There are hundreds of thousands of lines of code in Easy Digital Downloads and the current data schema is so deeply entrenched in the functionality of the platform that changing the database means almost literally changing every single line of code. Doing that while also not breaking websites is not an insignificant challenge.

The new reporting dashboard in Easy Digital Downloads 3.0

We are really close to having the first alpha version of 3.0 ready for testing and will be sharing more on our development blog when we are there.

Aside from the sheer enormity of the task that is 3.0, the process hasn’t been nearly as smooth as we had hoped, largely because it’s been very difficult keeping development resources on the project. We are a small team with a limited number of developers and what inevitably happens is our development team has to adjust their focus in order to take care of higher priority issues. For example, the SCA updates mentioned above were mandatory updates that we had to work on due to regulatory changes, and these took months to complete. Our development team can be in a good groove but then torn away from their focus because a pressing issue comes up for customers, requiring the devs to change their focus.

This is a challenge every development team in the world is familiar with but it can still be frustrating.

Restrict Content Pro

2019 was the best year yet for Restrict Content Pro in numerous ways. First, we released not one, not two, but three major releases for the core plugin. We also released more than a dozen minor updates for core and dozens of updates for our free and Professional add-ons.

Like Easy Digital Downloads, Restrict Content Pro has been in need of major database redesigns for a long time. In 2019, our development team, led by Ashley Gibson, finished the redesign of the data layer and successfully migrated thousands of sites to the new database structure.

The rebuild of the data layer allowed us to introduce several highly requested features:

  1. Multiple memberships per user
  2. SCA support for our Stripe and Braintree payment gateways
  3. Saved cards for easier repeat purchases through Stripe and Braintree
  4. A report that shows membership counts over time
  5. Payment plans for sites that wish to split payments up into multiple installments

It cannot be overstated how much a finely tuned and designed-to-fit-your-needs database structure benefits a platform. Once the database redesign was completed, the rate at which we can make other improvements is so much faster.

We made huge strides with Restrict Content Pro this year but there is still so much more to do so be sure to watch out for a lot more updates throughout 2020.

Sugar Calendar

Simultaneously our oldest and our youngest product, Sugar Calendar made good progress this year.

We released a major update with version 2.0 that included, like Restrict Content Pro 3.0 and Easy Digital Downloads 3.0, a complete redesign of the underlying database structure. This update was desperately needed and required in order for us to move forward and develop Sugar Calendar into the feature-rich platform we want it to be.

We also released the first of many Pro add-ons called Calendar Feeds, and made significant progress on the build out of our second Pro add-on for Advanced Recurring Events, which will be released in the next month or two.

There is a lot of work still to do and we wish we could move 10x faster but we are committed to doing it right and not releasing new plugins nor updates until they’re fully flushed out and ready for prime time. Our customers’ time and attention is too important to not get it right.

WP Simple Pay

This product joined the Sandhills Development brand family at the end of 2018, along with founder and developer Phil Derksen.

As with most product acquisitions, one of our goals was to grow WP Simple Pay quickly and effectively. Our growth strategy involved several core components:

  1. Market the plugin to the larger Sandhills Development audience
  2. Rapidly increase the pace of new feature development and bug fixes
  3. Set up a dedicated development and support team for the plugin

For the first five months, we split development responsibilities among our existing development staff, myself included, then in February we hired Spencer Finnell as a senior developer with a primary focus on WP Simple Pay. Adam Lea came on in February as our first in-house support team member for WP Simple Pay.

In 2019, we released 20 updates to the pro version, including three major feature releases, and six updates to the Lite version of WP Simple Pay. New feature highlights include:

  • Support for Apple Pay and Google Pay
  • Better "Pay", "Donate", and "Buy" button types
  • Improved coupon code usage tracking
  • Improved billing address record keeping
  • Improved shipping address record keeping
  • Improved form styling for better, more consistent form displays
  • Better webhook verification
  • Better on-boarding and authentication with Stripe for first-time setup
  • Strong Customer Authentication (SCA) support
  • Support for Stripe's new off-site checkout experience

Our growth strategy has worked well. We have nearly doubled the revenue of the product since we acquired it and we have significantly increased the pace of feature development.

Sellbird

Last year we thought we were almost ready to release the first beta version of Sellbird, but we changed our minds at the last minute.

I was reading a book called Lost and Founder: A Painfully Honest Field Guide to the Startup World by Rand Fishkin and one of his chapters discussed at length how and why one of the new products they built at Moz failed to achieve enough traction after launch.

He explained how launching a Minimum Viable Product (MVP) can work exceptionally well for new companies but can actually be super damaging to established brands that have strong reputations, as it was in their case.

I have always felt it's better to ship early and then iterate rapidly, but Rand was advising exactly the opposite in his book, and I realized that in our case with Sellbird he was absolutely right.

We thought we were ready to release a beta, but we weren't. The product was not polished enough, too rough, and not focused enough. Releasing it then would have hurt us. It would have lead to an initial wave of excitement followed by not insignificant disappointment because the product simply wasn't ready.

Upon realizing that, we decided to take a step back from Sellbird and give ourselves time to figure out what our exact goals were with the platform.

We have since figured out what we were missing and which areas of the platform needed a re-adjustment and we are making good progress again, but having to basically pull a reset delayed us significantly. We don't have a release timeframe in mind but we do finally have a much more clear vision of what we're building.

Sellbird has been a fascinating project to work on because it's so different than our other products. Each of them has been built around a known set of needs that have pretty clear solutions. Sellbird, on the other hand, has been built more from the mindset of want than need. It's a platform that we wanted to build but not necessarily a platform we needed to build. The exact challenges we are intending to solve for the intended audience haven't been clear to us until very recently.

It has definitely been a good learning experience and has fully reiterated why it's generally a good idea to hold off on building a thing until you have a complete picture of what that thing is supposed to do.

Real estate

As a predominantly digital company, there really is not much that we can truly put our fingers on and actually touch, aside from laptops, phones, and other digital devices that aid us in performing our work tasks. That means we have very few tangible assets.

One of my goals since pretty early on has been to diversify our income streams and assets. We have made good progress with this goal in two ways:

  1. We have built and launched our microbrewery
  2. We have begun purchasing real estate

In 2017, we purchased an empty 3-acre plot to slowly transform into a park and green space. And then in July, 2019, we successfully acquired the commercial building that acts as our company headquarters, my out-of-home office and also hosts one of our two breweries.

Our Hutchinson brewery and taproom resides in the back half of the building (you can see our small patio in the picture above) and we lease the front to a yoga studio.

We intend to expand our real estate holdings as time goes on, but it's a small side project for the company. Mostly I keep my eyes open and watch for good opportunities to arise that hold potential for further diversifying our income streams in the future.

The brewery

A few years ago I started to notice something missing in my life: a connection to the local community.

Online, I and everyone else at Sandhills Development were connected to and actively involved (some more than others) in the WordPress community and numerous sub communities inside of it. I've always felt this was one of the most powerful and important aspects of WordPress and is a very large part of why I chose to start a career building products for the platform.

Locally, however, I was feeling very isolated. Sure I had friends and family that lived in the area, but I began to really notice the lack of any form of presence for the company. No one knew of nor had any idea what Sandhills Development was. There was no building nor anything else for the people in the city to connect to. There was no presence whatsoever beyond a mailbox with a number on it. To me it wasn't important that people knew about us, but it was important that we had a presence so that we could contribute to and create connections and ties to the community in meaningful ways.

Building the brewery has enabled us to achieve that very well. We now see and interact with hundreds of people from the local community every week and it's one of the highlights of my professional career.

Sandhills Brewing, LLC, is a sub entity of Sandhills Development and a collaboration with two other entities: Polygon Brewing, LLC, and Three Rings Brewery, LLC.

Polygon Brewing is the company that my twin brother Jonathan, and business partner, Joe Cizek, run and Three Rings Brewery is a neighboring brewery that we partnered with. We all collaborated together to build and run Sandhills Brewing.

While Sandhills Development owns a large percentage of the brewery, we try and operate the two businesses entirely independent of each other, including financials, staff, organization, and all management. There is a little bit of overlap here and there, but very little.

Our first brewery was opened in April, 2018, in Hutchinson, KS, and then in April, 2019, we opened our second brewery in Mission, KS. Both of them are called Sandhills Brewing and the two locations work together collaboratively. I direct all brewing and operations in our Hutchinson location and Jonathan and Joe share the directorship of the Mission location.

Breweries are extremely resource intensive operations that require a lot of start-up capital and have extensive operating budget requirements, even for small facilities. For the past two years we've been in build-out mode and so have been sinking a lot of cash into construction and equipment purchases. With both breweries up and running now, we're mostly done with the biggest start-up costs and are now working towards establishing a positive cash flow that generates profit. We're not quite there yet but are getting close.

Between our two locations, we made $444,993.83 in revenue and on this, we incurred a net operating loss of -$35,320.58.

Building the breweries has been an amazing experience and there have been so many valuable lessons we've learned during the process.

Team meetups and travel

Our team traveled a lot this year. As one of our employee perks, we give every team member a travel allowance that they can use for conference attendance, meetups with co-workers, or really anything else work related.

There were 32 different destinations our team traveled to this this year, with an average of 1.29 trips per person.

We attended 19 WordCamps, seven other conferences, and held three team meetups. This last year we held a Support Team meetup in two locations simultaneously, a Marketing Team meetup, and our annual all-hands Sandhills Summit.

The Sandhills Summit is one of the highlights of the year as it's the one time we get every member of the company (sadly two of our team members could not make the trip to Rockford, Illinois, this past year) together in the same place and spend 5-7 days together. It's a wonderful experience and a great opportunity for us to bond more closely as a team.

group photo of the team
The whole team minus Adam Lea and Tunbosun Ayinla

Kyle wrote a great recap of our 2019 Sandhills Summit.

2020 goals

We have a lot happening in 2020 and I wont list all of our goals here, but there are a few I'll note.

  1. Surpass $4,000,000 in gross revenue
  2. Maintain a 20% profit margin
  3. Plant 20-50 trees in our park
  4. Enable everyone on the team to take more time off
  5. Grow Sugar Calendar to $10,000+ / month revenue
  6. Process $400,000 or more in payouts through our Payouts Service
  7. Surpass $600,000 in sales for our breweries
  8. Launch Easy Digital Downloads 3.0
  9. Launch our first public beta of Sellbird

That's a pretty good list so I think we will leave it at that. Will we reach each of those goals? Find out next year!

Cheers!

Pippin Williamson

About Pippin Williamson

Founder and Managing Director of Sandhills Development.

33 comments

  1. Pippin Williamson
  2. Pippin Williamson
  3. Pippin Williamson

    I’ve been watching your growth since about 2012 and am super happy for you. Love the diversity in your business and the way you treat customers. Best of luck in 2020!

  4. Pippin Williamson
  5. Pippin Williamson
  6. Pippin Williamson
  7. Pippin Williamson

    I see you indicated Pippins Plugins are ‘mostly retired’. Not knowing this, I submitted a support request (twice now) for the Simple Notices plugin which hasn’t been addressed. If you no longer support this plugin and the other plugins on Pippins Plugins, why not indicate this on the website?

    I appreciate all the hard work you’ve done on RCP; it’s really a great membership plugin. The new Stripe onboarding process in RCP is absolutely stunning, and makes it so easy to add the Stripe payment gateway. It was so easy I almost made it hard! The only enhancement I’d like to see in RCP is an “Easy button” that shuts off the WordPress standard registration. Integration of the WP Approve User plugin functionality into RCP would be nice too…

    Happy New Year and Happy New Decade!

    1. Pippin Williamson

      Marcus,

      You’re absolutely right and I have not done well enough at communicating the status of those plugins.

      You can expect more communication from me before the end of the week regarding those issues.

      Thank you for your feedback and support!

  8. Pippin Williamson

    One of my favorite annual reads.

    “A few years ago I started to notice something missing in my life: a connection to the local community.”

    That stood out to me. I am going to reflect on this in the coming months.
    Thank you for sharing.
    All the best for 2020 on the Sandhills!

  9. Pippin Williamson

    Thanks so much for all the wisdom and experience you share in these Pippin. It’s so valuable for those of us who are trying to follow in your business footsteps.

  10. Pippin Williamson

    Congratulations on a successful year! Your posts are always an inspiration for us, who doing business with WordPress!

    Wish you best luck in the new year!

  11. Pippin Williamson

    Your annual review posts have always given a new perspective to me, and this one does not miss the mark!

    Good luck for 2020! Watching profit closely is key!

  12. Pippin Williamson

    I look forward to reading your review every year because they always give me things to consider in my own business. Thanks for taking the time to do this!

    Since I live near Rockford, Illinois I never think of it as a place where groups would likely want to visit. Where did your team meet?

    1. Pippin Williamson

      Thanks Doug!

      We rented a large house that had enough space for everyone. We chose the location more for the house than about anything else. With 24 people, the options for renting a single house at a particular time of year are not terribly abundant. It turned out to be a tremendous location that worked very well for us!

  13. Pippin Williamson

    Since 2014 I follow you. I started many things but yes I failed. Last 1 year I try to build something with the WordPress ecosystem. I am not successful yet but this time I tested what is success. I am very dedicated and passionate about what I am doing now. Your writing really inspires a lot. Hopefully when you write 2020 review that Time I will be writing my first review… Who knows .. 😉

  14. Pippin Williamson

    Thanks for been so transparent and congratulations, the Culture you are shaping is really nice. We are a similar journey at marketgoo but we had struggled with project diversification in the past.

    How do you organize the company with so many projects and brands and the team size you already have?

    Thanks in advance!

    1. Pippin Williamson

      Our company is divided up into pretty standard teams:

      – Leadership
      – Support team
      – Development team
      – Marketing team

      Within each of our teams we then break it up further by having each person have a “home” product that they spend the majority of their time on. For example, one of our developers works almost exclusively on AffiliateWP while another works almost exclusively on Restrict Content Pro. We do move people around based on the needs of each product but we try and ensure each person is able to have a primary focus. It works the same way in our support team.

  15. Pippin Williamson

    This is lovely and inspiring, especially for small business owners, thanks! I’m currently working in a very unrelated field but wish there were a way to join your team 🙂

  16. Pippin Williamson
  17. Pippin Williamson
  18. Pippin Williamson

    Hello guys,
    Your yearly reviews are always so inspiring! I always feel pumped up to do more.
    And that’s what we’re doing but we’re going through some issues: what type of process do you use internally for the development team? How do you organize everything from specs to test?

    1. Pippin Williamson

      Hi Martin,

      Thanks for the feedback and I’m glad that these types of posts help motivate you.

      I’m happy to give you some insight into how our development teams work. As the Director of Technology, my job is to help build processes and provide to the tools needed to our development teams to be able to work efficiently and continue to focus on producing quality products without getting caught up in the process of doing so.

      I think this could be a blog post on it’s own (I’ve made a note of that for the future), but here are some things I think we do that help us keep an organized dev team.

      1. Create Issue templates and PR templates. These help streamline the issue creation and isolate if it is a feature or a bug, and contain specific questions so that when the developer starts working on it, they don’t have to ask many questions (or any at all) of the reporter.

      2. We use GitHub’s label feature effectively. On top of our ‘organizational’ based labels, we also introduced ‘task’ oriented labels for things like “Needs Lead Feedback”, “Needs reporter Feedback”, “Needs Testing”, and “Has PR”. These help us quickly identify and filter things in a way that we can quickly isolate what needs our attention. You can see our label organization here: https://github.com/easydigitaldownloads/easy-digital-downloads/labels

      3. We use the Milestones feature of GitHub to help build our release cycles. This helps us maintain not just what we are currently working on, but the future roadmap. This way when developers are done with one task, they know where to focus their efforts next. This helps remove the “What should I do next?” question, as the next thing to be worked on is already organized.

      4. Automate as much testing as possible. Admittedly, we’re still getting some of our projects to the state where their automated testing is at a level we would like. The projects we do have configured for automated testing are using TravisCI (public repos) and Jenkins (private repos) to run our PHPUnit test suite against all Pull Requsts`release` and `main` branches. This helps us know when we’re ready to have someone manually review and test our code.

      5. We typically do not create ‘placeholder’ issues for our development team. We focus on only putting actionable tasks in front of our teams, so that when they jump into GitHub to start working, they don’t have to ask many questions.

      I hope that gives you some insight into how we operate as a development team! While I think we have places where we can improve our process and efficiency, I believe that this is part of the solution to the puzzle that has helped us scale over the last couple of years.

      Cheers!

  19. Pippin Williamson
  20. Pippin Williamson
  21. Pippin Williamson
  22. Pippin Williamson
  23. Pippin Williamson
  24. Pippin Williamson
  25. Pippin Williamson

Comments are closed.