{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Development Guides and Tutorials","description":"With its world-class support and rich feature set, cPanel &amp; WHM has been the industry-leading web hosting platform for over 20 years. Trusted worldwide by our technology partners WordPress, CloudLinux, LiteSpeed, and more.","siteUrl":"https://api.docs.cpanel.net/","image":"/assets/cpanel-whm.ccd85fdccb18de0645f8a6ebf38e36a0489b92fc9d4ca92776f06aa5a160b167.db81178d.svg","keywords":"documentation, api, portal, cpanel","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"development-guides-and-tutorials","__idx":0},"children":["Development Guides and Tutorials"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview","__idx":1},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Welcome to our Developer Guide and Tutorials page. You can find information about integrating and customizing interfaces with cPanel & WHM."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"guides","__idx":2},"children":["Guides"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-testing-custom-code"},"children":["Guide to Testing Custom Code"]}," — This guide explains the basics of how to test your custom code."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-cpanel-interface-customization-and-branding"},"children":["Guide to cPanel Interface Customization and Branding"]}," — You can use several different methods to modify the appearance of the cPanel interface."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-cpanel-plugins"},"children":["Guide to cPanel Plugins"]}," — cPanel plugins add new functionality to the cPanel interface."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-whm-plugins"},"children":["Guide to WHM Plugins"]}," — WHM plugins add new functionality to the WHM interface."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-whm-dynamicui-files"},"children":["Guide to WHM dynamicui Files"]}," — WHM themes use dynamicui files to display icons and groups."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-template-toolkit"},"children":["Guide to Template Toolkit"]}," — Template Toolkit is the main template system for the cPanel and WHM interfaces."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-site-publisher-templates"},"children":["Guide to Site Publisher Templates"]}," — You can create your own custom templates for cPanel's ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://docs.cpanel.net/cpanel/domains/site-publisher/"},"children":["Site Publisher"]}," feature."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-api-authentication"},"children":["Guide to API Authentication"]}," — cPanel & WHM supports several API authentication methods."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-standardized-hooks"},"children":["Guide to Standardized Hooks"]}," — Standardized Hooks trigger applications when cPanel & WHM performs an action."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-package-extensions"},"children":["Guide to Package Extensions"]}," — Package extensions add custom fields to packages and accounts."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-perl"},"children":["Guide to Perl in cPanel & WHM"]}," — cPanel & WHM ships with multiple Perl environments."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-cpanel-variables"},"children":["Guide to cPanel Variables"]}," — The ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-the-liveapi-system"},"children":["LiveAPI system"]}," and ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-cpanel-plugins/guide-to-cpanel-plugins-add-plugins"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["dynamicui"]}," files"]}," can access cPanel's global variables."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-locales"},"children":["Guide to Locales"]}," — The locale system localizes text in Perl, Template Toolkit, or JavaScript code."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-the-liveapi-system"},"children":["Guide to the LiveAPI System"]}," — The LiveAPI System provides environments for applications in the cPanel interface."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-custom-dnsadmin-plugins"},"children":["Guide to Custom dnsadmin Plugins"]}," — Custom dnsadmin plugins can update DNS records on external systems."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-api-privilege-escalation"},"children":["Guide to API Privilege Escalation"]}," — To run a function with escalated privileges, call a function through the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Call"]}," method or use the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["send_cpwrapd_request"]}," pluggable wrapper."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-external-authentication"},"children":["Guide to External Authentication"]}," — External Authentication modules allow users to log in through OpenID Connect-compliant identity providers."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-cpanel-market-provider-modules"},"children":["Guide to cPanel Market Provider Modules"]}," — This document explains how to create a third-party custom cPanel Market provider module with basic functionality."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-transfer-and-restore-api-functions"},"children":["Guide to Transfer and Restore API Functions"]}," — The system uses several WHM API 1 functions during the transfer and restore process."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-report-receiver-apis-for-the-modsecurity-rule-reports"},"children":["Guide to Report Receiver APIs for the ModSecurity Rule Reports"]}," — This document describes report receiver API endpoints for the ModSecurity™ Rule Reports."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-replacing-cpanel-api-1-functions-with-uapi-equivalents"},"children":["Guide to Replacing cPanel API 1 Functions with UAPI Equivalents"]}," — This document lists the UAPI functions that replace previously-deprecated cPanel API 1 functions."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-integration-links"},"children":["Guide to Integration Links"]}," — Integration links create a link in a user's cPanel interface using WHM API 1."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-third-party-autossl-provider-modules/"},"children":["Guide to Third-Party AutoSSL Provider Modules"]}," — AutoSSL provider modules allow your server's users to automatically secure locally-hosted domains on their accounts with certificates from that SSL certificate provider."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-custom-service-notifications"},"children":["Guide to Custom Service Notifications"]}," — You can create modules to send notifications to custom services."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-custom-plugins-in-log-retention-script/"},"children":["Guide to Custom Plugins in log_retention Script"]}," — This document explains how to create custom plugins for ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://docs.cpanel.net/whm/scripts/the-log_retention-script/","target":"_blank"},"children":["the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/usr/local/cpanel/scripts/log_retention"]}," script"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/guide-to-custom-pkgacct-components"},"children":["Guide to Custom Pkgacct Components"]},". This document explains how to create custom components for ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://docs.cpanel.net/whm/scripts/the-pkgacct-script/","target":"_blank"},"children":["the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["/usr/local/cpanel/scripts/pkgacct"]}," script"]},". Use components to include more data in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cpmove"]}," archive."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"tutorials","__idx":3},"children":["Tutorials"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/quickstart-development-guide/tutorial-add-a-link-to-the-cpanel-interface"},"children":["Add a Link to the cPanel Interface"]}," — This tutorial adds an icon that links to an external location to the cPanel interface."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/quickstart-development-guide/tutorial-call-uapis-ssl-install-ssl-function-in-custom-code"},"children":["Call UAPI's SSL::install_ssl Function in Custom Code"]}," — This tutorial creates custom code to call UAPI's ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://api.docs.cpanel.net/openapi/cpanel/operation/install_ssl/"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SSL::install_ssl"]}]}," function."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/quickstart-development-guide/tutorial-create-a-modsecurity-vendor"},"children":["Create a ModSecurity Vendor"]}," — This tutorial describes how to create a custom ModSecurity™ vendor."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/quickstart-development-guide/tutorial-create-a-new-cpanel-interface"},"children":["Create a New cPanel Interface"]}," — This tutorial uses Template Toolkit to create a new cPanel interface."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/quickstart-development-guide/tutorial-create-a-new-cpanel-interface-in-php"},"children":["Create a New cPanel Interface in PHP"]}," — This tutorial uses PHP to create a new cPanel interface."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/quickstart-development-guide/tutorial-create-a-new-whm-interface-in-php"},"children":["Create a New WHM Interface in PHP"]}," — This tutorial uses PHP to create a new WHM interface."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/quickstart-development-guide/tutorial-create-a-new-whm-interface-in-template-toolkit"},"children":["Create a New WHM Interface in Template Toolkit"]}," — This tutorial uses Template Toolkit to create a new WHM interface."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/quickstart-development-guide/tutorial-create-a-standardized-hook"},"children":["Create a Standardized Hook"]}," — This tutorial adds custom hooks to preserve a customized configuration file."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/quickstart-development-guide/tutorial-create-a-whm-plugin"},"children":["Create a WHM Plugin"]}," — This tutorial shows how to use WHM plugins to add custom system administrator-level functionality to cPanel & WHM servers."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/quickstart-development-guide/tutorial-create-custom-branded-login-pages"},"children":["Create Custom-Branded Login Pages"]}," — This tutorial creates server-wide custom login pages for the cPanel, WHM, or Webmail interfaces."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/quickstart-development-guide/tutorial-integrate-custom-webmail-applications"},"children":["Integrate Custom Webmail Applications"]}," — This tutorial explains how to integrate custom webmail applications in cPanel's ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://docs.cpanel.net/webmail/the-webmail-interface/"},"children":[{"$$mdtype":"Tag","name":"em","attributes":{},"children":["Webmail"]}]}," interface (",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["cPanel >> Home >> Email >> Email Accounts >> Check Email"]},")."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/quickstart-development-guide/tutorial-localize-text-in-cpanel-plugins"},"children":["Localize Text in cPanel Plugins"]}," — This tutorial creates and installs a fully-localized cPanel plugin."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/quickstart-development-guide/tutorial-register-a-whm-plugin-with-appconfig"},"children":["Register a WHM Plugin with AppConfig"]}," — This tutorial explains how to register a WHM plugin with AppConfig."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/quickstart-development-guide/tutorial-replace-a-cpanel-api-1-function-with-a-uapi-function"},"children":["Replace a cPanel API 1 Function With a UAPI Function"]}," — This tutorial shows how to replace a deprecated cPanel API 1 function with a ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/cpanel/introduction"},"children":["UAPI function"]}," in a cPanel integration or plugin."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/quickstart-development-guide/tutorial-use-uapis-fileman-upload-files-function-in-custom-code"},"children":["Use UAPI's Fileman::upload_files Function in Custom Code"]}," — This tutorial explains the process to upload files with UAPI's ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/openapi/cpanel/operation/upload_files/"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Fileman::upload_files"]}]}," function."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you have questions or need help with your customization project, join the conversation on our ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"http://forums.cpanel.net/cpanel-developers.html"},"children":["cPanel Developers Forum"]},", or reach out to us in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"http://go.cpanel.net/discord"},"children":["Discord"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We encourage anyone who develops for cPanel products to read the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"http://blog.cpanel.net/"},"children":["cPanel Blog"]},", and join our Plugin Developers ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://mail.cpanel.net/mailman/listinfo/plugindevs_cpanel.net"},"children":["mailing list"]},"."]}]},"headings":[{"value":"Development Guides and Tutorials","id":"development-guides-and-tutorials","depth":1},{"value":"Overview","id":"overview","depth":2},{"value":"Guides","id":"guides","depth":2},{"value":"Tutorials","id":"tutorials","depth":2}],"frontmatter":{"seo":{"title":"Development Guides and Tutorials"}},"lastModified":"2026-05-15T19:04:12.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/guides","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}