June 7, 2016

Apply Filters
Apply Filters
Episode 62: Custom Content, Managing Expectations and EDD 2.6 Imports

We would like to thank today’s sponsor, Network Solutions. Their product, Secure WordPress, is a managed hosting platform with an emphasis on security. The program keeps plugins updated, performs daily backups, provides malware scanning and removal, and comes with expert tech support, which is available 24/7. You can find more information at getnetsol.com/applyfilters.


In today’s podcast, we talk about what’s new for Brad and Pippin, and we also talk about some topics relating to hiring and project management.

Brad’s Update

Brad just got back from Bacon Biz, a very small conference on business education held in Philadelphia. The speakers were great and he learned a lot. One major takeaway is that he should be promoting his product more to already-subscribed members right on his web page, instead of including the “subscribe” link. He will be using Drip to customize these pages based on whether the reader is already a customer.

He also found out that Datahawk is not trademarkable, as the name is too close to that of another company’s product. The name is changing, and it will be announced in a blog post soon. In other news, he is still in the hiring process for a web developer.

Pippin’s Update

Pippin pushed out the beta version of EDD 2.6. He talks about the major new features of the update, which include a new importer, multiple-email support, and support for processing refunds. He’s hoping to speed up the release cycle for new versions to once every three to four months, instead of once every six months, and is making progress toward that goal.

Some of the topics discussed include:

  • The importance of managing expectations when it comes to both clients and hiring new team members.
  • Pippin discusses his milestone strategy to optimize his project management.
  • How Brad and Pippin use GitHub to handle and track issues and feature requests as they come up.

Links and Resources

If you’re enjoying the show we sure would appreciate a Review in iTunes. Thanks!


INTRO: Welcome to Apply Filters, the podcast all about WordPress development. Now here’s your hosts, Pippin Williamson and Brad Touesnard.

PIPPIN: Welcome back to Episode 62 of Apply Filters. Today, Brad and I go over some of the recent things that we’ve been working on, some recent developments, projects, et cetera. But first, a word from our sponsors.

BRAD: I registered my first ever domain name in 1999, 17 years ago. Back then there was one place to register domain names, a company called Network Solutions. Many of you probably already know this, but did you know that Network Solutions also has a WordPress hosting platform? They do.

It’s called Secure WordPress. It’s a managed WordPress hosting platform with an emphasis on security. They automatically keep WordPress core and your themes and plugins up to date. They have daily backups. They provide malware scanning and removal. And, they put your site behind a data center class firewall to protect against zero day hacks and DDoS attacks.

They have expert tech support available 24/7 via chat and phone. Network Solutions takes care of keeping your site locked down and up to date, so you can focus on your business. Visit GetNetSol.com/ApplyFilters today to get started today. And now back to the show.

PIPPIN: Okay, Brad. What have you been up to?

BRAD: Well, last week I just got back from BaconBiz, which is a conference for–

PIPPIN: If you eat a lot of bacon?

BRAD: No, it’s bacon as in “bring home the bacon.”

PIPPIN: Ah, that makes sense.

BRAD: It’s a business conference, and “conference” is not a really good word for it because it’s only 60 people. It’s a very small conference. It was in Philadelphia.

It was just great. Because it was a small conference, you kind of got to know everybody. They had really great speakers.

PIPPIN: How small is small? Are we talking 50 people, 100 people, 200 people?

BRAD: No, 60, 60 people. Yeah.

PIPPIN: Oh, okay. Awesome.

BRAD: Yeah, it was very small. It was put on by Amy Hoy and Alex Hillman, who do quite a bit of education around bootstrapping your own business and that kind of stuff, so definitely check them out if you’ve never heard of them.

PIPPIN: How did you get connected to this? Was this just something that you came across and decided you wanted to go? Was this an invite only kind of event?

BRAD: No, it wasn’t invite only, so anybody could register through the site. If you were on their email list, then you would get the invite through there, and anybody can join their email list, as far as I know.

I think I’ve heard about it through maybe a tweet or something. I’ve known about Amy for a while. She goes to MicroConf in Las Vegas, and so, yeah, I’ve known about what she’s been up to in terms of business education and stuff for a while.

I’m not really sure exactly how I found out about it, but awesome, nonetheless – some pretty big takeaways. I’ll share one with you if you’re interested.

PIPPIN: Yeah, I’d love to hear it.

BRAD: One thing I’ve known for a while is that we should be doing more with Drip, which is our email marketing system that we use.

PIPPIN: More in terms of, like, automated workflows, followups, up-sales, and things like that?

