Launching My First Craft CMS Plugin

I launched a Craft CMS plugin, and this is what I learned. The idea of having my own online digital product has always excited me, but it also felt like something that was far out of reach. Getting there seemed like a massive hurdle that I would eventually need to overcome. There was always an excuse or reason not to jump that hurdle.

In reality, the hurdle was not nearly as big as I had built it up to be. I had already built many private plugins, so the actual development process was not new to me. What was new was everything around it like packaging it, documenting it, and putting it out there for other people to use. The whole process stretched over a few weeks, but in terms of actual focused effort, it was much more manageable than I had built it up to be.

Building The Plugin

The Idea

The idea for this plugin had been in my mind, or in a random Notion file, for months at the time I decided to start building it. It all revolved around a rather simple feature that I wanted to implement into one of the sites that I manage at my day job: a basic rating system for custom motorcycles. A user could click a star to rate a bike and then see what the community rating was. From there, pages and content could be created around the top-rated bikes on the site.

It was a simple idea, and one that I could have easily built as a private plugin or module. But I had been interested in making a public plugin, and this felt like something that could be broadly useful in different scenarios. I started with a basic sketch of how I would organize the data, and the idea expanded to include likes and favorites as well because of how similar the features are and how they could scale together.

Then, like a lot of ideas, it just sat there for months, waiting for me to actually commit to building it. I finally got around to building it for two reasons. One, I have been setting monthly goals for myself this year and decided to finally force myself to focus a month on launching this plugin. And two, I shared a bunch of ideas with my boss and he liked this one. Perhaps the biggest motivator was knowing someone liked the idea and was now expecting me to follow through.

Development

Once I committed to the idea, the next step was actually building it. This was easily the most comfortable part of the process for me. I had already built many private plugins before, so I understood the architecture I needed and could move pretty quickly. However, I put more thought into this than any of the internal tools I had built, mainly because the scope changes when you are building for other people.

When I build something internally, the requirements are already known, and the people using it are either myself or technically savvy coworkers. With a public plugin, I had to think much more about usability, how someone unfamiliar with my thought process would install it, configure it, and actually use it.

That meant focusing on making it as intuitive as possible. Something that could be installed, configured, and working with just a couple of clicks and a line of code. I specifically wanted to make the backend panels as easy to use as possible. I went with displaying the widget directly in them so users could see how changes to the settings would impact real users.

I spent time making things as intuitive as possible so users could get rolling without needing to understand every detail. Essentially, I wanted everything to work out of the box, and only need attention when something went wrong. And when that did happen, I wanted the settings to be as easy to understand as possible.

That part ended up being one of the more interesting challenges. Engineering something for unknown users forced me to think differently than I normally do, and that was a great experience. Before long, I had a working product that was ready to be released.

Launching To The Plugin Store

With the plugin built, the next step was the part I had been putting off: actually releasing a product to a live store.

Right when I got to the point where it felt "done," I started noticing all the ways it was not. Not in any major, objective sense, but more in the way that everything I build starts to feel incomplete the moment I imagine someone else using it. No matter how much testing I do, there is always a part of me that assumes things will fall apart as soon as someone else looks at it.

So I did a few lookovers, double-checked the plugin store requirements, and made sure everything was aligned with their guidelines. I also rushed to put together this website so that the documentation pages for the plugin were accessible. The day this site launched, I had a terrible design in many ways and my server setup was not ideal in any way. But that could all wait for a later date.

Then I submitted it late one Monday night, expecting the process to take a few days and likely come back with changes. Instead, it was approved by the next morning, which caught me off guard. Seeing the approval in the morning was an incredible feeling. I was proud of myself for finishing something I set my mind to. 

Post-Launch And What Is Next

At the time of writing this, the plugin has zero sales. That is not particularly surprising, but it does highlight something important.

The biggest issue is that the plugin is fairly niche. It is not something most websites need in order to function, and it is not something people are actively searching for. It could also be a pricing issue. I followed the recommended Craft guidelines, but that does not necessarily mean it is the right price for this type of product. It could also just be a matter of time and visibility.

More than anything, this made it clear that building something is only part of the process. I made the mistake that many developers make. I built something that I personally thought was interesting without fully validating whether there was real demand for it or having a clear plan for how to get it in front of people.

That is something I need to improve on, both in terms of validating ideas earlier and thinking more intentionally about marketing and distribution. For my next plugins, I would like to reach out to the Craft community prior to building them and get a sense for what people think. I would also like to naturally encounter issues while building websites for people. This way, I can build the plugin while already solving a client's real-world problem.

That said, I am still happy I went through the process. Taking something from an idea to a live product in a store feels good, and it made the whole concept of launching a product feel much more approachable than I originally thought.

Right now, I am exploring three new plugin ideas and looking for feedback before I commit to building them. The goal this time is to be a bit more intentional about making sure there is actual demand and thinking through how they would be marketed.

Here is what I am currently considering:

Autofill
Turn messy input into fully populated entries in seconds.

Free Trial Block
Limit free access and convert repeat visitors into users.

Popups/Modals
Show the right message at the right moment automatically.

If you want to check out the Engagement plugin itself, you can do that here:
Engagement Plugin

I am also using it on this page to vote on which of these I should build next:
My Plugin Page

If you have any feedback at all, feel free to send it my way. And if you need a custom plugin built for your site, I am happy to help.