> ## Documentation Index
> Fetch the complete documentation index at: https://faq.exode.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Кастомный код

> Свои скрипты и стили на сайте школы: куда вставляется код, ограничения, настройки интерфейса и целевые события для Яндекс Метрики, Google Analytics, Meta Pixel и VK Ads.

Кастомный код позволяет добавить на сайт школы свои скрипты и стили: счётчики аналитики, рекламные пиксели, чат-виджеты, правки оформления. Код задаётся отдельно для каждой школы и загружается на всех её страницах.

## Где настроить

Откройте **Панель управления → Моя школа → Для разработчиков → Кастомный код** (в корпоративной школе — **Панель управления → Компания → Для разработчиков → Кастомный код**). Редактировать код может сотрудник с правом **Управление настройками школы** (в корпоративной школе — **Управление настройками компании**). Кастомный код доступен на любом тарифе.

На странице две вкладки:

| Вкладка | Поле | Куда попадает код |
| - | - | - |
| **HTML** | **Кастомный HTML** | Вставляется в `<head>` каждой страницы школы как есть, до загрузки приложения. Пишите в формате HTML: теги `<script>`, `<script src="...">`, `<meta>`, `<link>` |
| **CSS** | **Кастомный CSS** | Вставляется в `<head>` каждой страницы школы внутри тега `<style>`. Пишите обычные правила CSS, без тега `<style>` |

## Как добавить код

**1. Выберите вкладку**

Переключите **HTML** или **CSS** в правом верхнем углу.

**2. Вставьте код**

Вставьте код в редактор. Длина кода в каждом поле — не больше 3000 символов.

**3. Сохраните**

Нажмите **Сохранить • HTML** или **Сохранить • CSS** внизу страницы. Кнопка **Отмена** возвращает последнюю сохранённую версию.

**4. Обновите страницу**

Изменения применяются после обновления страницы. Нажмите **Обновить** в уведомлении **Изменения применятся после обновления**.

Если код длиннее 3000 символов, платформа его не сохранит и покажет ошибку **Код длиннее 3000 символов — сократите его**. Длинные скрипты подключайте внешним файлом через `<script src="...">`.

Если вы переключаете вкладку или уходите со страницы с несохранёнными изменениями, платформа попросит подтверждение.

> [!WARNING]
>
> Кастомный код выполняется в браузере каждого посетителя школы с полными правами страницы. Ошибка в скрипте может сломать интерфейс школы. Не вставляйте код из непроверенных источников и не храните в нём секреты: API-ключи, секреты вебхуков и пароли увидит любой посетитель.

## Где работает код