BRAD: Kind of. There’s something — when you click on an email that I send you, there’s a little ID attached to that URL. So, when you get back to our site, there’s a little piece of JavaScript that reads that ID, so it knows. It knows that you’re a subscriber. Right?

PIPPIN: Right.

BRAD: But yet, on every blog post, we just show you an opt-in form anyway, right?

PIPPIN: Even though you already know that they’re subscribed.

BRAD: Exactly, which is ridiculous. We should be showing, promoting our products there or doing something useful in that space.

PIPPIN: Right, because there’s no reason they would have to see that subscribe form again.

BRAD: Yeah, exactly. At the very least, we should just get rid of it so at least they’re not seeing it again. But, I also took a look at our stats, our Google Analytics. And, although our traffic is six times what it was last year at the beginning of 2015, the traffic to our product pages has not increased at all. It’s about the same the whole time, so what does that tell you?

PIPPIN: Your traffic is increasing from the blogging that you’re doing and the emails you’re sending out, but you’re not seeing much of that traffic carry over to products.

BRAD: Exactly.

PIPPIN: Is that kind of what you’re thinking?

BRAD: Exactly. They come in through Google, read what they need to read, and then they leave. They never see anything else. Yeah, we need to do a much better job of getting those people to see our products as well.

PIPPIN: You’ve obviously identified this kind of issue because, if you could get even a third of that new traffic over to the products, you might dramatically increase your conversion rates. Do you have a plan in mind for what you’re going to do, or have you already done it?

BRAD: Well, we’ll be using Drip because, in addition to knowing they are a subscriber, we tag anybody that’s a customer. All that information is inside Drip, so we can customize the blog page, the single, like an article page. We can customize that based on if you are a customer of Migrate DB Pro or you’re not, so maybe show you Migrate DB Pro in place of an email opt-in, right?


BRAD: That kind of thing. Brennan Dunn was talking about that and how he’s done that, and it’s been very effective for him. He does Double Your Freelancing Rate. I think that’s his educational product. Anyway, he’s optimized the heck out of his website, and this is one of the things.

It just really pushed me. I’m like, uh, I’ve got to do this. It’s kind of ridiculous that we’re not doing this.

PIPPIN: Yeah. As we have all of this data, user tracking has gotten significantly more powerful than it used to be. It is kind of silly now that we still have so many static pages on our site that we show it to everybody the same way regardless of who they are, what they’ve purchased, what they haven’t purchased, where they came from, et cetera. I think that you’re spot on that if we can start tailoring those pages to who that person is, we can have probably some tremendous success with it. I’d love to hear how the results turn out for you in three months.

BRAD: Yeah. Yeah, we’ll see what happens I guess.

PIPPIN: Hopefully it might not even take three months.

BRAD: It could be immediate. Yeah.

PIPPIN: If you guys already have that traffic, it might be something that if you make that change so that, let’s say, you show product details instead of or do an up-sell, documentation, or something, that might be something that you can see the next day, two days later, or three days later, even.

BRAD: Yeah. Yeah, absolutely. It’s one of those things you put off, and you don’t really recognize the value until someone points it out to you at a conference.

PIPPIN: Right.

BRAD: And really shows how well it’s working for them.

PIPPIN: That goes for just about anything that we do. Almost everything, I think, that we learn as we’re building products, services, companies, or even just development skills or life skills comes from somebody else showing us, so that’s great.

BRAD: Yeah. Another thing that’s been going on is I’ve been kind of depressed about our branding. A couple episodes ago, we talked about Data Hawk, our new product that we’re working on. It turns out Data Hawk is not trademarkable. There’s another company called DBHawk, which has a database tool, and that’s just way too close. We’d never get a trademark for Data Hawk. In fact, that other company might sue us for invading their territory.

PIPPIN: What are you going to do about it?

BRAD: We’re renaming it to — maybe I shouldn’t say yet. We haven’t even got the branding done.

PIPPIN: Maybe you should get your trademark and then say it.

BRAD: You know what though? You can’t register a trademark until the first dollars, until you start.

PIPPIN: You have to have proof that it’s actually being used.

BRAD: Commerce, yeah.


BRAD: Yeah, so it’s a chicken and egg problem, right? You announce what your branding is and then someone comes along and starts selling a product with the same name. I’ve got a sour taste in my mouth, so I’m going to keep this to myself for now. We’ll be launching a blog post that introduces the product and stuff and our new branding and everything.

PIPPIN: How close do you think you are from launching? Is this a month away? Is it still six months? Is it a week?

