---
title: Customization
---

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

> **Info:** **[Extend the administration interface](https://docs.kentico.com/documentation/developers-and-admins/customization/extend-the-administration-interface.md)**
>
> Learn how to extend various parts of the Xperience administration with custom functionality, additional components and features for content editors, and more.

> **Info:** **[Guidelines for stable customization](https://docs.kentico.com/documentation/developers-and-admins/customization/stable-customization-guidelines.md)**
>
> Guidelines for working with the Xperience by Kentico API and other parts of the application in customization or integration scenarios. The goal of these recommendations is to help developers create stable code and minimize problems when updating to newer versions.

> **Info:** **[Integrate custom code](https://docs.kentico.com/documentation/developers-and-admins/customization/integrate-custom-code.md)**
>
> Learn best practices for adding customizations (classes, class libraries) to Xperience projects.

> **Info:** **[Run code on application startup](https://docs.kentico.com/documentation/developers-and-admins/customization/run-code-on-application-startup.md)**
>
> Xperience customization scenarios sometimes require you to call specific system API during application startup to achieve the desired system behavior. This section provides best practices for running startup code in Xperience applications.

> **Info:** **[Object types](https://docs.kentico.com/documentation/developers-and-admins/customization/object-types.md)**
>
> Object types control the behavior of database entities managed by the system. Learn how to define custom object types and how to configure them to leverage various system features, such as [CI/CD](https://docs.kentico.com/documentation/developers-and-admins/ci-cd.md).

> **Info:** **[Email customization](https://docs.kentico.com/documentation/developers-and-admins/customization/email-customization.md)**
>
> Xperience allows developers to customize the system's email sending functionality or completely replace it.
>
> - By implementing a custom email client, you can integrate with any custom or third‑party service for sending emails.
> - For projects with advanced custom email requirements, you can fully bypass and replace the default Xperience functionality.

> **Info:** **[Write automated tests](https://docs.kentico.com/documentation/developers-and-admins/customization/write-automated-tests.md)**
>
> Xperience provides a testing library with base classes for unit and integration tests. Write automated tests for custom code that uses the Xperience API, with support for faking Info and Provider objects without a database connection.