Код подключается на всех страницах сайта школы — и на собственном домене, и на базовом адресе школы на платформе. Мобильные и десктопные приложения Exode открывают тот же сайт школы, поэтому код загружается и в них. Подробнее о приложениях — в статье [Мобильное приложение](https://faq.exode.biz/ru/general/mobile-app/mobile-app.md).

## Настройки интерфейса

Через кастомный HTML можно изменить поведение некоторых элементов платформы.

### Скрыть прогресс просмотра видео

Скрывает полосу просмотренных фрагментов под видеоплеером в уроке и прогресс просмотра видео в карточке ученика в разделе управления.

```html theme={null}
<script>
    (window.exodeJsConfig ||= {}).excludeElements = [ 'videoWatchProgress' ];
</script>
```

Сейчас это единственный элемент, который можно скрыть таким способом.

### Скрыть баннер «В приложении удобнее»

Убирает баннер с предложением скачать приложение, который видят посетители мобильной версии сайта.

```html theme={null}
<script>
    (((window.exode ||= {}).common ||= {}).content ||= {}).banners ||= {};
    (window.exode.common.content.banners.system ||= {}).hideDownloadAppBanner = true;
</script>
```

## Счётчики и целевые события

Вставьте код счётчика или пикселя рекламной системы во вкладку **HTML**. Платформа сама отправит в него целевые события — дополнительный код для целей писать не нужно.

| Действие пользователя | Яндекс Метрика и VK Ads | Google Analytics 4 | Meta Pixel |
| - | - | - | - |
| Регистрация по email или телефону | `signup` | `sign_up` | `CompleteRegistration` |
| Заполнил анкету с личными данными | `lead` | `generate_lead` | `Lead` |
| Открыл страницу курса | `view_course` | `view_item` | `ViewContent` |
| Открыл демо-урок со страницы курса (только в коммерческой школе) | `view_demo_lesson` | `view_demo_lesson` | `ViewDemoLesson` |
| Записался на бесплатный курс | `free_course_enroll` | `free_course_enroll` | `StartTrial` |
| Выбрал тариф и перешёл к оплате (только в коммерческой школе) | `begin_checkout` | `begin_checkout` | `InitiateCheckout` |
| Оплатил счёт (только в коммерческой школе) | `purchase` | `purchase` | `Purchase` |
| Завершил курс кнопкой завершения обучения | `complete_course` | `complete_course` | `CompleteCourse` |

В Яндекс Метрике и VK Ads создайте цели типа «JavaScript-событие» с идентификаторами из таблицы.

> [!NOTE]
>
> Чтобы цели уходили в Яндекс Метрику, после кода счётчика задайте номер счётчика в переменной `window.YM_ID`. Для VK Ads задайте номер пикселя в переменной `window.VK_PIXEL_ID`. Без этих переменных цели в эти системы не отправляются. Google Analytics и Meta Pixel работают сразу после вставки их стандартного кода.

Пример: сначала вставьте код счётчика из кабинета Метрики, а сразу после него — строку с номером счётчика.

```html theme={null}
<script>
    window.YM_ID = 12345678;
</script>
```

Правила отправки событий:

* **Покупка** отправляется один раз на счёт. Повторная отправка с того же устройства блокируется на 90 дней. Если страницу успешной оплаты открыли позже чем через 5 минут после оплаты — например, по ссылке из письма или на другом устройстве, — событие не отправляется.
* В событие покупки передаются сумма и валюта счёта. Google Analytics и Meta Pixel получают покупку, только если счёт оплачен в реальной валюте. Для Meta Pixel и Google Analytics передаётся ещё идентификатор счёта — он защищает от дублей.
* **Регистрация** отправляется только при регистрации по email или телефону. При входе через соцсети, Telegram или код из сообщения событие не отправляется: платформа не отличает новый аккаунт от повторного входа.
* Если пользователь вошёл в аккаунт, платформа передаёт в Яндекс Метрику его ID в параметрах посетителя.
* Действие **Выбрал тариф и перешёл к оплате** не отправляется, если у тарифа настроена внешняя ссылка на оплату.

Каждое событие также рассылается на странице как событие браузера — его можно перехватить своим скриптом и отправить в любую другую систему. Список событий браузера и их данные — в [документации для разработчиков](https://docs.exode.biz/ru/analytics/events).

## Частые вопросы

> **Я сохранил код, но ничего не изменилось. Почему?**
>
> Изменения применяются только после обновления страницы. Нажмите **Обновить** в уведомлении после сохранения или перезагрузите страницу. Учтите, что ученики увидят изменения, когда откроют или обновят страницу.

> **Какой максимальный размер кода?**
>
> До 3000 символов в каждом поле — отдельно для HTML и для CSS. Если не хватает, вынесите скрипт во внешний файл и подключите его тегом `<script src="...">`.

> **Нужен ли особый тариф для кастомного кода?**
>
> Нет. Кастомный код доступен на любом тарифе. Нужно только право **Управление настройками школы** (в корпоративной школе — **Управление настройками компании**).

> **Почему цели Яндекс Метрики не срабатывают?**
>
> Проверьте три вещи: код счётчика вставлен во вкладку **HTML**, после него задана переменная `window.YM_ID` с номером счётчика, а в Метрике созданы цели типа «JavaScript-событие» с идентификаторами из таблицы выше.

> **Почему покупка не попала в аналитику рекламной системы?**
>
> Событие покупки отправляется, только если покупатель увидел страницу успешной оплаты не позже чем через 5 минут после оплаты. Если он закрыл страницу раньше или открыл её позже, событие не отправится. Сверяйте продажи с разделом **Продажи → Платежи**.

> **Можно ли подключить чат-виджет или другой внешний скрипт?**
>
> Да. Вставьте код виджета во вкладку **HTML**. Код загрузится на всех страницах школы до запуска приложения.

> **Мой скрипт сломал сайт школы. Что делать?**
>
> Откройте **Для разработчиков → Кастомный код**, удалите или исправьте код и сохраните. Затем обновите страницу.

> **Можно ли вставить в кастомный код API-ключ школы?**
>
> Нет. Кастомный код видят все посетители школы. API-ключи и секреты вебхуков храните только на своём сервере — см. [API](https://faq.exode.biz/ru/general/developers/api.md) и [Вебхуки](https://faq.exode.biz/ru/general/developers/webhooks.md).

***

*Обновлено: 2026-10-15 18:08 UTC*


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.