BRAD: We ran into a bit of a hiccup, and we had to expand the scope. It’s something that we knew that we would have to do eventually, but we’ve realized we have to do it now because not doing it makes it look like the system is buggy, so we don’t want the system to look buggy the first time people use it. We’ve expanded the scope. We’re going to probably be probably the end of–what’s next month? July–probably mid August now is when we’re aiming for….

We’ve got Vienna coming up this month, later this month, so we’ve got a week where we’re going to be on holiday, essentially, a working holiday. Yeah, somewhere like late July, early to mid August, something like that. Hopefully. Things do come up, as you know.

PIPPIN: Yep. It’s getting closer though.

BRAD: It is. It is. I mean we were hoping to launch at the end of May is what we were saying a couple months ago. Then this roadblock came up, so it happens.

Another thing — well, I think I mentioned this before that we’re hiring, still. We’re hiring a product developer.

PIPPIN: You’re always hiring.

BRAD: I’m just going to keep saying it until we’re not. What’s interesting, though, is that I had a chat with my team about our hiring. We bring a lot of people on trial that don’t work out. And so, we were kind of trying to figure out like maybe if we could kind of increase our success rate. I think our rate is probably like one in five right now, so we bring five people on and only end up hiring one. That’s not a very good success rate, and so we’re trying to get it to maybe like one in three or something would be great.

PIPPIN: Why do you think the success rate is low? Is it just being willing to take on people before they’ve kind of proved themselves through the application process, so like an actual trial by fire type of thing? I’m not entirely sure that is a low success rate.

BRAD: Yeah. Yeah. Well, I’ve talked to a number of people. Ryan Sullivan over at WP Site Care also has a similar success rate, and so it’s not uncommon or at least one other person has the same success rate. I don’t know if it’s a bad success rate or if it’s just the norm, but we’re going to try to make it better anyway.

The job posting, I had “advanced programming skills” as the requirement. What we decided is maybe that should be a bit more specific because we were getting people with all kinds of different backgrounds. We’re now saying “advanced PHP MySQL skills,” so you have to at least have experience in PHP MySQL so that, when you come on trial, you’re not coming from a C++ background, trying to learn PHP MySQL and WordPress, and prove yourself. It’s just too much.

PIPPIN: Right. You don’t want to offer a position where somebody is going to come and learn the skills for the job. Maybe they have similar, but they need to already come in with those skills so that you are teaching them the product and maybe your platforms that you work on, not the languages that you work in.

BRAD: Yeah. I think it was just too hard. It’s just too much of a time crunch for people to come up to speed from no PHP MySQL skills to learning that, plus WordPress, plus the way we work. It’s just too much. The people that have been successful have generally had advanced PHP MySQL skills, and it was just a matter of them maybe learning WordPress. Maybe they already had WordPress, but also fitting in with the way we work and stuff.

A couple of other requirements we added were: you must welcome criticism and you must genuinely want to grow as a developer.

PIPPIN: Those are great requirements.

BRAD: Yeah, and those, we don’t take those lightly. It’s very apparent if you come on trial with us and those things are not true. We wanted to put that right up front. Also, values consistency and is willing to adapt to new coding style standards and tools.

We’ve had people come onboard that liked to do things their way and don’t really like changing, don’t really like switching over to the way we do things. That’s a big problem, right? You have to be speaking the same language when you’re working on a team because it’s just way too hard otherwise.

We added those things, and hopefully that’ll help. If you have a full-time job and you’re also doing a trial with us, it is really, really hard. You imagine working 9:00 to 5:00 and then coming home, and then putting in two or three hours with us. That’s just–

PIPPIN: It’s going to be hard on them. It’s going to be hard on you to figure out how are they actually going to be if they’re here full time.

BRAD: Right.

PIPPIN: Yeah, that’s hard.

BRAD: I mean there are also weekends. Some of the trialees work on weekends, so they do evenings and weekends. But, doing evenings and weekends while working a full-time job is still really hard. And so, what I’ve done is there is no way around it, though, unfortunately. I don’t know. I can’t ask somebody to quit their job and then come on trial with us. That’s not realistic unless, for some reason, they’re comfortable with that or whatever. They really hate their job or something. But, so far that hasn’t happened.

What do you do? I guess what I’ve done is I’ve set expectations. I really, really emphasize how hard it is because a lot of the trialees that we’ve had cone onboard, they last three or four days, and then they’re just like, “I can’t do this any more. It’s too hard.”

