---
title: Customizing providers
---

> 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).

Providers in the Xperience API are classes that allow the system to manipulate objects and perform various actions. The following list presents the providers that the system uses and their purpose:

- **Info providers** contain methods for working with specific types of objects stored in the database, such as users, contacts, custom table records, etc.
- **Data provider** handles low-level database operations. The Info providers are built on top of the Data provider and use it to store and fetch data.
- **Email provider** manages the email queue and sends emails.
- **File system providers** allow you to access various file systems. They extend the CMS.IO namespace. See [Working with physical files using the API](https://docs.kentico.com/13/custom-development/working-with-physical-files-using-the-api.md) to learn how to write a custom file system provider.

By developing custom providers and using them instead of the standard ones, you can modify the behavior of the application (or a specific feature) according to your exact requirements.

> **Info:** **Provider interfaces**
>
> Customizations of provider classes automatically apply to the corresponding provider interfaces (services).
>
> For example, if you develop and register a custom _OrderInfoProvider_, and override its _Set_ method, your customization applies when the _Set_ method of the _IOrderInfoProvider_ service is called.

## Adding your custom code files

When developing custom functionality, we recommend that you place your code files into a **separate Class Library project** (assembly), which you can then reference from your live site or administration web projects.

> **Note:** **Deploying customizations to the live site**
>
> Consider whether you need to deploy the assembly containing custom provider classes to your live site (MVC) application, in addition to the Xperience administration project. This is required if you are customizing any provider that affects functionality on the live site (registration of users, e-commerce activity, automatic sending of emails based on the actions of visitors, etc.).
>
> For additional information, see [Applying customizations in the Xperience environment](https://docs.kentico.com/13/custom-development/applying-customizations-in-the-xperience-environment.md).

## Writing the custom code

Custom provide classes must **inherit from the original class**. This allows you to implement your modifications or additions by overriding the members of the given class. When creating overrides for existing methods, it is recommended to call the original base method within your custom code.

## Registering custom providers

After you write the code, you must register your custom classes to ensure that the system uses them instead of the default providers. You can choose between two options of registering custom provider classes:

- [Using assembly attributes](https://docs.kentico.com/13/custom-development/customizing-providers/registering-providers-using-assembly-attributes.md) – the most straightforward way to register providers.
- [Using the web.config file](https://docs.kentico.com/13/custom-development/customizing-providers/registering-providers-via-the-web-config.md) – allows you to switch between different providers (custom or default) without having to edit the application code.

## Other customization options

In addition to providers, you can also customize the following helper and manager classes:

| Helper class name      | Namespace                 | Description                                                                                                                                                                                                                                                                                                   |
| ---------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| AutomationHelper       | CMS.SalesForce.Automation | Provides [marketing automation](https://docs.kentico.com/13/on-line-marketing-features/managing-your-on-line-marketing-features/marketing-automation.md) support for common actions related to [Salesforce](https://docs.kentico.com/13/integrating-3rd-party-systems/salesforce-integration.md) integration. |
| CacheHelper            | CMS.Helpers               | Handles operations with cache items.                                                                                                                                                                                                                                                                          |
| ClassHelper            | CMS.Base                  | Takes care of dynamically loaded classes and assemblies.                                                                                                                                                                                                                                                      |
| CookieHelper           | CMS.Helpers               | Contains methods for managing cookies.                                                                                                                                                                                                                                                                        |
| DirectoryHelper        | CMS.IO                    | Manages directories in the file system.                                                                                                                                                                                                                                                                       |
| LeadReplicationHelper  | CMS.SalesForce            | Replicates contacts into SalesForce leads.                                                                                                                                                                                                                                                                    |
| LocalizationHelper     | CMS.Localization          | Retrieves localized text from resource strings.                                                                                                                                                                                                                                                               |
| MFAuthenticationHelper | CMS.Membership            | Contains methods and properties that implement and configure [multi-factor authentication](https://docs.kentico.com/13/managing-users/user-registration-and-authentication/configuring-multi-factor-authentication.md).                                                                                       |
| TriggerHelper          | CMS.Automation            | Manages marketing automation triggers.                                                                                                                                                                                                                                                                        |

| Manager class name | Namespace           | Description                                                                                                                                                                           |
| ------------------ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| AutomationManager  | CMS.Automation      | Handles the marketing automation process.                                                                                                                                             |
| SyncManager        | CMS.Synchronization | Synchronizes page and object data to other instances of the application when using [Content staging](https://docs.kentico.com/13/deploying-websites/content-staging.md).              |
| VersionManager     | CMS.DocumentEngine  | Provides [page versioning](https://docs.kentico.com/13/configuring-xperience/configuring-the-environment-for-content-editors/configuring-and-using-page-versioning.md) functionality. |
| WorkflowManager    | CMS.DocumentEngine  | Handles the [workflow](https://docs.kentico.com/13/configuring-xperience/configuring-the-environment-for-content-editors/configuring-workflows.md) process.                           |

You can also use [global event handlers](https://docs.kentico.com/13/custom-development/handling-global-events.md) to customize the behavior of the system. Handlers allow you to execute custom code whenever a specific event occurs in the system, such as page or object changes, various parts of the user authentication process, etc.

## Examples

- [Custom Info provider example](https://docs.kentico.com/13/custom-development/customizing-providers/custom-info-provider-example.md) demonstrates how to customize standard Info providers.
- [Custom Email provider example](https://docs.kentico.com/13/custom-development/customizing-providers/custom-email-provider-example.md) shows a sample customization of the email provider.
- [Custom Data provider example](https://docs.kentico.com/13/custom-development/customizing-providers/custom-data-provider-example.md) describes the specific steps that you need to take to customize the Data provider.
- [Customizing e-commerce data for Google Analytics](https://docs.kentico.com/13/e-commerce-features/customizing-on-line-stores/customizing-e-commerce-data-for-google-analytics.md) demonstrates how to customize helper classes that the system uses to create product and order JSON data for the purposes of Google Analytics.
