Skip navigation
Tyssen Design — Brisbane Freelance Web Developer
(07) 3300 3303

My must-have Processwire modules

By John Faulds /

Since I first wrote a review of Processwire more than six years ago, I've gone on to be an active user of the CMS and have used it on quite a few sites over the years. If you do a search for favourite your-preferred-cms plugins/modules/add-ons, you'll get a lot of results, but there doesn't appear to be anything that's been written for Processwire, other than a forum thread which is a few years old now.

ALIF - Admin Links In Frontend

This module displays a configurable set of links to your site's admin from the front end of your site. The links you'll most commonly use will be the one to edit the current page, but you can turn others on and off too as you can see below. (Note Tracy at the top of the list is Tracy Debugger which will be discussed below.)

A screenshot showing the ALIF configuration options

You can also configure where on the screen the toolbar appears and how it looks.

How the toolbar appears on the front end

To have the toolbar appear on your site, add this to a template file, most likely a global file used on every page.

echo $modules->isInstalled("AdminLinksInFrontend") ? $modules->get("AdminLinksInFrontend")->render() : "";

AIOM+ (All In One Minify)

This module will combine and minify CSS and javascript (it also does LESS but I don't use it for that) and minify HTML. To minify single files, you'd do this:

<?= AIOM::CSS('css/stylesheet.css'); ?>

<?= AIOM::JS('js/script.js'); ?>

To combine and minify multiple files:

<?= AIOM::CSS(array('css/file-1.css', 'css/file-2.css', 'css/file-3.css')); ?>

<?= AIOM::JS(array('js/file-1.js', 'js/file-2.js', 'js/file-3.js')); ?>

By default, only files which are in the ProcessWire template folder can be included. If you want to add files outside that folder, you have to turn on the Allow Directory Traversal option. Then use paths relative to your template folder, e.g.

<?= AIOM::CSS('../../assets/css/example.css'); ?>

Unfortunately, this module hasn't been updated for three years, although there is a fork which is being more regularly maintained.

Batch Child Editor

This module allows quick batch creation (titles only or CSV import for other fields), editing, sorting, deletion, and CSV export of all children under a given page.

I don't always use the functionality that this module provides but it's good to have installed for those situations where you do need it.

A screenshot of the Batch Child Editor interface

Database Backups

Create and/or restore database backups from the ProcessWire control panel.

Form Builder

This is a paid module and it actually has a lot more features than I use on most of my sites. The link above gives a detailed breakdown of everything you can do with the module, but the main benefits for me are in its saving of entries to the database, handling of spam via the honeypot method, and ease of modifiying the email notification templates.

A screenshot of the fields tab for the Form Builder module

General settings

This is a handy module for creating an editing interface for miscellaneous bits of information that might appear across a site but not necessarily be related to any one page. You can have as many or few fields listed as you like.

A screenshot of the general settings page


This is a different skin for Processwire's CKEditor fields. To use, add this to Custom Config Options under the Input tab for the field.

skin: "lightwire,/site/modules/LightWire-Skin/skins/lightwire/"

You can see the difference between a CKEditor field with and without the skin applied below.


Markup SEO

Described as the all-in-one SEO solution for ProcessWire, and it's pretty accurate. You can configure which templates to apply it to, what the title format should be, e.g. {title} – {sitename}, which robots meta tags to include (useful for hiding development sites from bots), and a bunch of other useful stuff.

After installation, every page whose template is selected to have the module applied to it, will have an SEO tab.

A screenshot of the SEO tab

To get the output to appear for your pages, you'd add this to your template:

<?= echo $page->seo->render; ?>

Or if you wanted more fine-grained control:

<meta name="description" content="<?=$page->seo->description?>">
<meta name="keywords" content="<?=$page->seo->keywords?>">
<meta name="robots" content="<?=$page->seo->robots?>">

Menu Builder

Easily create navigation lists and menus using a drag and drop interface. This module is similar to Markup Simple Navigation but will give you more fine-grained control over what appears in the menu, i.e. it will only display what you manually add to it. That might be an advantage or disadvantage depending on your situation, but it's closer to how the menu builder in Wordpress works (not saying that's necessarily a good thing or not).

A screenshot of the menu builder interface

To render a menu, add this to your template:

$menu = $modules->get('MarkupMenuBuilder');
options = array();
echo $menu->render('main',$options);

Modules Manager

Module Manager enables you to directly browse the Processwire modules directory from within your own site's control panel, then download and install.

Page Protector

This enables site admins to protect pages from guest access. It can also be used to protect an entire site, which is useful during development. If you want a site to only be viewable to logged in users, you can also add $page->loginForm to a template and then select that template in the settings.

For protecting a site from non-logged-in visitors, I used to use Maintenance Mode, but Page Protector is a bit more flexible.

ProcessWire Upgrades

You could probably make a good argument that this one should be included as core functionality as it is with other CMSs.

A screenshot of the upgrades page

Tracy Debugger

Billed as The ultimate debugging and development tool for ProcessWire, it includes 35+ custom tools designed for effective ProcessWire debugging and lightning fast development.

The settings page for the module is huge, so I won't try and list all the possible data you can output with it. Best just to install it and have a play around.

But below is just an example of the output. Hovering over each icon will reveal a different panel of information.

A screenshot showing the Tracy Debugger toolbar
The panel shown is related to the graph icon (currently says 815.4 ms)

Version Control for Text Fields

This module provides simplified version control for text type fields. When editing pages, fields with old revisions available show up with a new icon in their header bars. By hovering that icon you get a list of available revisions and by clicking any one of those the value of that particular field is reverted to that revision.

This is what appears when hovering over the little clock icon for the Body field

XML Sitemap

This module will automatically generate an XML sitemap at for use with Google Webmaster Tools etc.