If you set the expectations upfront, it kind of prepares them for the next three weeks. I mean I emphasize this. I say how hard it’s been, how many people have dropped out because it’s so hard, and you should talk this over with your wife, your spouse, or whatever.

I think it’s helping a little bit. I’ve only tried it a couple times, so I don’t have a whole lot of data yet. But, yeah, hopefully we’re making our hiring process a little bit better.

PIPPIN: Back when I was freelancing and doing client development, I had a long-term client that we had an agreement, and we did projects every month, basically. They were almost always rush jobs for corporations, primarily in New York City. He always had a saying. As the project manager, he would tell me, the developer, “Help me manage the client’s expectations. Just tell me what I need to know so that I can manage their expectations.”

In any kind of relationship, whether it’s client to developer, developer to product owner, or developer to developer, I’ve decided that that is absolutely key. Missing the deadline or having something change scope are all things that can be easily managed. Having hours that are different, that are weird hours or inconsistent, or you’re going to be off for a few days, all of those are things that you can easily deal with if you manage expectations. And so, I think you’re spot on there about, in this trial period when you’re here, let me tell you just how hard it’s going to be because I want you to know that this is what we’re going to expect because we need you to prove it, so let me manage your expectations upfront so that there’s no question about it from either direction.

BRAD: Yeah. Yeah, managing expectations is so important. I can’t remember where, like at what point I understood that, but I know, like while I was freelancing, I did a pretty good job of managing expectations. I probably got better at it as I went along, I’m sure, because, when it comes to clients, if you don’t manage client expectations, things can go sideways pretty quickly.

The other thing I’ve been doing is project management on Migrate DB Pro. I’m just about–I don’t know–three-quarters of the way through the issues in GitHub. There were 182 open issues in GitHub, and I just went through them and tagged–

PIPPIN: 182? Man!

BRAD: Yeah, I know.

PIPPIN: I think you’re slacking, man. We’ve got, like, 500.

BRAD: Yeah. I’m curious. I’ll tell you what I did, and then you can tell me if you guys do something similar.

I don’t know how else to do this besides just one person go through them all and tag them or label them with any labels that are missing and then prioritize. We’re using priory labels, so priority:low, high, medium, and then bug if it’s a bug, new feature if it’s a new feature, so we use labels. Then we assign them to the milestone that we’re working on if it’s something we want to work on for this milestone that’s currently active. That’s basically what I’m doing. I’m just going through all those issues, doing that, and closing the ones that are irrelevant or whatever. Is that similar to what you guys do?

PIPPIN: Yeah, it’s pretty similar. It varies for us depending on which plugin we’re working on. For example, our three big, main plugins–EDD, RCP, and Affiliate WP–are all public repos, so we have issues that are open from users, community members, and other developers, as well as the ones that are open by our own team. And so, sometimes those get lost in the shuffle a little bit.

We do have a couple of kind of guidelines that we try and stick with. That’s, first of all, for every single issue, make sure it has the proper labels: bug, enhancement, et cetera. Every single issue should always be milestoned no matter what. It has to be milestoned because that’s what ensures that it gets looked at. A non-milestoned issue gets lost. Even if that issue gets punted to the next release, the release after that, or the one after that, that’s okay. But, at least it gets an eye on it if it has a milestone, so everything gets a milestone. Then, depending on the plugin, there’s usually somebody who kind of takes care of triaging those issues.

BRAD: Do you have milestones? Like, how far out do you go with the milestones, like how many versions?

PIPPIN: We usually have, at minimum, two major versions. Like right now, for example, we have EDD 2.6, 2.7, and 2.8, so that’s three. Affiliate WP, we have 1.9 and 2.0. Then, in Restrict Content Pro, we have 2.6 and 2.7 right now as the major ones. For major releases, I will set up milestones for three to five point releases after each major release because I know that, after a major release, we’re almost guaranteed we’re going to have a point release. That’s just the nature of how it works.

When I’m milestoning an issue, if it is a point release type issue and if we are approaching a major release, I will never milestone it for 2.6.1. I will always say, “Let’s go to 2.6.5, 2.6.4,” something like that, because I know, after a major release, we’re probably going to have two or three point releases within a few weeks, within a month or so, and we don’t want to be going through and punting a bunch of issues already. So, I just go ahead and prepare for having those point releases.

BRAD: We were doing something very similar to that. But, what I found happened, we would punt issues from, say, release 1.6 to 1.7. Then 1.7 would just keep ballooning. Then when 1.6 was done, we’d look over at 1.7 and it had, like, 80 open issues. You were just like, “Ugh!”

