[Development Guides Home](/guides) >> [Quickstart Development Guide](/guides/quickstart-development-guide) # Quickstart Development Guide - cPanel ## Introduction Custom cPanel applications can automate and customize website management functions. Third-party developers can create cPanel applications for distribution to their customers in the hosting community. Server owners may want to create private applications in order to offer special functionality for their customers or integrate business functions into the cPanel interface. You can also customize the cPanel interface. For more information about custom styles, branding, UI includes, and other customizations, read our [Guide to cPanel Interface Customization and Branding](/guides/guide-to-cpanel-interface-customization-and-branding). ## Get started developing for cPanel ### Get a development license If you do not already have access to a cPanel & WHM server, [get a development license](https://cpanel.com/developer-license-app/) and [install cPanel & WHM](https://docs.cpanel.net/installation-guide/). Some cPanel developers will require `root`-level access to the server in order to troubleshoot their custom code. ### Get to know the cPanel APIs Almost all cPanel development projects require the use of one of our cPanel APIs. The cPanel APIs contain functions that access all of the functionality that users can find in the cPanel interface. div Warning: Do **not** attempt to use cPanel or WHM interface URLs to perform actions in custom code. You **must** call the appropriate API functions in order to perform the actions of cPanel & WHM's interfaces. For example, do **not** pass values to `.html` pages, as in the following example: ``` http://example.com:2082/frontend/x3/mail/doaddpop.html/email=name&domain=user.com ``` While this **unsupported** method sometimes worked in previous versions of cPanel & WHM, we **strongly** discourage its use and do **not** guarantee that it will work in the future. Instead, the correct method to perform this action is to call the appropriate API function. * We encourage all developers to use our newest cPanel API, [UAPI](/cpanel/introduction). * You can call cPanel's APIs through your web browser in a cPanel or Webmail session, through custom scripts or modules, or cPanel's [*API Shell*](https://docs.cpanel.net/cpanel/advanced/api-shell-for-cpanel/) interface (*cPanel >> Home >> Advanced >> API Shell*). For more information, read our [Guide to UAPI](/cpanel/introduction) documentation. ### Try out the Standardized Hooks system Many cPanel development projects use the Standardized Hooks system's `Cpanel` functions. You can create Standardized Hooks for any cPanel API 2 or UAPI functions and cause them to trigger your own custom code in order to customize cPanel's functionality. * You can write Standardized Hooks as custom Perl modules, or as Perl or PHP scripts. * Standardized Hooks can trigger before or after cPanel API functions or cPanel interface actions. For more information, read our [Guide to Standardized Hooks](/guides/guide-to-standardized-hooks) documentation. ### Write your application's backend code After you become familiar with cPanel's APIs and Standardized Hooks, you can write your application. * Most developers write cPanel & WHM applications in PHP or Perl. * If you develop in Perl, read our [Guide to Perl in cPanel & WHM](/guides/guide-to-perl) documentation. * Applications that integrate with cPanel **must** authenticate as a cPanel user, or must authenticate as a WHM user and specify a cPanel user to run as, if you call a cPanel function via the WHM API 1. For more information, read our [Guide to API Authentication](/guides/guide-to-api-authentication) documentation. ### Add interfaces to cPanel Developers can add interfaces to cPanel, and add their icons to cPanel's [*Home*](https://docs.cpanel.net/cpanel/the-cpanel-interface/the-cpanel-interface/) interface. * We recommend that you write cPanel interfaces in [Template Toolkit](/guides/guide-to-template-toolkit) templates. * cPanel & WHM's [locale system](/guides/guide-to-locales) can localize interfaces as well as command line output, which allows you to make your application usable globally. You can also customize the cPanel interface. For more information about custom styles, branding, UI includes, and other customizations, read our [Guide to cPanel Interface Customization and Branding](/guides/guide-to-cpanel-interface-customization-and-branding). For more information, read our [Guide to cPanel Plugins](/guides/guide-to-cpanel-plugins) documentation. ### Register your application. Many scripts and some applications do not need to register if they run only in the background or from the command line. You only need to register your application if it includes a custom interface. When your application is ready, if you need to register it in the cPanel interface, [use the `install.json` file method](/guides/guide-to-cpanel-plugins/guide-to-cpanel-plugins-add-plugins) to register it. ### Test your code div Warning: cPanel Technical Support cannot always assist third-party developers with problems that relate to custom code. For this reason, **always** test your projects **thoroughly** before you attempt to use them on production servers. You can avoid many common issues when you test your code regularly throughout the development process. Make certain that you evaluate the testing requirements of your own code, and allow its functionality to determine the appropriate steps. For suggested testing steps, read our [Guide to Testing Custom Code](/guides/guide-to-testing-custom-code) documentation. ### Need more help? Several options are available if you need help with a development project: * Ask your question on our [cPanel Developers Forum](https://forums.cpanel.net/cpanel-developers.html). * Reach out to us in [Discord](https://go.cpanel.net/discord). If you think that you found a bug in an API or another cPanel development tool, contact [cPanel Technical Support](https://tickets.cpanel.net/) with your issue.