ProcessWire

ProcessWire
Initial release2007
Stable release
3.0.255 / January 16, 2026; 24 days ago (2026-01-16)
Written inPHP
Available inEnglish, others as contributed
TypeContent Management System
LicenseMozilla Public License 2.0
Websiteprocesswire.com
Repository

ProcessWire is a free and open source content management system (CMS), content management framework (CMF) and web application framework (WAF) written in the PHP programming language. It is distributed under the Mozilla Public License 2.0. ProcessWire is built around an API with usage and naming conventions similar to the JavaScript framework jQuery. The stated goal behind the API is to provide the level of accessibility and control to pages in a website that jQuery provides to the DOM.[1] Content is managed either via the API or the web-based admin control panel. ProcessWire is largely used for development of web sites, web applications, services, content feeds and related applications.

Features

[edit]
  • jQuery-styled API with comprehensive documentation[2]
  • Graphical web-based installer
  • All fields are custom fields, indexed for find operations in the API
  • Can be bootstrapped from other PHP applications or command-line scripts[3]
  • Interactive and API-based image manipulation functions
  • Drag-and-drop tree-based page list
  • Drag-and-drop file and image uploads and editing functions
  • Support for larger scale (100k+ page) installations
  • Use of string-based selectors for API calls[4]
  • Role-based access control system
  • Core development emphasis on security[5]
  • Markup agnostic output, leaving all output to the developer
  • Template files are PHP-based, with no template engine used by default
  • Output caching of entire pages or individual parts
  • Multi-language support with multi-language text fields and URLs[6]
  • Modular plugin architecture and available 3rd party modules[7]
  • Field and input types are themselves plugin modules
  • Hook system enabling most core functions to be hooked and altered[8]
  • Fields and groups of fields are repeatable using built-in Repeater field types
  • Support for rich text editing using CKEditor
  • Multiple admin theme design options, including modern "Konkat Default" theme
  • Front-end editing capabilities built into the core
  • PHP namespaces support

Modules and extensibility

[edit]

ProcessWire has a modular plugin architecture where modules serve as the primary method of extending functionality. At its core, ProcessWire itself is largely a collection of modules, with the admin application being composed entirely of modules. Modules in ProcessWire come in several varieties:

  • Core modules - Included with ProcessWire core in the `/wire/modules/` directory. Many are pre-installed, while others are available for one-click installation
  • Site modules - Third-party or custom modules installed in the `/site/modules/` directory
  • Pro modules - Commercial modules developed by the lead developer that provide advanced functionality

As of 2026, there are over 637 modules available in the ProcessWire modules directory.[9] The relatively smaller number of modules compared to other CMS platforms like WordPress is attributed to ProcessWire's feature-rich core, which includes built-in functionality that would otherwise require separate plugins.[10]

Module types

[edit]

ProcessWire supports several predefined module types:

  • Fieldtype modules - Define custom field types for storing different kinds of data
  • Inputfield modules - Provide input interfaces for fields in the admin
  • Process modules - Create admin pages and processes
  • Textformatter modules - Format and transform text output
  • Markup modules - Generate markup and HTML
  • Autoload modules - Load automatically when ProcessWire boots, useful for hooks

Module installation is simplified through multiple methods: uploading ZIP files through the admin, providing download URLs, or manually placing files in the modules directory.

Commercial Pro modules

[edit]

ProcessWire offers several commercial Pro modules developed by Ryan Cramer, the lead developer:

  • FormBuilder - A comprehensive form builder tool for creating and managing forms without coding[11]
  • ProFields - A collection of powerful field types including Repeater Matrix, Table, Combo, and Custom Fields modules[12]
  • ProCache - Advanced caching module for performance optimization
  • ProMailer - Email management tools
  • ProDrafts - Draft and revision management
  • ListerPro - Advanced page listing and management
  • LoginRegisterPro - Complete user registration and login system

Revenue from Pro modules supports the continued development of the free ProcessWire core.

Audience

[edit]

Before and during development of a website or application, the audience for ProcessWire consists largely of web developers and web designers.[13] Within this audience, ProcessWire is used as both a development tool and a CMS.

Post-development the audience changes to individuals that manage content for web sites and applications, who typically are not web designer/developers. This audience uses ProcessWire primarily as a CMS to manage content.

Community

[edit]