PIPPIN: Yep. We absolutely run into the same exact problem. We just were working on EDD 2.6 right now. We’ve got the first beta out. A few weeks ago, we looked at it, and we still had like 75 open issues, and we already closed 30 or 40 issues on it. Then we go through, and we just say, “All right, let’s start punting these. Let’s figure out which ones are not a priority, and we’ll punt them.”

It’s one of the reasons why I try to have two or three major releases further back, so we could say, “All right. Let’s try to limit the next major release to 30 to 50 issues. Then, if that one is getting full, let’s go ahead and start moving them to the next.”

I’m not as concerned about a milestone having 50 or 100 or even 200 issues on it as long as they’re milestoned because I know that at least we’re going to get an eye on it, and we’re just going to punt it. I don’t care if an issue gets punted for ten versions. I’d rather that happen than an issue not get looked at, at all, for two years.

BRAD: Right. Do you use priority labels?

PIPPIN: We don’t. We probably should. We have a label that is high priority, but we don’t have low, medium, high.

BRAD: Yeah. I just got kind of tired of the whole process of punting to the next milestone and then having that issue where you have to go through all the issues in that milestone again and punt those that shouldn’t be in that milestone. Then they get passed. It’s just like a never-ending cycle. And, what I find is that some of the issues that end up in later milestones, sometimes they should be promoted, but they may never get looked at until you finally arrive at that milestone.

What we’re trying–this is an experiment–is that we’re only ever going to have one major release milestone. There could be minor release milestones for fixes or whatever. That’s fine. But, only ever one major release milestone. Then all the other issues have priorities, so high, low, and medium. Then we just pull from that pool, that giant pool of issues.

Then you can look at how many high are there. There are probably only a few, so you pull those into the next release. Then you go to medium. How many of those can we pull in? Then you can just go down to the low ones and start pulling however many you feel is a good number for this next release.

PIPPIN: That seems like a reasonable way to manage it.

BRAD: We’ll see.

PIPPIN: We’ll see if it works. I’d be curious to know if that works great where you’re at, say, 80 open issues. If so, now does it continue to work if you have, say, 200 open issues.

BRAD: Or 500 for you.


BRAD: Yeah.

PIPPIN: I think the most we’ve ever had in EDD has been around 300. Right now, we have 244 in EDD that are open. I think Affiliate WP has about 150, and Restrict Content Pro is around 60 or 70.

BRAD: When you have, like, 80 issues in a milestone and you do need to punt, is that something you do, or does somebody else do that?

PIPPIN: Usually, for EDD specifically, it’s either me or Chris Klosowski going through, as the two project leads for it. Then, if it’s Affiliate WP, it would be me or Andrew figuring out which ones are going to go through. Then, with Restrict Content Pro, it’s me or John right now.

Sometimes it varies. Sometimes it depends on, does an issue, no matter how cool or important it is, is there anybody actually needing this fixed or wanting this improvement? There are a lot of things that are just really nice to have and, as much as you want them, may not need them.

I think one of your priorities should always be: What are we solving for the support team, how are we reducing those tickets, and how are we improving the overall customer experience? Is this something people are actually asking for, or do we just want to build it because it’s cool?

An example would be, like in EDD, I really want to build a Web hooks system so that we can fire off a Web hook to any remote URL after a purchase is made, when a sale is refunded, a file was downloaded, things like that. But, in the entire EDD history of four-plus years, we’ve only had three or four people that have ever asked for it. There may be a lot of use cases, and as cool as that feature is and, as a developer, I can think about all the cool things we can do, it’s just not a priority.

BRAD: Right. Yeah. Yeah, it makes sense to me. We found that Help Scout, it’s hard to identify what are the common issues that come into Help Scout, especially if you have a team of people. When it’s just one or two people in Help Scout, you kind of have a feeling for the issues you keep seeing and having to address. But, if you have three or four people in there, or more, then the feeling is different.

PIPPIN: Yeah. One of the things that I try to do, and each one of us is better at it or worse at it than others, and at different types of the month and year, et cetera, but is never be afraid to open an issue. If a customer has a problem, it’s 100% okay to open an issue and then close it 20 minutes later when you decide it’s invalid. But, we would rather have it be considered than just be like, “Eh, whatever.”

BRAD: Right. But, here’s the thing, though. That’s what we were doing. We were adding it to GitHub, and we still do that. The problem is, as issues come into Help Scout, they keep coming in, like the same issue or very similar issue. There’s no way to really keep track of how many are actually coming in, or at least I don’t know of a way.

