Happy 50th to us!

Verbb Team Verbb Team Sept 2023 6 min read

No, we're not quite 50 years old yet β€” but today marks another milestone. It's our 50th plugin on the Craft plugin store, and that's worth celebrating! It's something we've been working on for a while and kept under wraps, but we think it'll be a game changer for managing content across installs.

You may have also noticed our website has a fresh coat of paint to celebrate the occasion and doubles as the perfect use-case for our new plugin.

A look back#

Before we get stuck into the new stuff, let's take a look back at the early days of our plugins β€”Β and just how far we've come. We can't believe it's been 8 years of plugin development for us 😱.

Where it all began#

All the way back in 2013, we were still using ExpressionEngine and Wordpress to manage content β€”Β like many of you at the time. We'd heard some rumours of Pixel & Tonic (the creators of some excellent ExpressionEngine plugins) working on something called "Blocks" (later changed to "Craft"), and were impressed with the fresh, modern approach of their new CMS. But we were content to stick with "the devil we knew" and keep a watchful eye.

Before Craft, there was Blocks

That all changed on November 5, 2013 (opens new window) when Craft 1.3 debuted a new feature called "Matrix". This, to us, was a true game-changer, and decided it was time to make the switch in earnest.

...and along came Matrix!

After a few site builds, we'd already started diving into the source code of Craft, to really understand how things work. We were impressed by the quality of code and organisation, and started to tweak things here and there. Eventually, finding our way to the plugin architecture to develop actual plugins that others might find useful.

A refreshingly simple control panel in the early Craft days.


Before there was a plugin store, there was Straight up Craft (opens new window) from Ben Parizek at Barrel Strength Design. It was your go-to resource for not only plugins with learning how to use Craft. It was here that the very first plugins emerged...

Straight up Craft β€” where you could find everything about anything.

By 2015, we'd become pretty empowered by what Craft offered. With no less than a billion ideas swirling around our heads, we set off on our plugin development extravaganza!

Look at those young and healthy little plugins. They grow up so fast.

Originally released under the S. Group (opens new window) brand (our parent creative agency), we released our first few plugins:

  • Feed Me (Mar 2, 2015)
  • Field Manager (Mar 4, 2015)
  • Set Table (Mar 5, 2015)
  • CP Nav (Mar 13, 2015)
  • Comments (Mar 22, 2015)
  • Super Table (Apr 9, 2015)
  • Expanded Singles (Apr 21, 2015)
  • Asset Count (Jun 7, 2015)
  • Image Resizer (Sep 19, 2015)
  • Workflow (Nov 16, 2015)

Clearly, we didn't sleep during 2015. Set Table (opens new window) was a precursor to Super Table, allowing you to create static rows in a table field. CP Nav (opens new window) came out just hours after a modifyCpNav() hook was added to make editing the control panel navigation possible.

A distinct memory is the conversation with Brandon Kelly (opens new window) in 2015 about the best way to achieve nested Matrix in a plugin. Which, thanks to that is why we have Super Table (opens new window). Also, asking Ben Croker (opens new window) very nicely to use his Entry Count (opens new window) plugin as the basis for Asset Count (opens new window). Even long chats with Andrew Welch (opens new window) about creating a new forms plugin (despite competition already out there) with Formie (opens new window) and a new content field with Vizy (opens new window).

It's this great sense of community that makes Craft so special, and is why we love creating things for you to use. Craft continues to stay relevant and evolve, which is what drew us to the platform in the beginning β€” and we're thrilled to see Craft and the community continuing to grow.

In fact, Craft just celebrated 10 years of Craft (opens new window) and Ben Croker also wrote up a more detailed timeline of Craft (opens new window) to celebrate the occasion.

So here's to another 50 plugins! 😎

Introducing Zen#

Taking the title of 50th plugin is Zen. It's a plugin all about keeping your environments' content consistent and "in-sync".

Zen icon sized

Have you ever had a scenario where you've launched a site, and 6 months down the track you need to develop a large new feature? This might include new fields, sections, templates and more. Most of this is stored in Project Config, in a Git repository and can be easily deployed to multiple servers. But what about the content? You'll likely be creating new content such as entries, or modifying existing ones. You could also be adding categories, uploading assets, Matrix blocks, and so much more.

Or maybe your client has a staging site setup where content can be planned and tested (along with any improvements) before being launched on the production site?

Until now, getting all these content changes to production has been a manual copy-paste process. This is clearly time-consuming and error-prone. We think you could spend your time better, and save you from late nights hunched over a desk hitting ⌘+C / ⌘+V into what feels like an eternity.

This is where Zen comes in.

How it works#

Zen is a glorified import/export plugin just for your content. It's geared towards synchronising content on the same project across multiple environments, to address exactly the scenarios as above.

It works by selecting the elements and date-changed range on the source install you want to export content from. This will generate a .zip file of the element, including any assets used, which you can download.

The first step β€” export your content on one install, then import it on another.

With this .zip file, you'll be able to import on the destination install β€” say a production environment. Zen will compare any existing elements, and provide feedback on whether the content in your export is new, changed, deleted or restored elements. You'll even get a preview to compare the old vs new element. Once prepared, content is then imported with Craft's queue.

Currently, Zen supports all Craft core elements, and Commerce Products/Variants. It also supports content for all Craft core fields, Neo, Super Table and most (simple) third-party fields. But Zen is built when extensibility in mind, so you can extend or add new elements/fields as required.

Configure and preview the changes before you commit to importing them.

Putting it to the test#

You might have already spied some new design elements on our website, as we felt it was high time to refresh things after 6 years. One of the biggest things we wanted to achieve was loading all our plugins on the site, including better categories (due to the sheer number of available plugins), and some more content-driven call-to-actions.

This posed a challenge. How do we go about populating that content, designing and testing it locally for 28 new plugins without having to do everything all over again when we launch the changes?

Such a challenge was exactly what Zen excels at, and as you can see β€” we made it! In fact, it took about 5 minutes from generating the export, double checking the changes to running the import. Without the heartache and stress of dealing with content migrations, we're happy to say it all went incredibly smoothly. We were able to model up our content locally without having to redo the work on staging/production.

Wrapping up#

We hope you find Zen useful and another toolkit in your belt when it comes to handling content across multiple environments. We've got some interesting ideas on where Zen might head from here (like a general-purpose import utility, and mapping field content) to rival Feed Me (opens new window), but we'll see where things take us.

Zen (opens new window) is available today for Craft 4 for $99.

Until next time!