[Development Guides Home](/guides) # Guide to cPanel Plugins ## Introduction cPanel plugins add new functionality to the cPanel interface. Third-party developers can add features to the cPanel *Tools* interface that link to new cPanel interfaces or to other files or locations. For information about WHM plugins, read our [Guide to WHM Plugins](/guides/guide-to-whm-plugins/) documentation. Note: Make certain that your applications respect user privacy. We strongly recommend that you anonymize any data that you collect for analysis. For more information about how WebPros International, LLC handles private data, read our [cPanel Analytics](https://docs.cpanel.net/knowledge-base/cpanel-product/cpanel-analytics/) documentation. ## Plugin development workflow This section describes how to create and install your plugins for the cPanel interface. ### How to create your plugin When you create a cPanel plugin, we recommend that you use the following workflow: Note: You can also create a cPanel plugin with WHM's [*cPanel Plugin File Generator*](https://docs.cpanel.net/whm/development/cpanel-plugin-file-generator/) interface (*WHM >> Home >> Development >> cPanel Plugin File Generator*). 1. Create your custom application (the plugin's backend code). * cPanel's interface incorporates the [RequireJS module loader](https://requirejs.org). RequireJS may conflict with the [webpack module loader](https://webpack.js.org). We **strongly** recommend that you do not use webpack with any cPanel plugin or custom interface that you develop. 2. [Create the plugin's interfaces](#plugin-files). * For more information about how to create a new cPanel interface, read our [Create a New cPanel Interface](/guides/quickstart-development-guide/tutorial-create-a-new-cpanel-interface/) and [Create a New cPanel Interface in PHP](/guides/quickstart-development-guide/tutorial-create-a-new-cpanel-interface-in-php/) tutorials. * For more information about how to customize the appearance of the cPanel interface, read our [Guide to cPanel Interface Customization and Branding](/guides/guide-to-cpanel-interface-customization-and-branding/) documentation. #### Plugin files cPanel interfaces can include HTML, [Template Toolkit](/guides/guide-to-template-toolkit/), PHP, or CGI files. * Store plugin interface files in the `/usr/local/cpanel/base/frontend/theme/` directory, where `theme` represents `jupiter` or another theme on the server. * Access these files from the `https://example.com:2083/frontend/theme/filename` URL, where: * `example.com` represents the domain or IP address. * `theme` represents `jupiter` or another theme on the server. * `filename` represents the interface file's name. For example, if you create a custom *Support* interface in the `customsupport.html` file, use the following locations: * Store the file in the following location on the server: `/usr/local/cpanel/base/frontend/jupiter/customsupport.html` * Access this file at the following URL: `https://example.com:2083/frontend/jupiter/customsupport.html` Note: Additional resources to help you match custom interfaces to the cPanel interface exist in our **experimental** [User Interface Style Guide](http://styleguide.cpanel.net/#/home). ### How to install your plugin To install your plugin, perform the following steps: 1. Add the plugin to the cPanel interface. You **must** [create an `install.json` file](/guides/guide-to-cpanel-plugins/guide-to-cpanel-plugins-add-plugins/). 2. Write a [plugin installation script](#installation-scripts). 3. Compress your plugin for distribution. This step is optional. * The compressed file contains the application source files, the plugin registration file, and the installation script. * We recommend that you compress your plugin as a tarball (`.tar.gz`) file. However, the `install_plugin` script supports `.tar.gz`, `.bzip`, and `.zip` files, and uncompressed directories. 4. Use [the `/usr/local/cpanel/scripts/install_plugin` script](#the-install_plugin-script) to install the plugin. * The `/usr/local/cpanel/scripts/install_plugin` script extracts plugin files for you but does **not** move the files to the [directories](#plugin-files). Instead, your installation script **must** perform this action. #### Installation scripts Write any plugin installation scripts in your preferred programming language. Plugin installation scripts must perform the following functions: 1. Verify that the system is compatible with the plugin. For example, confirm that the server uses a compatible version of cPanel & WHM. 2. Use the `wget` or `curl` commands to download the compressed plugin file. 3. Extract the compressed file's contents to the appropriate locations. 4. Use [the `/usr/local/cpanel/scripts/install_plugin` script](#the-install_plugin-script) to install the plugin. 5. Remove any installation files that remain. ### The install_plugin script To use the `install_plugin` script, read [The install_plugin script](https://docs.cpanel.net/whm/scripts/the-install_plugin-script/) documentation. ## Plugin Development Guides * [Guide to cPanel Plugins - Add Plugins](/guides/guide-to-cpanel-plugins/guide-to-cpanel-plugins-add-plugins) * [Guide to cPanel Plugins - Pluggable Statistics Modules](/guides/guide-to-cpanel-plugins/guide-to-cpanel-plugins-pluggable-statistics-modules) * [Guide to cPanel Plugins - The Dynamicui Files](/guides/guide-to-cpanel-plugins/guide-to-cpanel-plugins-the-dynamicui-files) * [Guide to cPanel Plugins - Uninstall Plugins](/guides/guide-to-cpanel-plugins/guide-to-cpanel-plugins-uninstall-plugins)