We’re using a spreadsheet right now to tick up. We just have a counter for each thing that keeps coming up over and over again. We’re trying to keep a running total of how many people are asking for these things.

PIPPIN: When it comes to feature requests, we try and, like, if we get a feature request and we think that it’s worth considering at least, we’ll open a GitHub issue. Then we try and, any time that we get that request again, we drop a link to that ticket on the issue.

BRAD: That’s what we do too.

PIPPIN: Then we can go back and say, “Okay. We have 20 requests for this.”

BRAD: Yeah. That’s pretty good, but it’s impossible or it’s very difficult to tell at a glance what are your top issues, right?

PIPPIN: Oh, yeah. Yep.

BRAD: That’s where the spreadsheet comes in. Our spreadsheet has a count column, a column that just briefly describes it, and then a link to the GitHub issue.

PIPPIN: That’s nice.

BRAD: So that we can keep that running total. We just started this a few weeks ago, and we already have better visibility into what are the things that are coming into support that are problems that we could solve, decrease our support load, and help more of our customers.


BRAD: Yeah.

PIPPIN: I hope it works out for you.

BRAD: Yeah, we’ll see. I’ll let you know.

PIPPIN: Bring an update in two weeks.

BRAD: Yeah, for sure. What have you been up to, man?

PIPPIN: The first thing, and I just mentioned this briefly, is we just pushed out the first beta version for Easy Digital Downloads 2.6. We released this last week, I think, the beginning of last week. May 26th is when we pushed it out.

This is one of our major releases. We’ve been working on it for a while. Our last major release was in January, I think, so we’re approaching six months since the last major release. We want to try and speed up our major release cycles. We’d like to be about every three months, three or four months.

BRAD: You and me both, man.

PIPPIN: Yeah. We’re getting there. There are a few things that I’m really happy about with the 2.6 release. There are two major features. First is: We decided a while back that we are going to bring CSV importing for products and purchase records into the core plugin, so everybody has them. It’s not an add-on. It’s not in a separate plugin. It’s in core because so many people want it. So many people want to import their products, whether they’re coming from a different plugin, a previous store, that’s just how they’ve set up their products beforehand, what have you. We decided we wanted to bring CSV import to core.

We’ve had a CSV manager plugin for a while that did product import/expert, payment import and expert, and it’s always been a little bit lackluster. It’s had some issues. These are issues that we’ve known about, and we’ve kind of intentionally chosen not to address them because we’ve been working on bringing it to core.

One of the primary limitations of it has been that it would fail if you wanted to important, say, 500 products, or 5,000, especially like purchase records because it didn’t go batch processing. It all worked in single process and it would time out, especially on lower-end hosting accounts. That was one of the other problems that we wanted to address with this import, and we did, so it uses a JavaScript batch processor, and it theoretically could import thousands or maybe possibly millions of rows.

I’ve personally tested it with hundreds, and we’ll see how it goes. It’s actually the same batch processing API that we’ve now used three or four times throughout EDD, and it’s been pretty reliable for us. I’m pretty happy to have that in core.

BRAD: Do you think it’s going to help you guys out quite a bit, having people submit pull requests for bug fixes and stuff to this part of the code?


BRAD: Right.

PIPPIN: There are a few things. Number one, with it being in core, it’ll be a little bit easier for us to, number one, get additional eyes on it, whether it’s from our own team or from outside developers. It will also be easier for us to get support added to other extensions. If we had extensions that register custom meta fields, for example, make sure that those are supported for imports and exports – various things like that.

The performance one was a huge one for us. Another one, another big problem that we used to run into a lot was if you were running object caching. It just died because the previous importer relied on transients, and they didn’t quite work the right way with object caching.

BRAD: Yeah. I think this is a pretty good move business-wise, too, because people that might be hesitant about switching to EDD from something else, this removes that friction.

PIPPIN: Yes. We want to make it easier.

BRAD: Yeah.

PIPPIN: There are tons that we wanted to do. Number one, we want to make it easier for someone to commit to EDD, so they can say, “Awesome! They have an importer. That makes it so much easier.” Number two, we hope that that import experience is smooth and works well. We’ll see how it goes.

Right now, we feel like the experience is better than it was. It still has a long way to go to be awesome, but it’s better.

Next, it improves our end because, one, we have an easier adoption process for people, so our support experience is easier. Two, we remove the plugin, the old CSV manager plugin that was problematic and hopefully give everybody a better experience, so we have an easier time in support. Overall, I think it’s a good move.

BRAD: Does it support, like, some software — what is the software add-on called? I can’t remember.

PIPPIN: Software licensing.

