August 10, 2015
Today we welcome co-founder of the WP Ninjas James Laws to the show. James originally appeared in Episode 13 of the podcast and today, almost a year and a half later, a lot has changed at WP Ninjas. We dig into how he and his co-founder Kevin Stover have scaled the business, what they’ve learned along the way, and what the future holds of the WP Ninjas team.
This episode of Apply Filters is sponsored, as always, by the WP Ninjas, and on the show today we are excited to welcome co-founder of the WP Ninjas team, James Laws, as our guest. James appeared in Episode 13 of the show, and since then his team has grown leaps and bounds. James digs into the path he has taken to get here, as well as what’s changed recently with the WP Ninjas team in the last few months.
James and his co-founder Kevin Stover are a classic bootstrapped founder story. Both starting from very different backgrounds from the typical software development, and their path to become a significant force in the WordPress space is an inspiring one for anyone looking to take the same path.
Updates From Brad:
- Correction: Definitely should tag readme.txt (from Phil Derksen)
- Private beta / testing WP Offload S3 close to done
- Tweaked WP Offload S3 site based on feedback
- Blog: WP REST API Part 1: Creating a Mobile App with WP-API and React Native
- Blog: Backup Your WordPress Site to Amazon Glacier
- Getting outside and enjoying the summer
Updates From Pippin:
- Fraud Monitor v1.0 released
- License upgrades in Software Licensing nearly complete. Beta testing now.
- Refund mishap related to error in form submissions. Paypal restricts refunds to less than 60 days.
Updates From James:
- Updates on WP Ninjas in the last 6 months
- Lots of growth with Ninja Forms and Ninja Demo
- Revenue up 60-75%
- We now employ 9 people (8 of them are full time)
- 3 Full Time Support
- 2 Full Time Developers (one in-house and 1 is deployed in the Air Force in Afghanistan)
- Dedicated Office Space
- All of the support team had excellent previous experience with support from top notch customer service organizations
- James says that he values Attitude > Aptitude > Skill when hiring
If you’re enjoying the show we sure would appreciate a Review in iTunes. Thanks!
PIPPIN: Welcome back to Episode 46 of Apply Filters. This episode is sponsored, just like every other episode, by the WP Ninjas, who have been generous enough to give us a permanent sponsorship to help us produce this show.
Today, we are thrilled to have James Laws on, who is one of the cofounders of WP Ninjas. James actually joined us in Episode 13, along with his developer, Kevin, and co-owner, I believe is right.
PIPPIN: That was back in Episode 13. Now we want to jump back in, now that it’s been five to six months or so, and learn how the WP Ninjas have been doing since then. James, say hello.
JAMES: Hello. Thank you for having me. It seems like it’s been ages. You guys have covered so much stuff since Episode 13, like, so much has happened.
PIPPIN: Doesn’t it?
PIPPIN: Well, cool.
BRAD: And I’m pretty sure a lot has happened on your side of the fence too, right?
JAMES: Yeah! Our company has changed dramatically.
PIPPIN: Oh, definitely.
JAMES: Almost scary so.
PIPPIN: It’s definitely been fun to watch, and I really cannot wait to hear more about it. I’d love to jump in to a little bit more of your personal history.
PIPPIN: I know last time we talked a lot about, I think, the relationship between you and Kevin and how the business has grown. But, I think it would be cool to step back and go a little further back and maybe like when you got into WordPress, what you did beforehand, your personal history.
PIPPIN: The stage is yours.
JAMES: Okay. Well, you know, before I even got into WordPress, I had probably spent eight years as a full-time pastor. I was doing associate ministry, and then decided to kind of start planning my own church in our hometown, and I started that journey. And so, my first kind of connection with WordPress was really blogging for the church, just thoughts that I had, insights I had, if I wanted to kind of go through a passage of scripture and kind of share my own thoughts on it, current events, or whatever. I would just blog. It was just kind of my way to communicate with the congregation beyond Sunday mornings.
BRAD: Cool. Was that a self-hosted WordPress?
JAMES: You know, when we started, I tried all the other platforms. I had tried Blogger. I tried a whole bunch of them and didn’t like any of them, so I wanted something with a little more control. So, yeah, I did a self-hosted.
Now, in my defense, I did self-hosted WordPress, but I had been doing kind of freelance Web design for some time. I was actually doing a lot of Flash stuff in the old, old days.
PIPPIN: Were you the one that actually took charge of setting the website up, or did someone hand you it and say, “Hey, this is WordPress. This is what you can use”?
JAMES: I set it up all myself.
JAMES: Yeah, so I kind of got involved in it, and I’ve always been a tinkerer anyway, so WordPress was just kind of the perfect fit for me to be able to, and I didn’t even know how much I’d be able to tinker with it in the beginning. I figured out how to install it and, at that time, most of the sites that I had done were all static HTML sites. Then I started to move into Flash for some more dynamic stuff, at least visually dynamic. Then got into WordPress and kind of fell in love with it. I had to start tweaking themes and stuff like that.
We were kind of a weird church at that time because our website made us appear like we were a much better put together congregation than we were because it was really fancy. It had all these great features because I would tinker all the time. But that’s kind of how I got into it.
JAMES: Yeah, so I spent a lot of time doing that. Then, as the church continued, and when we … I actually was a full-time paid pastor. When I started the church, I wasn’t paid anymore. We didn’t have a congregation that could afford to pay me, so I had to start taking odd freelance jobs and other just strange work. I was an assistant supervisor at a Hobby Lobby for a while. I started doing Web development for a fashion jewelry website. I was one of their full-time Web developers, so I started doing that. Just any kind of odd jobs that I could get a hold of to kind of pay for my ability to continue to be in ministry.
PIPPIN: When did you transition from using Web development to support your ministry career to using Web development to fund your Web development career?
JAMES: You know, it’s funny because, in that transition, I ended up working for our regional credit union as their Web administrator. That’s when I really started to dig in to WordPress a lot more, like very heavily getting into plugin development for them because they had all kinds of things that they needed done, and they needed a powerful intranet. I started building all this stuff for them.
It was while I was at the credit union that we did a little project for the local Junior Achievement chapter in our area. They needed, basically, a custom registration form for any type of event. They may have needed to register people for a bowling tournament with four players on a team and however many teams, and so it had to be very custom for that use case. If they wanted to do a breakfast, that would require totally different information.
While I was getting more involved in WordPress, I wasn’t as familiar with all of the other solutions that were available, so we built one, my partner and I. We just kind of played around with it and built this kind of really ugly form builder that worked. It fit their purpose. It was very specific to what they needed. When we got done with it, we thought, I wonder if we could sell it. I don’t know if other people would use it.
That’s when we kind of transitioned and made the journey. That was in 2010 that we built that for the client. Then, from 2010 until June of 2011, we kind of generalized it, cleaned it up a little bit, made it a little more ready for prime time, and released it in June of 2011. That’s where it started.
BRAD: Hang on. Your partner, Kevin.
BRAD: That’s who you were just referring to.
JAMES: That’s correct. Yes.
BRAD: Did you guys meet at the credit union?
JAMES: My business partner. Sometimes I feel like I have to clarify that.
BRAD: It’s his business partner.
JAMES: Obviously it’s my business partner.
BRAD: Yes. Did you guys meet at the credit union when you were working there?
JAMES: No. Interestingly enough, we met at the church. He came and visited the church that I was pastoring, just as a member, a congregant. He started coming, and we kind of connected and kind of built a friendship from the church. I didn’t know he knew anything about development. He didn’t know that I did anything with design. We just kind of became friends and would hang out. I’d go over to his place and we’d play Halo or something, just random things.
Then, over time, as I was building on the church website, he started to get more involved, asking questions, and seeing if he could help. Then we just, ever since, we’ve been trying to build something together for years from that day. It’s kind of been crazy.
PIPPIN: That’s cool. I have a question for you.
PIPPIN: I don’t remember if we covered this all back in Episode 13 or not, so if we’re repeating it, sorry. You transitioned careers. You went from ministry to Web development, and there was a transition period over time.
JAMES: Yeah. Mm-hmm.
PIPPIN: I think there’s a couple of ways that that final jump can happen. You can have your side project as Web development and discover suddenly that it’s doing well enough that you could easily transition to Web dev.
PIPPIN: And everything is pretty smooth. Or, you have this side stuff that you do on the side at night, in the evenings, etc. It’s doing enough to tell you that there’s potential there, but you’re still making a leap.
PIPPIN: When you decided to make that transition, was that a hard process? Was it pretty clear that you guys were going to be able to do it, or was it a lot of, “We hope this works”?
JAMES: Yeah. From the very beginning, so we started with a lot of different things. We did some non-Web application development for a local restaurant that had a catering business, and so we had kind of built out this catering system using, I think, Access at the time. That was the database we were using, and it was just really raw. We did some design work where we would do promotions like business cards, door hangers, and things like that for businesses. We did a lot of different things.
I think, for us, it didn’t become a clear transition really until 2013. In 2011, we watched.
When I moved over to the credit union, honestly, I was not qualified for the job. I think I’m a fairly good BS artist at times, and so I wanted the job. I thought I could grow in the position. I do a good interview, so they gave me the job. I learned so much by just building things that they needed and learned how to do it. It basically was kind of on the job training.
Then, when we built this plugin, in 2011 the sales were terrible, so we had no careers. He was actually overseas. He was in Liverpool doing his master’s in Ancient Roman History.
BRAD: As you do.
JAMES: Yeah, as all Web developers do, right? And so he’s doing that while kind of building Ninja Forms or, at that point, rebuilding Ninja Forms, and I’m working at this credit union, and we’re not making enough money that we think it can do anything. But, in 2013, when we changed our business model and kind of changed direction a little bit, things just started to explode. And we thought, okay, all right, we think we have something here that might be able to become something.
Probably about halfway through the year, I started making my exit strategy. I started saying, “Okay, how much money do I need to have saved up that I can feel comfortable or, more importantly, that my wife can feel comfortable with me quitting my job and kind of throwing it all out on the line?”
BRAD: Right, so you were building your parachute.
JAMES: Pretty much, yeah, right. It’s that freedom number. That number that says, “Okay. At this point I have no problems.”
BRAD: That’s cool.
BRAD: And you guys are doing really, really great now.
BRAD: And things have gone along. Maybe at this point, Pippin, we’ll get into what we’ve been up to.
JAMES: Yeah, let’s hear about that.
BRAD: Then we’ll jump back into how James has grown WP Ninjas and all that stuff.
PIPPIN: Yeah. I’m really looking forward to, James, hearing about what you guys have seen as a company, how you’ve grown, how you’ve expanded. That stuff is all important, but I really want to hear about the challenges.
JAMES: Sure. Absolutely.
PIPPIN: I think that’s what is really valuable. But, before we do that, Brad.
BRAD: Yeah, sure.
PIPPIN: What have you been up to?
BRAD: Yeah. The first thing, a correction from last episode: We talked about the readme.txt file in plugins and how you shouldn’t put in UTM tracking codes, so the UTM tag. It turns out there is a reason you should do that, you should put in the UTM tracking codes. The reason is because the readme.txt also appears inside of WordPress, right?
PIPPIN: Aah, that is a really important point that I know you and I both missed last time.
BRAD: Yeah, yeah, so Phil, a hat tip for that is from Phil Derksen. Thank you, Phil, for correcting us.
JAMES: And thank you for that episode. I went through and added campaign tagging into a whole bunch of stuff with Ninja Forms after that episode.
PIPPIN: Oh, nice.
BRAD: Aah, that’s awesome! So good to hear.
PIPPIN: That’s awesome.
BRAD: I feel like that episode kind of was like, whon-whon. We didn’t get any feedback, right? So you just don’t know if people —
JAMES: Analytics is one of those things that it doesn’t sound exciting until you’re on the backside of it.
JAMES: When you’re setting it up —
PIPPIN: When you’re getting the results of analytics, analytics tracking, then it gets exciting.
PIPPIN: Up until then, it’s kind of like, “Uh, I don’t know what I’m doing. I hope this is worth it.”
JAMES: I just put it in all over the weekend, and just seeing the last few days, looking at those campaigns and seeing how things are converting and where we’re getting our traffic from, from those, is super exciting. If anybody is listening to this episode and heard that last episode and thought it was a dude and boring, implement it and see what you think after you see the stats come in.
BRAD: Yeah, that’s a really good point.
PIPPIN: Awesome. Thanks for that.
PIPPIN: James, I’d love to reconvene with you at some point in a month, two months, and compare to see.
PIPPIN: That would be very cool.
JAMES: Yeah, absolutely.
BRAD: Yeah, that’s the thing about stats, right? The longer you have them, the more valuable they get, right?
JAMES: Yeah, exactly.
BRAD: Yeah, so the other things I’ve been up to, we’ve been doing the private beta for WP Offload S3 and getting some feedback about that and kind of iterating a bit on that. We’re getting pretty close to launch. It feels like in the next couple weeks, but you never know. The next piece of feedback could set us back longer, right? That’s how it goes. I’ve been tweaking the WP Offload S3 website as well. I’ve been getting feedback about that, about pricing, about the video that we did, and stuff like that, so we’ve been tweaking.
PIPPIN: Is that going to have a standalone website, or still part of Delicious Brains?
BRAD: Yeah, it’ll still be under DeliciousBrains.com, so it’ll be just kind of like the Apple model.
PIPPIN: Right. Sites within sites, kind of.
BRAD: Yeah, exactly. It’ll have a different feel, but it’ll fly the same banner.
PIPPIN: Sure. Yep.
JAMES: I mentioned you guys at our meet-up last night, Delicious Brains, and so when I mentioned your company name, I got a lot of nice chuckles.
BRAD: I know, right? You should see the looks I get at the Chamber of Commerce here in my little town.
JAMES: That’s awesome.
BRAD: Yeah. I get comments like frowns and then chuckles. The reactions kind of run the gamut, you know.
JAMES: That’s hilarious.
BRAD: Yeah. Other things we’ve been up to: We’ve been blogging. Jeff did a really cool post about the WP Rest API, and he created a mobile app, actually, with react native, which is Facebook’s mobile app framework, and used the WP API to feed it data. That was a pretty cool post, I thought.
I looked into Amazon Glacier and how to get your WordPress over to there. I did a blog post about that, which was actually way more challenging that I thought. It took a lot of research to figure that out. It turns out Glacier is not as straightforward to use as Amazon S3.
PIPPIN: I don’t think I’ve ever heard of Glacier.
BRAD: Oh, is that right?
JAMES: I haven’t.
BRAD: It’s like Amazon S3, except just for kind of archiving and backups. When you try to get the data out of it, it just takes longer. It’ll take hours to get it back. Yeah. Anyway, it’s cheap. It’s like a third the cost of S3. S3, as you know, is already pretty cheap, right?
And I’ve been just getting out and enjoying the summer. The last couple months, it’s been nice. We get–I don’t know–1.5 months of summer here, I think.
PIPPIN: Yeah. That’s probably more important for you guys than most people.
BRAD: Yeah, so I kind of take advantage. I’ve been taking a couple hours off in the middle of the day just to get outside and enjoy it.
BRAD: Yeah. What about you, Pippin? What have you been up to?
PIPPIN: Earlier this week, I think on Monday, we finally released our fraud monitor extension that we’ve been talking about for the last couple of weeks, so version 1.0 went out the door. Now, it’s version 1.0, but it’s really been something that we’ve been using behind the scenes for about a year and a half now. This is just the first public version that we decided to go ahead and turn into a full-fledged extension. And so, it’s out the door, and hoping to get some people on it, get some good feedback for it, and see how that works for people.
Then the other thing is we’ve been working on license upgrades. We have our main extension called Software Licensing, which is one of the primary extensions for Easy Digital Downloads. It’s what powers our extension updates, our renewals, our licensing. It does it for Affiliate WP and the stuff that I sell on Pippins Plugins as well.
One of the features that we’ve wanted to build for a really long time is the ability for customers to upgrade their license, say, from a single site license to a multisite license. That feature is now finally built, and we are beta testing it. We have it live on PippinsPlugins.com, and we’re going to put it live on the EDD site here in the next couple of days.
So far, it’s going pretty well. I’m pretty excited to get that feature released. Hopefully it’ll actually going out in a week or two, maybe. But, it’s a pretty important feature, I think.
JAMES: I’m pretty excited about that one.
PIPPIN: I’m excited for everybody to be able to use it. It’s definitely one of the major features that people have wanted for a long time. But it’s also not just a nice feature to have. It’s also a really, really important feature to have as a business.
Until we built Affiliate WP, I didn’t expect as many people to want to upgrade their license as there are. The reason I say that once we built up Affiliate WP I learned this is because we decided to go ahead and build in a custom upgrading system on the Affiliate WP website from day one. The number of people that upgrade was astonishing to me. Just how much that can improve your sales as a business is quite impressive because a lot of people want to jump in at the low level. Then they like it, so they decide to upgrade. Making that easy is awesome.
It also decreases your support load because we would get a lot of tickets from people saying, hey, I would like to upgrade. Is there a way I can do that? Well, if we just allow you to do it without ever talking to us, that’s one less ticket to deal with. It saves us time. It saves the customer time. It’s just a win all the way around.
BRAD: Are you going to allow downgrades as well, or just upgrades for now?
PIPPIN: Downgrades are tricky because downgrades require a refund.
BRAD: Or a credit.
PIPPIN: Or a credit. You’re right. You’re right.
PIPPIN: It’s something that we will probably look into because it’s not really that different going upgrading versus downgrading in terms of the technical side of things. It’s probably something that we will look into. For now, it is just upgrades.
BRAD: Right. Yeah. I have never implemented downgrades because it’s just another thing on my to-do list that I haven’t gotten to.
JAMES: Sure, and why make that easy?
BRAD: Yeah, exactly.
JAMES: The thing about upgrades, I think, is you get lots of people who will buy that lower level. They may want to upgrade, but how many people, because there isn’t an easy channel to do that or easy way of doing that, just don’t.
PIPPIN: Just don’t, no.
JAMES: And they never bother to reach out. They just deal with it.
JAMES: Making it easy for them is how you, right, increase revenue and lower your support costs just making that super easy for them, but I don’t know that you want to make that super easy to downgrade. You want to make them work a little harder for that.
BRAD: Yeah, yeah.
BRAD: I think, yeah, our downgrades, we don’t have the option, but we don’t even have an internal tool to do it.
BRAD: Our system right now is, you have to buy, basically, a new license. We’ll give you a coupon code or something, and you just have to buy a new license.
PIPPIN: EDD has the ability to do it. It’s just kind of manually going in and adjusting data. You can do it without a new purchase, but it’s not a super smooth process, for sure.
PIPPIN: One of the things that was really interesting about building this feature was we’ve had a lot of feedback over the last year and a half from people that say, “Hey, I really want this feature. Is there an ETA on it?”
We actually had a lot of really unhappy people as well because our ETA was usually, “It’s coming, but we don’t know when. It’s coming, but we don’t know when. It’s coming, but we don’t know when.”
It revealed a really common phenomenon in product development, I think, that people who are building product C, and I know that both of you are very well aware of this, that a lot of people, particularly consumers, won’t see as well. That is, it’s very easy to build something for yourself. If you have a set number of requirements, let’s say I want to upgrade my license from a single site to five sites. Building that is not difficult. What is difficult, however, is building in a system that would allow that person to do it, but also allow the person that wants to upgrade between products while prorating the purchase while also offering a small discount for the upgrade.
PIPPIN: Basically what it means is that building a feature that will work for everybody and not make it just too limited is much more difficult. That was why it was always a, “It’s coming. We don’t know when. It’s coming. We don’t know when,” type of answer because it’s not really a simple feature to build.
PIPPIN: I’m thrilled that it’s actually done now and it works – we think.
BRAD: Yeah. Yeah, I can relate to that. It’s funny. I wish I had known that you were working on this. You probably did mention it before and I just never thought of it. I built an add-on to do upgrades, and I went through all of the pain, the calculations and all that stuff, and made a lot of mistakes.
PIPPIN: It’s so fun. Isn’t it?
BRAD: Yeah. I could have offered it to you, but then you wouldn’t have had as much fun, I guess.
PIPPIN: You know, sometimes all you need to motivate you to build something is one person saying something negative to you. In this particular case, a customer just said–
BRAD: You’re a bum! You’re a bum!
PIPPIN: Pretty much. This customer just said, “Look, we’re really unhappy that this isn’t here. We might switch to something.” It motivated me to say, “You know what? This is getting done. I’m going to work it out.” And so I spent the next 36 hours, and it was done, pretty much, is the way it worked.
PIPPIN: It’s not just to appease that one person. It’s because sometimes you just need to hear it one more time.
JAMES: Yeah. Yeah, you need that. Sometimes you just need that kick in the pants.
JAMES: We had features like that too. That’s the other thing that I would say to people on the other side of this who are like, “Why aren’t you building this feature?” It’s not that we don’t want that feature. We want that feature in the plugin. We want to build it. It’s just that it is a challenging thing, and sometimes, whether they think so or not, there are things that are either blockers or there are just things that are more important to the whole ecosystem as a whole that have to be done.
JAMES: And so things sit, sometimes for a year and, sadly, sometimes for two years.
JAMES: You hate it, but that’s just the way it is.
PIPPIN: That is so incredibly true.
BRAD: Yeah, I can relate. Our software licensing add-on is for WooCommerce. I have intentionally kept it a private repository. When people ask me about it, I give them access, BUT with the stipulation that we are not maintaining this for anyone else. This is for us. If you want to fork it and do your own thing, that’s cool, but we’re not going to be doing pull requests. We just don’t want this to be a distraction from our other work.
PIPPIN: Right. Right, because this is not something you are providing. This is something you use for yourself, and you’re going to allow someone else to use it as a favor.
BRAD: Yes, exactly. I hate to not make it open source, but I feel like it’s just going to turn into a huge hassle, you know.
PIPPIN: It very well might.
BRAD: I mean it is open source. It’s just not published, right?
PIPPIN: Right, right.
PIPPIN: I have one more thing that I want to mention, and then I would love to get into hear about how WP Ninjas has been doing, James.
PIPPIN: We had an interesting day yesterday. It was not very interesting in a good way. Let’s just be honest. It was a bad day.
PIPPIN: It happened, and the reason I want to talk about it is because I think this is something that’s really important. All three of us are business owners. We’re working in the same sphere. I think this is very important, especially for anybody who is listening that is either getting into a business, who is already there, or wants to. This is something that might happen.
Let me tell you what happened. Over the last couple of months, everybody gets refund requests for whatever reason. It’s just the natural part of doing business. Every now and then, we would get somebody who is really unhappy, and they would say, “I submitted a refund request three weeks ago. I have never heard anything. I submit it again; still never heard anything.”
We’d go look through our systems. We have no record of it whatsoever. Sometimes it happens. People think they submitted a ticket. They really didn’t. Whether it was user error or there was a technical error, whatever, sometimes it just happens. Welcome to software.
Well, we noticed that it seemed to be a trend. There were too many cases of it just to be user error, so I started wondering about it. It was really bugging me because we kept having these people say, “I submitted this two weeks ago, but never got an answer,” and we work really hard to get every refund request answered within 12 hours or less.
I started digging in, and I figured out what happened. Basically, we have conditional logic on our form. So, depending on the subject that you choose–either technical support, a billing issue, refund request, or other–we tag it in HelpScout, appropriately, and assign it to somebody. Refund requests get assigned to me. Tech support gets assigned to the other guys, things like that.
We realized that our conditional logic had got screwed up, and our refund requests, if you clicked refund request, it was going into a black hole. It was literally going nowhere. Thankfully, it wasn’t going nowhere. It just wasn’t going to HelpScout. What was happening is that it would go into WordPress, which was then supposed to forward it to HelpScout, but it never did. And so, I went in and looked and discovered that we had 77 refund requests over the course of a month and a half that had never been answered.
BRAD: Oh, boy!
JAMES: My stomach just sank.
BRAD: On the upside, we barely had any refunds.
PIPPIN: Yeah, we had no refunds for a month and a half! It was great! Now, thankfully it wasn’t quite 77 or so because some of those were duplicates of people saying, “Hey, I didn’t get an answer on my refund request. Here’s another one.”
PIPPIN: “Here’s another one.” But, we had 70+ refunds to go through, and we’re talking over the course of, I think, 75 days was the time period that this glitch existed and that we finally found it.
PIPPIN: And so, thankfully, we were able to resend all of those to HelpScout. We got every single one of them in there. But then we had to start going through. Usually we don’t process refunds out at 30 days. Now, this is a technical error on our part, so if we could process a refund, we’re going to process it no questions asked.
PIPPIN: But there’s some of these that we literally cannot process because PayPal won’t let us because PayPal limits us to 60 days. After 60 days, you can’t process a refund in PayPal.
PIPPIN: And so some of these, we have to go in and be like, “Look. I am so sorry. We have a technical error. I cannot process a refund for you. Please tell me how I can help you,” type of things.
PIPPIN: It was a bad day.
PIPPIN: That was all day, yesterday, was all we did. But I think it’s important to understand that this is something that can happen. Thankfully, we’re totally okay, number one, because I’ve always been very careful to make sure that we have financial cushions to make sure, if something like this happens, it’s not like, “Oh, now we don’t make payroll,” things like that.
PIPPIN: No issues like that, but it’s just: Here’s my shit story for anybody else who is experiencing something, and don’t do this.
BRAD: Yeah. Let’s say someone issued a refund request 70 days ago, and it’s through PayPal, so you can’t process it. Couldn’t you just send them the money through PayPal though?
PIPPIN: You could. Usually — I don’t want to say that that’s not going to happen because, in certain cases, I think we would just decide to do ahead and do that.
PIPPIN: But usually I would not advertise that you can do that.
BRAD: Right. Yeah, this is a pretty special case, right?
PIPPIN: It is a pretty special case. That would be a case where if somebody was–
What we did is we said we’re unable to process the refund, but we will happily give you store credit in the amount of your purchase, or we’ll work with you to resolve the issue that you had that made you ask for a refund.
PIPPIN: Usually we would just — most people would come back and, “Okay. I’ll take store credit,” or something. Now, if we had a case, which we actually have not had any yet. Now, some people haven’t responded to it yet, but if we have an exceptional case, yeah, we’ll probably just manually send them a payment.
PIPPIN: Yeah, so–
BRAD: Well, are you through it?
PIPPIN: So anyway, if you don’t get any refunds for a month and a half, and you have a lot of sales, pay attention. Something is wrong.
JAMES: We had that. You know, we had something similar happen. It wasn’t necessarily with conditionals. It actually had to do with–I think it was–a combination. I think it was mostly Mandril, to be honest. I think Mandril was the problem, but we had a bunch of emails that did not make it to our support system. It wasn’t randomized to any particular category.
PIPPIN: That’s what happened too.
JAMES: It was a lot of tickets, and we had went through, and we found them all. We created new tickets for them and reached out, but those things give my support guys a little bit of a heart attack, right?
JAMES: Like, oh, there’s however many, 50, 100 tickets over a course of a certain amount of time. That’s tough.
JAMES: Not that … refunds again, but–
PIPPIN: (Indiscernible) …pretty consistently for a while, and I think we tracked it down. Ours was also related to Mandril, I believe, which is interesting because usually Mandril is super great on making the delivery way more reliable.
PIPPIN: But for whatever reason, these were failing. We actually implemented a notice on the site. After you submit the form, submit it to HelpScout, we display a notice that says, “You will receive a confirmation. If you don’t get it, your ticket has not gone through,” basically.
We had people questions sometimes like, “Hey, I don’t know if my ticket went through.” We don’t want you to question if your ticket went through.
JAMES: The truth is, even if they didn’t get it, it’s like there’s no trust now to go and fill it out again.
JAMES: How do I know when you’re going to get that one? You almost want to say, “All right, and send us a tweet,” or….
PIPPIN: That’s actually how we uncovered the refund debacle. Somebody tweeted me and said, “Hey. I’ve been trying to get in touch with you for three weeks.” And I’d go, “Look. I have nothing from you. I’m sorry this happened, but we don’t have a ticket.” That’s when I started digging.
I was actually in the process of submitting a support ticket to the forms developers to say, “Hey, here’s my issue that’s going on. Here’s what I have. Here’s how we have it set up. This is a problem where it seems like every, maybe 5% of the time, it doesn’t go through.” Literally, as I was taking the screen shots, I read, “Field value, refund request. Conditional logic trigger, refund.” Crap!
BRAD: You guys know there’s this new thing called email too, right? People can send you messages through.
PIPPIN: Well, yeah.
BRAD: And it’s not Twitter.
PIPPIN: This is true. Actually, that’s where a lot of the times–
JAMES: I don’t like giving away my email address.
PIPPIN: We give away our support email, and that’s where we actually found out about the problem a lot of times was because somebody wouldn’t hear back, and so they would try to email us directly, and then we would look it up. Anyway, all right, James. Let’s talk about WP Ninjas.
JAMES: All right, let’s do it.
PIPPIN: All right, so I have no idea where we ended last time. I know we heard all about the company. We heard all about the products that you guys have been building: Ninja Forms, Ninja Demo. Why don’t you walk us through maybe some of the highlights of the last six months or so? I believe you’ve hired a bunch of people. Is that right?
JAMES: Yeah. I would say, in the last six months–let me see. Let me do the math–we have probably increased revenue somewhere around 50% to 75%.
JAMES: We have hired about — I think right now we’re at ten people.
PIPPIN: Wow! All full time?
JAMES: All full time. Well, actually, no, because our CFO is kind of an advisor CFO. He’s not on payroll. He’s a good friend of mine, and so he’s got other work that he does, but he does kind of step in and kind of help us as we talk through some of our financial decisions. He’s got a lot of business and finance experience, so he’s helpful in that regard, so nine full time staff members.
PIPPIN: Cool. How are those broken up: some support, some development, some marketing?
PIPPIN: What are they?
JAMES: We have three full time support people. We have, of course, my business partner who is our CTO and does obviously a great majority of our development. We have two other developers. One is full time in the office, and the other developer is actually in the Air Force currently deployed in Afghanistan.
PIPPIN: That’s … side gig.
JAMES: Yeah. While he’s in Afghanistan, one day he’ll be on a plane. He’s a loadmaster, so he’ll kind of help load up the planes and get everything secure, fly with it, unload it, transport stuff back and forth. He’ll spend a whole day doing that, but every other day he’s just kind of at camp and nothing else to do.
So, every other day he’s working and developing, working on whatever stuff we assign him, and kind of trucking away that way. He’s doing that. Eventually, the goal is, he’s going to be moving back here, and he’ll be in the office. But for now, while he’s deployed, we’re working with him.
BRAD: Great. I just want to put one thing in perspective here. We haven’t talked to you. Episode 13, when we talked to you and Kevin, that was February 2014.
PIPPIN: Oh, wow!
JAMES: Yeah. That sounds about right.
BRAD: It’s been, like, a year and a half.
JAMES: It’s been a year and a half.
PIPPIN: I was thinking it was months.
JAMES: I was thinking six months. Then a lot more has changed.
BRAD: Maybe we should back it up a little bit more and find out. When did you guys even hire employee number one? When would that have been?
PIPPIN: Yeah. Thinking back, I don’t think you had an employee yet. I think it was just the two of you.
JAMES: Yeah. You know what? You’re right. Did you say January or February of 2014?
BRAD: February 2014.
JAMES: February. Yeah, so in February, at that point, I think, if I remember correctly, Kevin had been visiting and hadn’t fully moved back. He was still in the U.K., and so he was still over there. We hadn’t hired anybody at that point, so it was just me and Kevin kind of trudging away.
I had actually just gone full time. I had just been full time in February. I had left my job December 31st of 2013, so I had just quit.
PIPPIN: I want to put this in perspective for anybody who didn’t catch this. In a year and a half, which is when we talked to you guys last, you had just gone full time and Kevin was still part time. You were living on two different continents.
PIPPIN: Really not yet running the business full time. Since then, you have hired–
JAMES: Working out of my home too.
PIPPIN: You are both here in the States. You have a full office. That’s awesome! Well done, sir.
PIPPIN: Well done.
JAMES: When you say it like that, man, a lot has changed. I think sometimes when you’re so close to your business and you’re just trucking along trying to do what’s right by your customer and do what’s right by your staff, you sometimes lose perspective of how rapidly things can change.
JAMES: Yeah, it’s a little bizarre when I hear it back like that. Yeah, in that amount of time he moved back. From the beginning, we worked out of my house. I just had a room that I had set up as an office. We worked out of there. Then we hired our support person. August 1st of 2014 is when they came on. August 1st of 2014, we brought our support person in, and they came in. He came also because we’re all in the same town. It seemed silly not to work together, so he would just come over to my house in the morning, and we’d all just work out of my little home office, and it was getting crowded. We were just uncomfortable, so we decided to go find a space to rent for the three of us, and we rented space.
BRAD: Kevin kept hitting my elbows as I was typing.
JAMES: That is true. It was tough. We found a space for like $800 a month. It was pretty beat up. It wasn’t, like, a really glamorous space, but it worked for us, so we kind of moved in there. We moved in there pretty much, yeah, August or September of 2014. So, right after we hired Zach, we moved into that space. Then in May of this year, we moved into the space we’re in now, so yeah.
PIPPIN: That’s impressive. Clearly things are going well.
JAMES: Yeah, yeah.
PIPPIN: We all love to hear the success stories, hear what’s going well.
PIPPIN: I want to know if there are certain examples you can share what didn’t go well. What kind of challenges did you run into, whether it was with hiring, with revenue, with growth, with management? Any challenges that you would like to share over this pretty awesome process over the last year and a half?
JAMES: Sure. I probably could think of a few, right? From the hiring perspective–and I don’t think this is necessarily a bad thing– I feel like we broke all the rules as far as hiring, at least in the early stages. Kevin, my business partner, we’re like best friends. They tell you never to go into business with your best friend because you’re going to ruin your relationship and the business isn’t going to work out the way you think it’s going to.
It seems to work for us. Our dynamic together works out really well. Then when we hired our support person, he happened to be a friend of ours already. He was working. He was actually up in Illinois working as a support tech for Amazon at their warehouse up there. We kind of took him from there and had him join our team, and he moved back here. And so we hired another friend.
The trouble we had with hiring too–
BRAD: You guys have huge balls poaching from Amazon.
JAMES: I know, right? Well, it’s funny because our second person was an Apple support person. He worked from home and was working for Apple. All of our support people are, I feel like, well trained, topnotch, Amazon, Apple. Our other support guy worked as the administrative tech specialist for … University, which we’re right next door to. He handled all special events for technology, so graduations, registration. All that stuff, he handled, as well as pretty much the entire administrative computer systems and networking and all that stuff. He was our third support hire.
Yeah. The other challenging thing with that is none of our people were WordPress people. We didn’t hire people who knew WordPress. As a matter of fact, none of our people knew WordPress. Not one of them, actually, now that I think about it.
We have to train them on WordPress. We have to train them on Ninja Forms. We have to train them on everything that we’re doing. But the thing that’s made us strong, I think, is we haven’t had to train our developers on development, and we have not had to train our support people on support. They know those things really well.
PIPPIN: It’s a lot easier to train someone on how to use software as opposed to how to do their job.
BRAD: I have said this in the past as well. The poster boy in the WordPress space of this is Andrew Nacin, right?
BRAD: He came from Python. He had a Python background before he got into WordPress. I think there are plenty of examples of that as well. Yeah, it makes so much more sense to me to hire someone who can learn really well. They have other attributes. They don’t know WordPress, but who cares, right? They could learn that in a weekend or over time.
PIPPIN: Especially if you’re talking people that are, say, under the age of 45 or so usually are going to be pretty well versed in computers and tech, in general. How often do you pick up new pieces of software and just start using it? It’s not like that’s a hard process.
PIPPIN: Teaching someone or training someone on the software that you use or develop isn’t the big deal. But if you have to teach someone how to be a developer, or you have to teach someone how to be a customer support rep, that’s much more difficult.
JAMES: Yeah, absolutely.
BRAD: I agree with you, James, though. It does seem like it kind of goes against the rules, right? You see so many job postings out there for WordPress developer or WordPress support person or whatever.
BRAD: But you’re really just looking for a support person.
JAMES: There are things to consider from a business perspective. You have to understand that when you bring those people on, you are not going to see the productivity that they can add to your team sometimes for months into the future. It’s not that they won’t have any productivity. It’s not that they’re not going to solve any problems, but you’re not really going to see the full potential of that position for months. It’s an investment in the front-end.
PIPPIN: Right, and sometimes that’s kind of hard to swallow.
PIPPIN: Whether it’s hard to swallow financially or not, but as the person that is writing their paycheck or signing off on it, that can be difficult.
BRAD: Yeah, or the person tutoring them, right?
PIPPIN: Yeah, absolutely.
JAMES: Yeah, and that’s why whenever I hire, my hiring perspective is, really, I am hiring for attitude first, aptitude second, skill last. I feel like skill I can teach, or one of my people can teach depending on the area. But attitude is supremely important. If somebody can be a team player, can jump into the culture of the group and be humble, those are the things that I’m looking for.
Then aptitude is just the ability to pick up things quickly. They don’t have to get it right immediately, but just the ability to say, “Okay. Once I make this mistake, I’m generally not going to make it a second time.” That kind of thing is what I’m looking for. I don’t care if people make mistakes as long as they don’t make the same mistake repeatedly.
BRAD: I love that. That’s probably my favorite thing.
JAMES: Okay then. I will say for us, for hiring, one of the challenges for us is figuring out. I had never had to hire anyone before, so the dynamic of how does that work in the interview process. What am I going to need to figure out in that interview to figure out whether they’re right for our team? How do you phrase that offer?
We offered a few people some offers to work for us who didn’t end up taking it. One person, because they were just really happy in their current position, and so we were really trying to poach him, and they decided they didn’t want to come. The other person, we gave them and offer, and they went back to their employer and told them what the offer was, and they offered him more. We weren’t willing to go any higher than that, and so they didn’t end up taking the offer. Kind of figuring out that dynamic of when, where, how, how do you handle all this, was a little bit of a learning process for us.
BRAD: Yeah, I bet. What’s your pitch to potential people that you’re hiring? What are the kind of values or what are the things that you’re offering that people would value?
JAMES: Like the kind of benefits where we say, hey, here’s the benefit of working for the WP Ninjas?
JAMES: It’s interesting because, you know, because we’re small, we don’t really have a benefits package per se. We have to talk a lot more of lifestyle benefits.
JAMES: It tends to be what we pitch. We don’t work an eight-hour day at the office. Essentially, we work, I guess what we would call, a seven-hour day. You can do whatever you want for lunch in there as far as how long you want to take. I don’t care if you take two hours for lunch. As long as you’re giving me about seven hours a day, I don’t really care.
We have remote workers, but we do have what we call flexibility for remote. One of our guys today had a situation with his son and just wanted to go home and work from home. It was just easier for that situation, and so to have that flexibility, that’s a huge lifestyle benefit. I don’t have to be in the office. I can do this somewhere else.
The freedom. I know, for us, we kind of take this thing for advantages as kind of business owners that we can kind of make doctor’s appointments whenever we want. We don’t have to flex time or take time off. But, for the general people that we ere hiring, those were huge things, like, “Oh, you mean I can just make a doctor’s appointment in the middle of the day and it’s not going to be a big deal?” Yeah, go do that.
There are things like that that I think are lifestyle benefits that we have. Now, we’re working on retirement packages and figuring out what retirement looks like and what health benefits might look like. We’re obviously researching that and, as we grow, we have no choice but to look into those things. But we want to create those things.
We’re also exploring kind of a success sharing program to kind of reward everyone kind of equally for the work that’s getting done when we hit certain milestones or certain goals that we’re trying to obtain for the year. There are several things like that that we offer as far as benefits. Plus, I feel like, in our area — so median income in our area is $30,000. It’s really low, so we’re able to offer quite a bit, you know, generally quite a bit above that. For even our basic support position or even for our junior dev, we’re able to pay them more than what they would make in their previous positions.
PIPPIN: That’s awesome.
BRAD: You said one of your employees was located in Illinois. Did they move back?
JAMES: Originally, yeah. Yeah, they moved back, so we were talking to them. We knew we needed somebody for support, and it was just Kevin and I. I did most of the support, where Kevin did more of the technical stuff that needed to be taken care of. But we were seeing a trajectory where, if we don’t hire soon, we’re going to get buried, and we’re never going to be able to progress at all.
He had been talking. Kevin had been talking to Zach, who was up in Illinois, back and forth for some time. Kind of reached out to him, and he was looking. He was actually looking to move back. He wanted to get back. He had family down here, or his wife had family down here. They just had a new baby girl, and he was like, well, we’d love to be closer to them. It just kind of worked out where, like, okay. Well, we can give you a position if you’re looking for it.
BRAD: Yeah. The stars aligned there, didn’t they?
JAMES: He’s been stellar.
JAMES: Yeah. It was totally perfect, and he’s been stellar. He has dramatically improved. What’s funny is, and we don’t think about this from a support standpoint as often as we should, but our support team impacts our product more than anything else, more than our development. The developers, in a lot of ways, work for our support team.
PIPPIN: Let’s be perfectly honest here. Your code could suck as long as you have great customer service.
JAMES: It’s true. It’s true.
PIPPIN: Customers don’t care what’s underneath. They just care that it works.
JAMES: Yeah. Good support can cover a multitude of sins when it comes to code, so there’s definitely some truth to that. He’s done great there. But, not only that, he is actually — as developers, you know we have a tendency of getting into the, you know, the Apple, “You’re holding it wrong,” mentality.
A customer comes to you and says, “Hey, this is really confusing. Why do you do it this way?” And you’re like, that’s just the way it makes sense. You’re holding it wrong. You do it this way, and that will solve all your problems.
Being close to the product for so long, I think Kevin and myself regrettably started to fall a little bit, not completely, but a little bit into that role. Bringing fresh eyes like Zach, who was dealing solely with customers and not knowing anything about the code, would use the product based on the way the customer was questioning it, and would look at it and go, “This is jacked up. Why are we doing it this way?” and would challenge us then to say, “Okay, well, we need to fix this because it’s increasing our support.” Just by making this small tweak, we could probably get rid of who knows how many countless tickets.
PIPPIN: We’ve been seeing a lot of that recently with two of our main support guys that have been really, really great about beta testing. Not just beta testing, but also using it and looking at the customer’s issue and analyzing not just what is the answer, like, how do you get past it, but why did they even have this question in the first place.
PIPPIN: If we have this question a lot, it’s probably something we have done wrong or something we can improve.
JAMES: Yeah, and he challenged us, so the same thing, right? We would say that, and he would come to us and say, “Why are we doing this?” My answer has always been, “Well, we just need better documentation then.” And his response was, “No. We need a better product.” If your answer is better documentation, it might be that the way you’re doing it is just wrong. If you can fix it so the documentation is unnecessary, how much better is that?
JAMES: That’s been a challenge for us.
BRAD: That’s like the band-aid. Documentation is the band-aid.
JAMES: It is. It truly is.
PIPPIN: But I think we should make clear that that does not mean the documentation is not worthwhile.
BRAD: That’s true.
JAMES: That’s true. No, absolutely. I mean you need documentation, but I think all of our goals, right, is we want our software to be — and I will be the first to admit that our software is not this way in most areas, but you want your software to be so easy that when somebody installs it, it’s just intuitive. They just know what to do first and what to do second and what to do third.
JAMES: Trying to get that and making those adjustments, especially when you have this huge thing that lots of people are already using and are accustomed to using it a certain way, and then you’re trying to improve it for the lower end. The lower end user may not be as adept or new to your product, it’s challenging.
PIPPIN: Yep, definitely. Wow. James, you guys are doing awesome stuff. It’s been really fun to watch. I feel like I’m in this privileged position of having known you guys from pretty early on and being able to watch how you’ve gone from zero to 100. It’s pretty cool to watch, so congratulations on the success.
JAMES: I really appreciate that. You’ve been a super help to us. We consider you an extremely closer friend, not just in business, but obviously you have helped us a lot in business. We’ve followed you for some time, and a lot of the decisions that we have made have been through discussion with you and figuring out what’s been working with us and what’s working since we have such similar business models. The fact is, we have the business model we have because of Easy Digital Downloads.
PIPPIN: Let’s be fair here. I borrowed it too.
JAMES: Certainly, certainly, but it’s funny because when we came into it, there were only a few people doing it. It was an untapped resource as far as a business model was concerned. When I came looking at it, it was you and WooCommerce and Jigoshop. Mostly e-commerce solutions were doing it like crazy.
To see that working was really instrumental in where we are today because, had we not made that switch. I hold a lot of our success single-handedly to the add-on business model. Now, we’ve done lots of things, other things that have helped us kind of keep that trajectory, but I don’t think we would have even gotten off the ground if it wasn’t for that business model.
PIPPIN: It’s cool to see when drastic changes have really good effects.
PIPPIN: Before we wrap up here, James, do you have any questions for us or anything else that you would like to throw out?
JAMES: Hmm. Questions for you guys? No, you know, I don’t. I will say this. I definitely would love to follow up with you guys in the future as far as it pertains to Ninja Forms. We’re getting ready to do a pretty big UI/UX overhaul. I think we’re doing something fairly unprecedented in the sense that we have hired a company that does amazing user experience and user interface design to help us kind of rethink what it looks like to build a form from scratch.
When they first came to us, when we first came to them and they came to us with the first kind of deliverable on it, it was very much kind of almost it was a clean and well designed re-skin of the way pretty much every form builder looks. You guys have used, I’m sure, several of them, and so you know every form builder looks essentially the same. Little tweaks, little minor differences, but they essentially look the same.
We went back to them and said, “Hey, if you guys were building your own product, your own form builder, what would it look like?” What they’ve come back with and the discussions that we’ve had back and forth and our input, it’s something that’s really very, very different.
PIPPIN: I can’t wait to see it.
BRAD: That’s very exciting.
JAMES: I’m really excited to show it to you guys and get some feedback. I’m sure we’ll put out some betas and some demo sites for people to kind of kick the tires and give us feedback on it, but I’m really excited to see how this shifts because it’s a big investment of time, but it’s also almost–and this part is what Kevin hates is, in a lot of ways–a rebuild of the entire plugin because it requires so much change.
JAMES: It’s challenging.
PIPPIN: Which can be challenging, especially when you have other people that are extending it.
JAMES: Yeah. There are some things that are scary. I know you guys are huge advocates of backwards compatibility, and it’s so important. We’re now at the point now where we’re like, “Oh, I don’t know how we do that. In this new format, I don’t know if that’s even possible.” Now we’re trying to figure out how do you break backwards compatibility, but do so in a way that assists the customer through that process painlessly.
BRAD: Is if off the table then to just call this thing a new product, a separate product?
JAMES: I think we’ve really established our brand pretty well at this point. I would kind of hate to change that direction and lose that brand on it. Yeah, we’ve made–
BRAD: You could call it, like, Ninja Forms Plus or something.
JAMES: That is a possibility, but when you put so much sweat equity into a product and a brand. We have anywhere between 200 and 300 [thousand] active installs, which I would hate to now lose.
JAMES: Yeah. Did I say something different?
PIPPIN: You said 200 to 300.
JAMES: Yeah. We have 200, 300 active installs. It’s pretty impressive. I’m pretty happy with that.
PIPPIN: Slight difference.
JAMES: Yeah, between 200,000 and 300,000 active installs. I think, for their sake even — it’s not even just for the sake of breaking off or ruining the brand. I think, as a customer, you want to stay where you’re at. You want to stay with the brand that you’re at. You don’t want to feel like you’re kind of shifting gears, so we’ll figure it out. I’m sure we’ll do something.
BRAD: Yeah. No, I hate it. I hate it when a product that I’m using, they just spin off a separate product that’s almost identical, but has a new UI or something.
PIPPIN: It’s not a very good customer experience usually.
BRAD: No. I like it when they update the product and looks so much better and more awesome, and I haven’t had to do anything. That’s what you want.
JAMES: That’s what we’re working towards. I think one of our solutions to that may be almost having a dual code base.
JAMES: If you have old add-ons that don’t support the new UI, we’ll just serve you the old UI until you get everything updated, and we’ll put notices in there and say, “Hey. If you want to see all the really cool new bells and whistles, then you need to update these add-ons,” and whatever. I think there are some ways that we can get around it. It’s just a painful process.
PIPPIN: Yep, definitely.
PIPPIN: Look forward to hearing how all of that works out in the next six months, month and a half, in a year, whatever your timeframe is. Maybe we’ll have to get you back on here for a third iteration.
JAMES: That would be awesome. I’d really enjoy it.
BRAD: Where can people find you, James, online?
JAMES: You can find me on Twitter, @JamesLaws. You can also find me on my website, JamesLaws.com, which hopefully will start getting more content here in the future where I try to blog a little bit about business and things that we’re learning as a company. On, of course, WPNinjas.com or NinjaForms.com or @WPNinjas on Twitter.
PIPPIN: Thanks so much for your time, James.
JAMES: Thanks for having me. I appreciate it.
BRAD: Thanks, James. See you, everybody.