Mark Zahra, among other things, recently released the EDD Bookings plugin for Easy Digital Downloads. I was excited to talk to him about this because it’s something that I thought of doing myself back when I was teaching multiple classes at the University of Scranton. When I was on campus to help manage a fluid schedule for my own office hours, I deemed that project was maybe a little over my head for the amount of time that I had. It’s very cool to see that it’s come to fruition a few years later. Mark also hosts Mastermind.FM and worked over at WP Mayor.
- Mark Zahra
- EDD Bookings
- WP Mayor | WP RSS Aggregator
- Pippin Williamson and Restrict Content Pro
Hey everybody. Welcome to episode 95 of How I Built It. Today I’m talking
to Mark Zahra, who among other things recently released the EDD Bookings
plugin for Easy Digital Downloads. Now we’ll get to just about everything
he does in a minute, but I am excited to talk to him about this brand new
plugin. It’s something that I thought of doing myself back when I was
teaching multiple classes at the University of Scranton. When I was on
campus to help manage a fluid schedule for my own office hours, I deemed
that project was maybe a little over my head for the amount of time that I
had. It’s very cool to see that it’s come to fruition a few years later.
So, we’ll get to all of that in a minute. I do want to tell you about the
show’s sponsors. Today it’s brought to you by Pantheon and the Techmeme
Ride Home podcast. You’ll hear about both of them later in the show. I also
want to mention one more time, the HowIBuilt.it/shop. We have T-shirts
available there for your purchase and enjoyment, we also have a mug. The
T-shirts come in a bunch of different colors and sizes, and there is both a
men’s and women’s cut. Definitely check those out if you’d like, over at
HowIBuilt.it/shop. That’s everything for me at the top of the show, you’ll
hear about our sponsors later on. Check out our T-shirts. Without further
ado, on with the show.
Hey everybody. Welcome to another episode of How I Built It, the podcast
that asks, “How did you build that?” Today, my guest is Mark Zahra of EDD
Bookings. Mark, how are you?
I’m good Joe, how are you?
I am fantastic. Just saying EDD Bookings is kind of underselling you.
You’re the host of Mastermind.fm, and you do work for WP Mayor, is that
Exactly. Mastermind.fm, WP Mayor and WP RSS Aggregator.
Nice. Very nice. You have your hand in a lot of different pots, but we’re
going to be talking about EDD Bookings today. Why don’t you tell us a
little bit about who you are and what you do?
Sure. Currently I am the project manager for the company that runs all the
projects you mentioned. With EDD Bookings I’ve been the project manager for
a year and a half now. Basically EDD Bookings is a premium third-party
add-on for Easy Digital Downloads, an e-commerce plugin for WordPress, and
it adds a an appointment booking solution to your WordPress site. You can
accept appointment bookings from clients, either via a booking wizard so
they can make bookings on your website. Or you can even accept bookings in
person via e-mail, on the phone, or whatever it is. And you can create
bookings manually within the system.
Wow, that’s fantastic. I thought several years ago when I first started
teaching, and I had to maintain office hours, of building something like
this for my students where they could book office hours. I wish that this
existed 10 years ago. It did not exist 10 years ago, right?
No. It started around three years ago, 2015.
Gotcha. Yeah. So as I thought about that problem I’m like, “This is a big
problem to solve in the limited amount of time that I have.” But it’s very
cool to see that it has been developed and it works with EDD. There is a
free version of easy Digital Downloads, right?
Yeah, exactly. It’s a free version, so they have their own premium add-ons
and they’ve just released a few different packages of a lot of those
add-ons. And there’s third party add-ons all over the place as well.
Fantastic. So, let’s dive right into this because this is very interesting
to me. Like I said, I’ve actually thought about this problem before. What
kind of research did you do as you started? First of all, who came up with
the idea, and what research was done around developing the plugin?
It started in mid-2015, it was [Jean][inaudible] from WP Mayor, who is the
founder of our company. He needed a booking solution for himself. He didn’t
find anything which was easier to integrate than what he currently already
had, and since we’ve been using EDD for a few years he thought, “We have
the team to do it, why not develop an add-on of our own and create a simple
bookings plugin?” That word “simple” came back to bite us. We created the
first version, I wasn’t even involved at that time yet, it was Miguel who
still works on the project today as well. And they created a simpler
version, it was not really researched or anything, it was more what was
needed at the time.
A few months later I came in and released a version to which had a few
changes and a few improvements, but still based on the old code base.
Around the end of 2016 we realized we were hitting a wall because of the
code base and because of the lack of research before, we couldn’t add
certain features that we wanted to add and we couldn’t grow the plugin. So
at that stage we decided to rethink everything, I did a few months of
research myself. A few weeks, a few months. From there we decided to
rewrite and create a brand new version, which has been in the works for
about a year now, and were currently in beta about to launch.
Awesome. That’s really interesting to me. Essentially, [Jean][inaudible]
was scratching his own itch. That is a very common story, on this podcast
at least. But you did some research as you were gearing up for some new
features. What did that look like? You had a product and you were like,
“Let me just rethink this product from the ground up”?
It came in a few different parts. At first we looked at our existing
customer base, which wasn’t so big but at least it gave us a base to start
off of. We contacted those users and tried to figure out what pain points
there were facing, why they even chose EDD Bookings over other bookings
plugins which already existed and had more features. So we were seeing the
positives and negatives and what we needed to cater for. Apart from that,
we had blog posts on WP Mayor which helped out a lot, which had a lot of
feedback on appointment bookings plugins. We had around 400 comments on one
post which was brilliant to go through, and understand over the years what
pain points there were.
That was great. And apart from that I did my own research looking through
existing blog posts and articles on the web, both for WordPress booking
plugins and for online solutions away from WordPress. Then we actually
looked at the products themselves. We took WordPress plugins and tried
those out, we bought a few of those, we tried online solutions during the
demos, and basically tried to understand what they did right and what they
did wrong, and what their clients were saying about it. We actually looked
at reviews, comments, support, forums of each one trying to understand
where we can do things better than anyone else.
That’s fantastic. So you didn’t just want to build a clone of one of your
competitors, you actually wanted to based on customer feedback and the
things that you liked and didn’t like, build something possibly better. I
use Calendly for bookings currently. Is that one that you looked at?
We looked at Calendly for certain aspects of it, but it’s not exactly what
we were aiming to do. Certain solutions we looked at certain aspects of
them rather than the entire solution as a whole.
Today’s episode is brought to you by Pantheon. WordPress 5.0 and the new
editor Gutenberg are coming. Are you prepared? Do you want to learn about
the changes in advance? Pantheon has gathered resources to help you
prepare, including webinars and tutorials. Pantheon also has made it easy
and free to try Gutenberg with your site before the official launch. Visit
Pantheon.io/Gutenberg. Let them know that How I Built It sent you. Now,
back to the show.
What other WordPress plugins are out there that do similar things?
There’s different ones and they will cater to different things. In the
beginning of our research we looked into which field of bookings we were
going into. Whether it’s appointment, hotel reservations, things like that.
So we’re looking at different plugins. There’s a fee for reservations, a
fee for appointments, there’s tickets. I remember Leadership Bridge Press,
there is a WordPress appointment bookings plugin, and I think [inaudible]
as well. There’s WooCommerce Bookings which there’s a few versions of.
There’s the official, there’s one of [Tai-Chi]. We looked across free and
premium plugins all over the place.
Gotcha. That’s really interesting, what you said. You wanted to look at
what type of bookings you want to get into. Kind of calling back to what
you said earlier about having a “simple” booking solution. It sounds like
one might not exist.
There are free versions and free plugins out there which you’d think are
simple but then they’re very limited. Some of them, for instance, only
allow you to set appointments that are 15, 30, 45 or 60 minutes long and
that’s it. It might help you out if you’re in that market and that’s what
you need. Go ahead, it’s free, and why not. But if you’re looking for
something a little more complex then you need something better.
Yeah. If I’m running, let’s say, a barber shop maybe a 30-minute haircut is
fine. But a shave and a haircut might take an hour and a half or something
like that. So already I’ve grown beyond what is freely available.
Awesome. You mentioned that you read comments and talked to your customers,
did you talk to contemporaries? Are you part of a Mastermind group where
you got feedback from people that are doing similar work as you?
We spoke to a few different people in different fields with regards to
bookings itself, it was mostly customers and users. I thought that those
would give us the best feedback. We did speak to a WooCommerce developer
who develops customizations for WooCommerce for different needs, and we
spoke to him to understand where e-commerce was struggling in WordPress and
where certain integrations would need to be thought out. For instance, with
resources and staff locations, it’s always a bit of a struggle with
e-commerce to handle all of those and when you introduce bookings and
different available days and everything, it gets complex. So he pointed out
a few areas to us where it can get complex and what we can do.
We spoke, obviously it was [Jean] who was helping us out the whole time
from the business side of things, mostly. Even pointing out areas where you
might overlook something, so while you’re actually in the zone of all of
this you might miss certain things that you’re looking at every day. Having
a fresh set of eyes was brilliant, so [Jean] was the kind of guy I would
bring in from time to time and ask questions. We had others who we spoke to
about marketing or branding, or anything along those lines. So, actually
thinking about the name and thinking about the content, and even the
wording within the plugin itself. There’s many WordPress plugins out there
in the element dashboard. There’s typos, there’s wrong sentence structures
all over the place.
Or even just generic copy. Things that don’t really inspire the user to do
whatever it is you want them to do.
Exactly. So we tried to find people who could help us out with those. We
also had [inaudible] who joined us to think out a few things. He’s
[inaudible] at Mastermind.fm. He is the kind of guy who can help you out to
take a simple sentence and make it more attractive.
That’s fantastic. It sounds like you talked to a lot of people to attack
this from all sides. And we’re recording this in the summer of 2018, you
said the process started in sometime in 2017. So, a lot of work went into
re-imagining this plugin.
Yeah. It’s actually gone through a few before even getting to development,
it went through a few different stages and a few different versions, sort
of thing. In the beginning we were re-thinking of doing it a certain way.
They realized we were very similar to what we had before, so we’re still
going to get stuck, so we started from scratch and started over the
complete process. We also had the opportunity of having the EDD team help
us themselves in certain areas. Pippin was always open to answering our
questions, and kind more as well as helping out with understanding even the
direction of EDD, with now EDD 3.0 about to come out soon. That comes into
play as well, because you are developing for one version but you are then
going to switch to a new version in a few months.
Yeah, absolutely. That’s a professional developer move right there. You
know that your plugin relies on– your extension, I guess, is the official
nomenclature for EDD. Your extension relies on another plugin or product,
and you want to make sure that all of this work isn’t for naught once the
new version comes out shortly after. That’s great.
Yeah. We’ve had customers actually ask us now while we’re in beta, “What’s
going to happen when 3.0 comes out? Is it going to be useful or not?” So
we’re working with EDD to make sure that doesn’t happen.
That’s fantastic. Very cool to hear. For the listeners, there’s a lot of
stuff in there to parse out. I think that was one of the most comprehensive
answers I’ve gotten to, “Who did you talk to?” And there’s a lot of really
good information there. But we’re about at the halfway point here, so let’s
get to the title question which is, how did you build it? It’s currently in
beta so I’m sure there is probably still some active development going on.
But from the project management side, how did you put the project together?
If you’re familiar with any of the development processes, what did those
It started off in the beginning mostly research, we were documenting most
things on Confluence which is a tool from Atlassian. I have been using
those for a while. [inaudible] as well. Once development started, we
switched to GitHub. Most of our code is developed on GitHub. With regard to
development, I’m a developer myself, but I do have an idea of what’s going
on. Basically we tried to automate as many processes as we could along the
way. Even though it takes a little longer to get through the development,
it saves you time at stages that we are now and in the future. Our build
process is one example. Right now, as we build alpha versions and beta
versions it’s all very fast, it happens within a few minutes.
So that’s saving us a lot of time and effort. The plugin has been developed
in a module system, so this is something that our team stressed on from the
beginning. With [Anton] and Miguel who started out as tooling developers
that keep the plugin organized and structured. We gave a lot of importance
to other principles as well, coding standards. So, from the solid principle
to the principle of ones that nobody wants. Basically, not having duplicate
code and not having redundant things within the plugin. These are all
things with which we struggled with in the past and different plugins, and
we learned from those lessons and try to apply them here.
That’s fantastic. As somebody with a software engineering background it
makes me very happy to hear those ideas coming to WordPress. I think a lot
of WordPress developers have been self-taught, and over the last few years
we’ve been going through a maturation. We’ve been maturing as developers,
and have been automating things, doing more testing, and looking at things
from a software architecture standpoint instead of just throwing out code
Exactly. The two developers we started off with, [Anton] and Miguel, they
don’t have a WordPress development background as such. They both studied
certain types of development and worked with certain types of development.
So they’re trying to bring those into WordPress and they’re trying to
improve things. Like, unit testing for example is something which we did as
much as we could. In the beginning it was hard for me to understand, as a
software developer, what the benefit is. But as you go along then you start
to realize the time you’ve saved and the struggles you’ve saved for the
Yeah, absolutely. If something you developed on day one isn’t touched again
and breaks and something from day 20 breaks it, you got to go back and you
could have a domino effect. Unit testing can prevent that.
Exactly. And also make sure to keep things extensible, and reusable. Taking
the booking wizard for example. It’s used in the front end for the client
to book, but there’s also a similar process in the background for the admin
to make a booking. Those were previously two separate solutions, you need
to maintain them in both places and you need to make changes in both
places. So, what we’re doing now is making those one, and basically you
reuse one in different areas and the future will have an integration with
front end submissions as well. Which is an EDD add-on which allows you to
create a marketplace so anyone can register on your sites and add their
services from the front end. Then once again you’re reusing the same
component within FES.
That’s great. I love everything I’m hearing right now. It sounds like EDD
Bookings has gone through a refactor in the truest form. For those not
familiar with the term, you have version 1 of the software, the MVP. You
want to get it up and running and out the door as quickly as possible. The
re-factor is where you go through and make everything right. There may be
bug fixes, but it’s really a re-architecture of the plugin.
Yeah, exactly. We’re not even naming this version 3, to be honest. It’s a
completely new version 0.1. Just because it’s completely different,
previously it was sold on the EDD Marketplace which now no longer exists so
we’re selling it ourselves. Once again, it’s completely different. You have
taken a completely different approach and started from scratch.
This episode is brought to you by the Techmeme Ride Home podcast. You may
have heard of Techmeme.com, which is a great tech news site that you can
check multiple times a day. Techmeme Ride Home distills all the great
content from Techmeme.com into daily 15-20 minute long episodes. You get
top stories, posts, tweets and conversations every day around 5:00PM
Eastern. It’s like NPR’s marketplace, but for tech news. The show is hosted
by Brian McCullough who also hosts the internet history podcast. To listen,
you can use your favorite podcast app to search for Ride Home and then
subscribe. Get your tech news daily from the Techmeme Ride Home podcast
The last question I have regarding how you built it is managing the team. I
suspect you have a remote team of developers, possibly in multiple
different time zones. What’s it like managing that team?
It’s been a bit of a struggle in the beginning to get used to, because not
everyone was necessarily used to working remotely. Miguel and [inaudible]
have been with us for a while on the WPRS [inaudible] projects, so they
were used to the way things worked. Currently for day-to-day chatting we
use Slack, Skype for video of course whenever we need them. We document
everything in Confluence, GitHub, Bitbucket, whatever is needed at the
time. Over time we’ve introduced different people to the project.
We hired Danny Watchorn, who is an Irish UI design expert who helped us
come up with the UI and different ideas for the user experience. He was in
Ireland and the idea was to have someone with a similar time zone.
Previously we had hired a Canadian designer, [Sedra], and she helped us out
for a few weeks. But the time zone difference was a struggle, there were I
don’t know how many hours difference and it wasn’t easy. I would stay up
late to be at her morning, for example, and we’d just have an hour of
discussion but we never could work together.
Right. Was she on the west coast of Canada?
Trust me, I can’t remember. It was quite a difference.
Just because I’m on the East Coast of the United States and it looks like
it’s still daylight for both of us if I’m–
Yeah, it’s 5:20 here.
So, it’s about a six hour difference for us in Eastern Daylight Time. I
suspect that she was probably on the West Coast where it was closer to a 10
hour difference or something.
Yeah, it was something like nine hours, or something like that.
And that’s rough. If you don’t have a big enough team, you’ll have somebody
isolated, or somebody has to work really odd hours. That’s really
interesting and it’s a problem a lot more companies are experiencing,
because a lot more people are starting to work remotely.
Yeah, and when we were hiring new developers then we were looking for a JS
developer for a while. We worked with a company called Coding Ninjas to
find someone. We had a couple of developers from the Ukraine join us, and
from somewhere else I can’t remember, they only joined for a short amount
of time because it didn’t work out. Eventually I found the developer we
have now, [Ramon] who has been a brilliant addition to the team as well.
And it’s great to have him in Ukraine because there’s a 1 hour difference,
so he starts work at 10:00 AM and we start at 9:00 AM, everyone finishes
roughly the same time. If we need to work late there’s no big difference.
So that’s worked out. And then support, we have [inaudible] who’s in the
Philippines. There is a time zone difference but it works. He’s a brilliant
guy and he structures his day in a different way. When you work remotely
and you work the way we do with a flexible schedule, you can make
amendments. Everyone can work at whatever time is comfortable for them as
long as it doesn’t compromise someone else. And for him, it’s worked great,
because he can work evenings which comes roughly two hour mornings, or even
for our customers makes a difference. Because most of the customers for
Aggregator are American, so it works with their time zone, and support it
worked out to have someone different from where we are right now.
Absolutely. I was talking to Joe Howard from WPE Buffs about this very
thing, and he tried to have a good time zone coverage so that he can offer
what’s essentially 24/7 support without having somebody stateside having to
stay up all night. And it sounds like you’ve got some pretty good coverage
there, between you and, what was the support fellow’s name? Rent?
[Rentz], yeah. So, that’s great. That’s a really good tip for a lot of
people to take away as well. We are coming up on time and I do have a
couple of questions, and these can be related. We talked a lot about the
transformations from maybe the very first version of EDD Bookings to now,
and you’re currently in a beta, so what are your plans for the immediate
future of EDD Bookings? Since you just are reimagining this now. What’s
your roadmap look like?
The next few weeks we’ll be launching the product for sale on
EDDBookings.com. After that we plan to take some time to regroup.
Basically, while we work on bug fixes and support that comes in, there is
going to be a few weeks of figuring out what should come next. What we’ve
done right, what we have done wrong in the past, we’re trying to figure
Right after that we have a roadmap for new features that are going to be
added and they range from Google Calendar integration to front end
submissions integration, which I mentioned earlier, for marketplaces. There
is the introduction of staff and locations, and any other resource which we
might need. There is different pricing options that are coming in with
variable pricing, group pricing, group bookings. Some of these are planned,
some of them are mentioned on our website on the roadmap section, and we’ll
be keeping everyone up to date with what’s going on.
That’s fantastic. I want to touch on one more thing here, because you did
mention that there are different types of bookings. This is probably a
sales question that you’re going to get a lot. Is EDD Bookings maybe
flexible enough to be the hair salon as well as the college professor, or
are you planning out different add-ons to help with each of those areas,
Currently, we don’t have plans for add-ons. The idea is that the plugin
will be a whole plugin which can cater for different needs. As it is right
now it can be used by a consultant, it can be used for lessons, it can be
used for doctor’s appointments. Anything that comes up with appointments,
basically. We’ve built a very flexible availability set up. Each service
actually has its own calendar very similar to Google Calendar, where you
can click and add the availability, the exclusions, whatever you need so
you can repeat for a period of time. Repeat weekly, whatever it is.
The catering for different needs is a focus on appointment bookings, so
it’s not going into tickets or reservations or anything like that. We’ve
seen people already on our [inaudible] before, basically discuss ways with
us that they can use it for different scenarios away from appointments. So,
you can make use of it that way, redeveloping it in a way. It’s very
developer-friendly so anyone can go in and customize, and we have different
modules. You can add a new module for separate customization. Eventually we
might see it be used in ways we don’t even imagine.
That’s fantastic. I’m very excited to take a look at the beta, especially
after this conversation. I have a few ideas for how I can use it, and how
it could possibly save me money since I am paying for Calendly. So,
awesome. I want to end with my favorite question which is, do you have any
trade secrets for us?
Such as what?
Any good advice that you would like to impart on the listeners, I guess, is
really what it is. I’m not asking you to give away your secret sauce.
I think something which we’ve stressed on in the past and that I keep
stressing on is build a good product, build a great product, build a great
team around it and plan for support. If you build the best product around
but you are not going to support it well, you’re going to struggle. Make
sure you put the focus on that, train your team, and get the resources
Awesome. That’s great advice. I can’t add anything more to that. Mark
thanks for joining me today. Where can people find you?
Thanks. People can find us on EDDBookings.com, on Twitter as well
@EDDBookings. Other than that it’s WPMayor.com and WPRSSAggregator.com.
Awesome. Thanks so much for your time today, I really appreciate it.
Thanks for having me, Joe.
So, Mark and I are in a very similar situation where we’re both doing a lot
of different things, and he seems to be handling it really well. I love the
advice that he offers and the tools that he talks about when it comes to
project management and managing a group of developers, because most of us
maybe are developers or maybe business owners, but no matter what project
management is an important part of that. So, I really enjoyed that and a
bunch of advice that he offered about support and things like that.
You just listened to the end of the show, so you know what he just talked
about. Instead, what I’m going to do aside from thanking Mark once again,
is thank our sponsors Pantheon and TechMeme’s Ride Home podcast. Definitely
check both of those out, they are free resources for you. Head over and
visit them both and let them know How I Built It sent you. We deeply
appreciate their support for the show.
The question of the week for you is, how do you manage your projects? Do
you use a project management tool? Is e-mail or Google Docs something that
is integral to your business, do you work with a team of people or are you
by yourself? Let’s just narrow it down to one question of the week, which
is how do you manage your projects? Let me know on Twitter @jcasabona or
e-mail me at Joe@HowIBuilt.it. You can also join the Facebook community
over at HowIBuilt.it/Facebook. I’ll ask the question over there too, and
you’ll have the opportunity to discuss it with other listeners. I want to
build a strong community for this podcast and Facebook is the place to do
Don’t forget to check out our new T-shirts and mugs over at
HowIBuilt.it/shop. And as always, for all the show notes head over to
HowIBuilt.it/95. If you like the show, head over to Apple podcast and leave
us a rating and review. It is helping people discover us, we’ve been
consistently in the top 30 podcasts for tech on Apple Podcast and I
wouldn’t be able to do that without you the listeners, and the folks who
are leaving ratings and reviews. Thanks so much. Until next time, get out
there and build something.