BRAD: Software licensing add-on: Does it support that yet or no?

PIPPIN: Yes and no. In the purchase import, let’s say that you wanted to import a bunch of purchase records, and you wanted to go ahead and generate new license keys for each of those sales just so that they had a license key. Maybe they don’t have the same one they used to have, but they have a license key. That will work.

If you want to import an existing set of keys, that is not supported yet, but that is absolutely on the roadmap. We’re going to figure out how to do it because that is definitely something that we see people want to do. They’ve been running an EDD site for a while, or they’ve been running through a different e-commerce plugin, and they want to move all of their records from one site to another.

Perhaps they’re merging two sites together. Maybe they’re pulling one product out of a site and moving it to a standalone product. We wanted to be able to support that much easier, and that means bringing license keys with it. We would love to support all of our extensions, so license keys, commission records. Those are the two big ones, really.

BRAD: Yeah. Subscriptions, I guess.

PIPPIN: Subscriptions: That’s the other one. Yeah, that’s the second biggest.

BRAD: Right, right, yeah. That would be cool. Yeah.

PIPPIN: Now that it’s also in core, it’s easier for each of those extensions to hook into the important and export process as well. That’s the biggest feature. I guess there are three big features. The second one is we have now added in support for adding multiple email addresses to a single customer record.

Anybody who has worked in support or sales is probably familiar with a customer makes a purchase, and then they come back. They email support, and they use a different email address. Or, they make a second purchase. It’s the same person, but they use a different email address.

A lot of people have two, three, four, five, ten email addresses. Sometimes they have them all hooked into a single gmail account like I do. Then they send an email, and then you reply. Then they reply from a different email, but it’s still the same person, but now you have two records.

We wanted to help address that problem by adding multiple email support to customer records, and so we’ve done that. You can now have secondary and tertiary emails.

BRAD: Right. That’s awesome.

PIPPIN: If you purchase with any of those emails that are on your record, it will attach it to the proper customer record. You can search payment history by the alternate emails. You can do all sorts of things.

BRAD: Right. We did something similar. We use WooCommerce and their licensing add-on to sell our products. Anyway, we had to add that feature.

You can add as many support email addresses, we call them, as you want. You have a billing email address, and you have an account email address. That just comes with WooCommerce’s kind of stock. But, there is no concept of a support email address or additional email addresses, so we had to add that.

PIPPIN: I think we’re the first e-commerce plugin that has it.

BRAD: Nice.

PIPPIN: That makes me happy.

BRAD: Yeah.

PIPPIN: We really took our inspiration from how Help Scout does it. That’s a super handy feature that they have adding multiple emails to customers, and we kind of wanted to have it work in a similar way.

We also added a customer meta data API, so we previously didn’t have a way to store meta data on customer records. Now we do.

We also added support for processing refunds for PayPal standard directly from the order details screen. We didn’t use to have that.

BRAD: Wow. Nice.

PIPPIN: That’s a nice little feature.

BRAD: That is nice because it’s annoying to have to go to PayPal, log in, and hit the button.

PIPPIN: It is. Yeah.

BRAD: How many times do you have hit buttons? I think you have to hit, like, five different buttons to make a refund.

PIPPIN: Yeah. The number of times I’ve almost not processed a refund by accident because I’d missed the last button in PayPal.

BRAD: Yeah.

PIPPIN: We’ve done a few other things. We introduced the version 2 of our REST API using our REST API versioning, which there are not a ton of new features on it. It’s more it changed a few things. And so, in order to make sure that we don’t break anybody’s integration, we introduced a second version.

Right now it’s beta 1. There’s a blog post on the development blog. We’ll include a link in the show notes. We’re looking for people to help test it. We’re planning to do another two or three, if we need to, beta versions before the final release some time around the end of June.

Beyond that, over the last six months, it’s been an ongoing project to work on Restrict Content Pro and elevate it up to the level of EDD and Affiliate WP. RCP had always been a side project for me for a long time. We want to make it no longer a side project, so we’ve been working on that for six months or so.

It’s there. We’re doing a lot of improvement still. It’s been my focus for this whole last week, but one thing that we’ve wanted to do more of is create a tighter integration between all of our three products. EDD and Affiliate WP integrate very well together. RCP and Affiliate WP integrate very well together.

RCP and EDD do not integrate. They run side-by-side, but they don’t really integrate together, and so we’ve been wanting to bring the two products together. Not merge them together, but make them run together, have features that integrate. For example, if we want to allow a paid subscriber in RCP to download files for free from EDD, that’s something a lot of people want, and that’s something that’s on our to-do list. We’ve been working on bringing some of those things together so that the two systems talk to each other better.

