<p>A good place to put interfaces and tools that aren't super expansive or accessed very often is the Utilities section in the backend. Adding new utilities is very simple, you just add a class that implements the <a href="https://docs.craftcms.com/api/v3/craft-base-utilityinterface.html" rel="nofollow noreferrer">Utility interface</a> (you can extend the base class, then you only have to provide a title and the HTML body). Then register that utility class using the event <code>Utilities::EVENT_REGISTER_UTILITY_TYPES</code>. See the <a href="https://craftcms.com/docs/3.x/extend/utility-types.html" rel="nofollow noreferrer">documentation on Utility Types</a> for details.</p>
<p>You can also add new top-level items to the navigation menu. First, add a <a href="https://craftcms.com/docs/3.x/extend/controllers.html" rel="nofollow noreferrer">controller</a> that responds to a URL with the HTML content for your custom page. Then use the event <code>Cp::EVENT_REGISTER_CP_NAV_ITEMS</code> to add a custom link to the control panel navigation that links to your controller action. See the <a href="https://craftcms.com/docs/3.x/extend/cp-section.html" rel="nofollow noreferrer">documentation on Control Panel Sections</a> for details.</p>
<p>Custom utility types, controllers and event hooks can be placed in a site-specific module. See the documentation on <a href="https://craftcms.com/docs/3.x/extend/module-guide.html" rel="nofollow noreferrer">How to Build a Module</a>. Those are usually placed in the <code>modules/</code> directory in your project.</p>

CC BY-SA 4.0
2021-11-19T14:11:21.180Z
2021-11-19T14:22:39.690Z
2021-11-19T14:22:39.690Z
MoritzLost
<p><a href="https://i.sstatic.net/fNRNS.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/fNRNS.png" alt="folder structure craft 3" /></a><a href="https://i.sstatic.net/L1sMB.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/L1sMB.png" alt="design new page" /></a></p>
I need an to add an import page to a craft CMS. But although I have experience as a full stack programmer I don't see how to add a page to the menu of the CMS. How is this done? Can anyone tell me? I just need a page with an input component on it. The rest I would like to do with Javascript interfacing with GraphQL.


<craft3>
How do I add an import page to Craft CMS
# How do I add an import page to Craft CMS

(Asked by: username_0 on 2021-11-19)

[![folder structure craft 3](https://i.sstatic.net/fNRNS.png)](https://i.sstatic.net/fNRNS.png)[![design new page](https://i.sstatic.net/L1sMB.png)](https://i.sstatic.net/L1sMB.png)

I need an to add an import page to a craft CMS. But although I have experience as a full stack programmer I don't see how to add a page to the menu of the CMS. How is this done? Can anyone tell me? I just need a page with an input component on it. The rest I would like to do with Javascript interfacing with GraphQL.

**Tags:** craft3

---

## 1 answers

### Answer by username_1 on 2021-11-19. Score: 2 | Accepted answer

A good place to put interfaces and tools that aren't super expansive or accessed very often is the Utilities section in the backend. Adding new utilities is very simple, you just add a class that implements the [Utility interface](https://docs.craftcms.com/api/v3/craft-base-utilityinterface.html) (you can extend the base class, then you only have to provide a title and the HTML body). Then register that utility class using the event `Utilities::EVENT_REGISTER_UTILITY_TYPES`. See the [documentation on Utility Types](https://craftcms.com/docs/3.x/extend/utility-types.html) for details.

You can also add new top-level items to the navigation menu. First, add a [controller](https://craftcms.com/docs/3.x/extend/controllers.html) that responds to a URL with the HTML content for your custom page. Then use the event `Cp::EVENT_REGISTER_CP_NAV_ITEMS` to add a custom link to the control panel navigation that links to your controller action. See the [documentation on Control Panel Sections](https://craftcms.com/docs/3.x/extend/cp-section.html) for details.

Custom utility types, controllers and event hooks can be placed in a site-specific module. See the documentation on [How to Build a Module](https://craftcms.com/docs/3.x/extend/module-guide.html). Those are usually placed in the `modules/` directory in your project.


---

