Translations of this page:

phpList Development


For the complete list of phpList development links, including repositories, documentation, and more, see the development infrastructure page. See also the development environment setup guide.

You can use Docker if you wish, to create a working phpList on your local system from source, for development purposes.

Coding Style

phpList uses coding standards to keep code uniform and consistent with best practice. Your contributions should adhere to these also.

Function index

phpList 3 includes many custom functions to make adding new features easier. These include functions for getting and setting message data, for example. A comprehensive list with documentation of these functions exists in the Function index.


Agreement required

Please sign the Contributor License Agreement (CLA) via GitHub to make managing the legal aspects of the phpList codebase simpler. It is only required once and takes just a few seconds.

Currently it seems to fail on Firefox. If you get an error, please use Chrome instead. We will try to find the cause.

Alternatively sign and send the CLA to us by email or post.

Automated testing

phpList uses both Behat and phpUnit for automated testing.


Guidelines for running and writing user acceptance tests with Behat can be found in testing documentation of the phpList 3 repository.

These tests are automatically executed by Travis.


phpUnit tests for phpList 4 use a custom configuration documented in the phpList 4 documentation folder.

Writing plugins

phpList includes a powerful plugin framework for extending application functionality. Most aspects of phpList's behaviour can be changed via a broad range of plugin hooks. See the comprehensive guide to writing a plugin. A directory of existing plugins exists on the Plugins page.

Unlike contributions to the phpList core applications, plugins can use a variety of different copyright licenses, so long as they are compatible with the license of phpList.

phpList in Docker

To facilitate development of phpList, core code, themes and plugins, you can now set up phpList in docker and work with your local code.

Release versioning

Upcoming releases are tracked on the GitHub. Issues are assigned to 'target versions', which can be a fixed version number (e.g. 4.0.1) or a meta version (e.g. 'Next patch'). Hard numbers represent that the issue needs to be included in a specific release, whereas meta versions represent issues that would be 'nice to have' in the next release of a given type (e.g. patch, minor, or major).