This last week, we introduced two of those new bridge plugins, if you will. One of them is related to our front-end submissions plugin. We get a lot of people that run marketplaces and want to limit the number of products that a vendor can submit. Maybe like per month, for example.

Let’s say you subscribe to the five products plan. Every month, you can submit five products. Then, after that month, after your next renewal, you can submit five more, or something like that. We’ve built a little plugin that allows you to now do that, so you can have subscriptions through RCP that then control how many products vendors in Easy Digital Downloads can submit. That was the first one that we did. It’s called FES Vendor Limits.

Then the next one that we’ve had requests for, and this is actually pretty common for things like stock photo marketplaces. Storeowners want customers to buy a subscription. Every time that that subscription renews, whether it’s monthly or yearly, they get credits deposited into their account. Then they can use those credits to download files from the website.

Let’s say, every month that your subscription is valid, you get 100 credits. Then each product, or let’s say it’s each file, so each photo in the marketplace, is ten credits, so you can download ten files per month. We built an integration between our wallet extension, which basically allows you to have a store credit in an EDD website, and Restrict Content Pro so that, every time a subscription renews, it deposits funds into your wallet – also another little plugin that we just launched this last week.

BRAD: That’s very cool. Yeah.

PIPPIN: We’re going to do a few others that kind of help bridge the gap between the two plugins. An interesting thing that I had never expected, but we’ve found to be very, very true, is that because RCP and EDD are built by the same company and originally were both branded with my own name and now we’ve removed my name from the branding, but there’s still an association there, EDD customers and RCP customers, a lot of them naturally expect the two plugins to just automatically communicate, like 110%.

BRAD: Right.

PIPPIN: Which always surprised me because I’m like, “No, they’re totally standalone products. Yes, they’re built by the same teams, but they are different products.” I’m not going to say that people’s assumptions for that are right or wrong, but they were definitely there. And so, we want to try and work and start meeting some of those expectations.

BRAD: Yeah. That makes sense. It doesn’t hurt business-wise either.

PIPPIN: No, absolutely.

BRAD: If your products have tight integrations, then definitely people will be more receptive to buying the sister product, or whatever.

PIPPIN: Certainly. Any smart marketer could tell you this, and I’ve seen it mentioned numerous times in whether it’s blog posts, podcasts, et cetera, but it’s been shown that it’s significantly easier to increase the value of your existing customers than it is to acquire new customers. Not only is it easier, it’s more valuable, and so one of the things that we want to make sure that we are doing adequately is cross-promoting our products.

We want every EDD customer to be interested in RCP. We want RCP customers to be interested in Affiliate WP, and likewise. The goal is that, with all three products, to kind of create one cohesive ecosystem where they all work together because that way, if we have an EDD customer, we can up-sell them to Restrict Content Pro. They can be up-sold to Affiliate WP. That’s kind of our long-term goal is to be able to do that.

BRAD: Yep. Sounds good.

PIPPIN: Yeah, so that’s been our focus, and we’ve got a long way to go on it still. It’s been fun to definitely see a lot of those things get built out and to see the products get closer together. I’m really enjoying seeing Restrict Content Pro get elevated up to a similar product as the others, especially.

It is the oldest of all of my plugins, of the big ones that we’ve built. For a while, it was dying. It was actually dying a pretty slow death over time. The customer base declined. The sales declined. Development on it declines, and we’re going to bring it back up.

BRAD: Yeah. It’s nice to either let something go, let someone else take it over and breathe new life into it–it’s nice to see that–or you can do it yourself if you’re committed, or maybe kill it. The worst is just having it just kind of linger.

PIPPIN: Slowly die, yeah. About eight months or so ago, that’s the decision that I was making was: Do we let RCP just slowly die and just acknowledge that it’s going to if we don’t bring focus to it? Do we sell it off to somebody who can breathe new life into it? Or, do we own it, and we decide to own it?

BRAD: Yeah. Awesome.

PIPPIN: I think it was the right move.

BRAD: Yeah. It’s looking great, man.

PIPPIN: Well, thanks. Well, we probably better wrap up here. I think we’re approaching 45 minutes or so.

BRAD: Yep. Sounds good.

PIPPIN: All right. If anybody has any questions about any of this or any suggestions, you know how to reach us on Twitter, @ApplyFilters, through the website, or email address.

BRAD: All right.

PIPPIN: Thanks for chiming in.

BRAD: Talk to you next time.

Apply Filters © 2024