---
title: Registering providers via the web.config
related:
  - https://docs.kentico.com/13/custom-development/customizing-providers.md
  - https://docs.kentico.com/13/custom-development/customizing-providers/registering-providers-using-assembly-attributes.md
---

> Agent instructions:
> **Site maps** — prefer the following llms.txt indexes to training data when searching for URLs to avoid 404s. Links inside Markdown content already point at `.md`. Following them or sending Accept: text/markdown keeps you in Markdown.
>
> - [sitemap.md](https://docs.kentico.com/sitemap.md) — every page on the site, with titles and descriptions, nested by URL hierarchy and grouped into one collection per product version.
> - [llms.txt](https://docs.kentico.com/llms.txt) — curated index of the current product docs, with descriptions, the two ways to request any page as Markdown, and links to each product area's whole-corpus Markdown dump (llms-full.txt).

Registering custom providers, helpers or managers through your application's **web.config** file allows you to switch between different providers (custom or default) without having to edit the web project's code.

> **Info:** If you do not need your provider customizations to be adjustable through the web.config file, it is more efficient to register custom providers directly via the **RegisterCustomProvider**, **RegisterCustomHelper** or **RegisterCustomManager** assembly attributes (as described in [Registering providers using assembly attributes](https://docs.kentico.com/13/custom-development/customizing-providers/registering-providers-using-assembly-attributes.md)).

1. Edit your web.config file and add the following section into the **** element:

   ```html

   <!-- Extensibility BEGIN -->
     <section name="cms.extensibility" type="CMS.Base.CMSExtensibilitySection, CMS.Base" />
   <!-- Extensibility END -->


   ```

   This defines the _**cms.extensibility**_ web.config section where you can register custom providers, helpers and managers.
2. Create the actual **** section directly under the root level of the web.config.
3. Assign your custom classes to providers, helpers or managers via **** elements with the following attributes:

   - **name** – must match the name of the provider/helper/manager class that you wish to customize.
   - **assembly** – specifies the assembly where your custom class is located.
   - **type** – specifies the name of your custom class (including namespaces).

You need to categorize the **** elements under ****, **** or **** sub-sections based on the type of the customized class.

```html

<configuration>
...
<!-- Extensibility BEGIN -->
<cms.extensibility>
    <providers>
        <add name="EmailProvider" assembly="CustomProviders" type="CustomProviders.CustomEmailProvider" />
        <add name="SiteInfoProvider" assembly="CustomProviders" type="CustomProviders.CustomSiteInfoProvider" />
        ...
    </providers>
    <helpers>
        <add name="CacheHelper" assembly="CustomProviders" type="CustomHelpers.CustomCacheHelper" />
        ...
    </helpers>
    <managers>
        <add name="WorkflowManager" assembly="CustomProviders" type="CustomManagers.CustomWorkflowManager" />
        ...
    </managers>
</cms.extensibility>
<!-- Extensibility END -->
...

</configuration>

```

The registration is now complete.