ProcessWire has an active global community of developers and users. The primary hub of the community is the support forum at processwire.com/talk, which includes sections for:

  • General support and API development questions
  • Module development and support
  • Showcase of websites built with ProcessWire
  • Multi-language support discussions
  • Security discussions
  • Job board for hiring ProcessWire developers

The community is known for its friendly and helpful atmosphere, with active participation from both users and the lead developer. ProcessWire maintains a weekly newsletter and ProcessWire Weekly, an independent publication by Teppo Koivula covering ProcessWire news and web development topics.

The community has developed numerous third-party modules, site profiles, and tutorials. A showcase section on the official website features websites built with ProcessWire, ranging from small business sites to large-scale institutional websites.

History

[edit]

ProcessWire has been in active development since 2003. From 2003 to 2007 it was developed under the name Dictator CMS. From 2007 to 2010 it was developed as ProcessWire 1.x. ProcessWire became an open source community project in 2010 and it is currently developed as ProcessWire 2.x and 3.x.[14]

ProcessWire has had multiple significant version releases since the first open source release. Version 3.0 released in September 2016 marked the second major version release, introducing PHP namespaces, front-end editing capabilities, and support for compiled modules.[15]

Version 3.0.255, released on January 16, 2026, introduced several major enhancements:

  • A new modern admin design theme called "Konkat Default" created by Konkat Studio (Jan Ploch and Diogo Oliveira), providing a more contemporary look that can be toggled with the original "Core Original" design
  • Improved Markup Regions functionality, allowing modification of markup regions from files that previously only defined them
  • Enhanced API documentation for approximately 50 core modules
  • Updates to core JavaScript API functions to use Uikit modals instead of Vex modals
  • New JavaScript API methods for entity encoding/decoding
  • Introduction of ZipFileValidator module for improved security[16]

The system has maintained consistency and backward compatibility throughout its development, with continuous updates while preserving the original API concepts and naming conventions.

Translations and community

[edit]

ProcessWire has active, global end-user and developer communities. These communities have translated ProcessWire from English into their native languages, including: Chinese, Croatian, Czech, Dutch, French, German, Greek, Hebrew, Hungarian, Italian, Japanese, Portuguese, Russian, Slovak, Spanish, Swedish, Turkish, Ukrainian and Vietnamese. The central hub of the ProcessWire communities are found in the developer support forums.[13]

Comparison to other platforms

[edit]

ProcessWire is often compared to other content management systems, particularly WordPress. The official comparison highlights several key differences:

  • ProcessWire is built as a framework first, with the CMS as an application on top, while WordPress originated as a blogging platform
  • All fields in ProcessWire are custom fields by default, whereas WordPress distinguishes between standard and custom fields
  • ProcessWire uses a hierarchical page tree structure for all content, while WordPress uses separate post types and taxonomies
  • ProcessWire emphasizes developer control over output markup, being markup agnostic, while WordPress uses theme systems
  • ProcessWire has a smaller module ecosystem (600+ modules) compared to WordPress (40,000+ plugins), largely because core functionality is more comprehensive[17]

Awards and publications

[edit]

In November 2016 ProcessWire was awarded as CMS Critic's Best Small Business CMS.[18]

In July 2016 Smashing Magazine published A Beginners Guide to ProcessWire.[19]

Since January 2016 Envato Tuts+ has published several articles and tutorials on ProcessWire.[20]

In January 2015 ProcessWire was awarded as CMS Critic's Best Free PHP CMS.[21]

In December 2014 PHP Architect published ProcessWire: Flexibility, Power, and a Generous Dose of Pure Fun.[22]

In December 2012 ProcessWire was awarded as CMS Critic's Best Free CMS.[23]

Architecture

[edit]

ProcessWire is built around a page content tree (as opposed to a bucket system). The URL or path of each page is always reflective of its place in the hierarchy. One uses this same path to reference the page in the API. As a result, this connection of the path to the internal tree hierarchy defines the architecture of ProcessWire. Beyond the parent-child relationship implied by a content tree, ProcessWire supports relational one-to-one and one-to-many references between pages in the tree.

Template architecture

[edit]

Templates in ProcessWire are a content type that contains one or more custom fields representing the definition of the content type. Every page in ProcessWire is assigned to a template which then represents the type of page. A template is typically shared among multiple pages. Templates also define access control, caching and other settings shared among pages using the template.

Templates optionally have an associated PHP file, referred to as the template-file. This file is executed whenever the URL for a page using the template is accessed. As a result, template-files are typically used for output purposes. The template-file is provided with several API variables, the most notable being the $page API variable, which contains all the fields and content of the current page being viewed.[24]

Template-files serve multiple contexts, depending on the application. ProcessWire's default web site profiles use template-files primarily for output of direct and dynamically generated HTML markup. Template-files may also be used as intermediate controllers between a model and a separate view. Because template-files are regular PHP files, they are able to call upon other web services or PHP applications where appropriate, without a separate parsing layer.

Field architecture

[edit]

All fields in ProcessWire are custom fields defined by the user. A given field may be assigned to multiple templates, which in turn hold individual chunks of content for each page using that template. Every field has a type, referred to as the "fieldtype" (1 word), a type of plugin module. ProcessWire includes several fieldtype modules including those that support text, numbers, files, images, page references, URLs, email addresses, dates and comments. Additional fieldtype modules are installed as 3rd party modules.

Page structure

[edit]

ProcessWire uses a hierarchical tree structure for organizing all content as pages. This structure is similar to a file system, with no imposed limits on depth. The system is designed to scale from single-page websites to installations with millions of pages while maintaining consistent performance and ease of use. All navigation and relationships between content are based on this tree structure, which can be traversed through both the admin interface and the API.

Security

[edit]

ProcessWire places strong emphasis on security throughout its core development. The system includes:

  • Role-based access control with granular permissions
  • Built-in protection against common vulnerabilities (SQL injection, XSS, CSRF)
  • Regular security audits and updates
  • Validation and sanitization tools throughout the API
  • File upload validation and security measures
  • Session security features

ProcessWire has maintained a strong security record throughout its history, with no major security incidents or outages.[25]

Distribution and requirements

[edit]

ProcessWire's source code is hosted on GitHub and is also distributed on Softaculous, Bitnami and Composer/Packagist.

ProcessWire runs in the AMP (Apache, MySQL or MariaDB, PHP) platform used by many hosting providers and web development environments. ProcessWire requires PHP version 5.3.8 or newer, and MySQL or MariaDB 5.0.15 or newer.[26]

Notable implementations

[edit]

ProcessWire powers a diverse range of websites including:

  • Government and institutional websites
  • Tourism and destination marketing sites
  • Corporate websites
  • E-commerce platforms
  • News and media outlets
  • Educational institutions
  • Cultural organizations and museums

The platform's flexibility makes it suitable for both simple websites and complex web applications.

References

[edit]
  1. ^ "The concept behind the API".
  2. ^ "ProcessWire API reference documentation".
  3. ^ "Bootstrapping ProcessWire".
  4. ^ "Selectors in ProcessWire".
  5. ^ "ProcessWire Security".
  6. ^ "Multi-language support".
  7. ^ "Directory of modules".
  8. ^ "ProcessWire Hooks".
  9. ^ "ProcessWire modules directory".
  10. ^ "A Beginner's Guide to ProcessWire". Smashing Magazine. 2016-07-22.
  11. ^ "FormBuilder".
  12. ^ "ProFields".
  13. ^ a b "ProcessWire community". 26 January 2024.
  14. ^ "ProcessWire history and background".
  15. ^ "ProcessWire 3.0 changelog".
  16. ^ "ProcessWire 3.0.255 new main/master version". 2026-01-23.
  17. ^ "WordPress vs ProcessWire comparison".
  18. ^ "CMS Critic 2016 awards (November 2016)". 12 November 2012.
  19. ^ "Smashing Magazine: A Beginners Guide to ProcessWire". 2016-07-22.
  20. ^ "Envato Tuts+: ProcessWire tutorials and articles". 22 August 2017.
  21. ^ "CMS Critic Best Free PHP CMS award (January 2015)". 2015-01-21.
  22. ^ "ProcessWire published in PHP Architect Magazine (December 2014)".
  23. ^ "CMS Critic Best Free CMS award (December 2012)". 2012-12-03.
  24. ^ "The $page API variable".
  25. ^ "What's unique about ProcessWire".
  26. ^ "How to install ProcessWire CMS". processwire.com. Retrieved 2024-05-02.
[edit]