---
metadata:
  - name: generator
    content: Diplodoc Platform v5.66.1
alternate:
  - https://appmetrica.yandex.by/docs/en/data-collection/custom-events.md
  - https://appmetrica.yandex.by/docs/ru/data-collection/custom-events.md
  - https://appmetrica.yandex.by/docs/zh/data-collection/custom-events.md
  - href: https://appmetrica.yandex.by/docs/ru/data-collection/custom-events.md
    type: text/markdown
    title: Markdown version
  - href: https://appmetrica.yandex.by/docs/ru/llms.txt?revision=r22076204
    rel: describedby
---
> **Documentation Index:** Fetch the complete configuration index at https://appmetrica.yandex.by/docs/ru/llms.txt?revision=r22076204

<!-- source: ru/_includes/special-mode-info.md -->
{% note tip "AppMetrica снова доступна" %}

Сбор данных продолжается, но некоторые отчёты и инструменты пока могут работать с ограничениями. Мы делаем всё возможное, чтобы вернуться в штатный режим. Спасибо, что вы с нами! [Подробнее](https://appmetrica.yandex.by/docs/ru/common/special-mode.md).

{% endnote %}
<!-- endsource: ru/_includes/special-mode-info.md -->

# Кастомные события

{% note info %}

Кастомные события — бесплатно в пределах 100 млн в месяц. Больший лимит — за отдельную плату.

Лимит общий для всех приложений организации. [Выбрать тариф и увеличить лимит](https://appmetrica.yandex.by/docs/ru/common/pricing/ru-currency.md).

{% endnote %}

Кастомные события — события, которые вы создаете для действий, специфичных для вашего приложения. Их также называют клиентскими или пользовательскими. Например, с их помощью можно изучить использование функции, нажатие кнопки или переход на определенный экран.

AppMetrica не определяет смысл таких действий автоматически. Нужно выбрать название события, параметры и момент отправки, а затем передать разработчику задачу по их сбору.

## Как настроить сбор кастомных событий {#setup}

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

![Шаги настройки сбора кастомных событий](../../_images/custom-events-steps-horizontal-ru.png){style="border: solid 1px #cccccc; max-width: 100%;"}

### 1. Определите задачу {#step-task}

Сформулируйте вопрос, на который хотите ответить с помощью событий. Например: товары каких категорий пользователи чаще добавляют в избранное? Выберите действия, которые помогут получить ответ.

### 2. Опишите события и параметры {#step-describe}

Составьте разметку — список событий с правилами их отправки. Для каждого события укажите:

- **Название и назначение**. Какое действие фиксирует событие и для какого анализа оно нужно.
- **Момент отправки**. При каком условии действие считается выполненным: например, когда товар успешно добавлен в избранное.
- **Параметры**. Какие подробности действия понадобятся в отчете. Для каждого параметра укажите название, тип значения и возможные значения.
- **Ожидаемое число отправок**. Например, одно событие на каждое успешное добавление товара в избранное.

{% cut "Пример разметки для интернет-магазина" %}

**Задача**: выяснить, товары каких категорий чаще добавляют в избранное.

**Событие**: `product_added_to_favorites`.

**Когда отправлять**: один раз после успешного добавления товара в избранное. Если добавление не удалось или товар уже находится в избранном, событие не отправляется.

**Параметры**:

- `product_id` — идентификатор товара, строка. Например, `sneakers_042`.
- `category` — категория товара, строка. Например, `shoes`, `clothing` или `accessories`.
- `source` — откуда добавлен товар, строка: `catalog` — из каталога или `product_card` — из карточки товара.

**Как проверить**: добавьте кроссовки в избранное из карточки товара. Ожидаемый результат — одно событие `product_added_to_favorites` с параметрами `product_id: sneakers_042`, `category: shoes` и `source: product_card`.

{% endcut %}

Это пример разметки: названия событий, параметров и их значения вы выбираете для своего приложения.

### 3. Передайте задание разработчику {#step-developer}

Передайте разметку и примеры действий для проверки. Согласуйте, где фиксируется каждое действие — в приложении или на сервере, — и в какой версии приложения или серверного сервиса появится отправка. Попросите разработчика сообщить, когда настройку можно проверить.

Технические инструкции для разработчика собраны ниже.

{% note info %}

Разметка описывает, какое действие и в какой момент нужно зафиксировать. Разработчик добавляет отправку в приложение или на сервер и передает параметры по согласованным правилам.

{% endnote %}

{% cut "Для разработчика: настройка отправки и параметры событий" %}

Скачать инструкцию для разработчика (TXT): {% file src="../../_assets/instructions/custom-developer-ru.txt" name="custom-developer-ru.txt" type="text/plain; charset=utf-8" %}

#### Как отправлять через SDK {#send-via-sdk}

Разработчик добавляет вызов метода SDK в то место кода, где происходит выбранное действие. Используйте инструкцию для платформы:

- [Android](https://appmetrica.yandex.by/docs/ru/sdk/android/analytics/android-operations.md#report-event)
- [iOS](https://appmetrica.yandex.by/docs/ru/sdk/ios/analytics/ios-operations.md#report-event)
- [Flutter](https://appmetrica.yandex.by/docs/ru/sdk/flutter/analytics/flutter-operations.md#report-event)
- [React Native](https://appmetrica.yandex.by/docs/ru/sdk/react-native/analytics/react-native-operations.md#report-event)
- [Unity](https://appmetrica.yandex.by/docs/ru/sdk/unity/analytics/unity-operations.md#report-event)

#### Как отправлять с сервера {#send-from-server}

Если сведения о действии доступны на сервере, используйте [загрузку событий через Post API](https://appmetrica.yandex.by/docs/ru/mobile-api/post/post-import-events.md). Данные передаются HTTP-запросом и связываются с идентификатором профиля или устройства, ранее переданным через SDK.

До настройки проверьте [ограничения загрузки](https://appmetrica.yandex.by/docs/ru/mobile-api/post/restrictions.md). Данные Post API синхронизируются раз в четыре часа — учитывайте это при проверке.

#### Уровни вложенности событий {#level}

Чтобы отправить событие, которое имеет вложенные параметры, передайте пару `key:value`. В интерфейсе `key` и `value` считаются уровнями вложенности.

![key-value](../../_images/levels.png){style="border: solid 1px #cccccc; max-width: 800px;"}

{% note info %}

AppMetrica позволяет передавать в событии вложенные параметры, которые могут иметь несколько уровней.

{% endnote %}

При передаче параметров в виде JSON каждый новый объект в значении — новый уровень вложенности, например:

```
{
"param1":"1",  // первый уровень вложенности
"param2":"abc",
"param3": { 
	"paramLevel2": "2", // второй уровень вложенности
	"param2Level2": {
		"paramLevel3": "3", // третий уровень вложенности
		"param2Level3":{
			"level": "4" // четвертый уровень вложенности
      }
    }
  }
}
```

Веб-интерфейс AppMetrica отображает до пяти уровней вложенности события. Если событие содержит шесть уровней и более, в отчете отобразятся пять верхних.

{% note info %}

С помощью [API отчетов](https://appmetrica.yandex.by/docs/ru/mobile-api/stat/intro.md) можно выгрузить до десяти уровней вложенности события.

{% endnote %}

#### Трактовка числовых и строковых значений {#value}

В интерфейсе AppMetrica значения `{"count" : 3}` и `{"count" : "3"}` трактуются одинаково. Но при выгрузке с помощью [API отчетов](https://appmetrica.yandex.by/docs/ru/mobile-api/stat/intro.md) или [Logs API](https://appmetrica.yandex.by/docs/ru/mobile-api/logs/about.md) параметр будет выгружен в том виде, в котором он был отправлен на сервер.

Если одно и то же событие передается несколько раз с разным числовым значением параметра, в веб-интерфейсе значения параметра не суммируются. Каждое из значений записывается и считается отдельно.

{% note info %}

С помощью [API отчетов](https://appmetrica.yandex.by/docs/ru/mobile-api/stat/intro.md) можно выгрузить дополнительные поля: сумму и среднее всех числовых значений.

{% endnote %}

#### Частично совпадающие вложенные события {#similar}

В одном событии можно передавать все время разные значения параметров.

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

Если сервер получает события с повторяющимися параметрами, но с разной глубиной вложенности, их значения аккумулируются по повторяющимся параметрам.

Например, первое событие имеет два уровня вложенности:

```
{
    "param1": "param2"
}
```

Второе — три уровня вложенности:

```
{
    "param1": {
        "param2": "value"
    }
}
```

В веб-интерфейсе эти события отобразятся в древовидном списке:

![древовидный список](../../_images/example.png){style="border: solid 1px #cccccc; max-width: 800px;"}

Подсчет производится по следующему алгоритму:

1. Записывается событие и два его подуровня. Добавляется 1 к каждому параметру.
1. Добавляется 1 к названию события и трем его подуровням.

{% endcut %}

### 4. Проверьте сбор событий {#step-check}

После настройки выполните подготовленные тестовые действия в согласованной версии приложения. Откройте [отчет «События»](https://appmetrica.yandex.by/docs/ru/mobile-reports/events-report.md) и проверьте:

- Появилось ли событие с названием из разметки.
- Передаются ли нужные параметры и соответствуют ли их значения выполненному действию.
- Соответствует ли количество событий ожидаемому числу отправок.

Повторите проверку с другими значениями параметров. Если результат отличается от разметки, передайте разработчику описание действия, ожидаемый результат и то, что увидели в отчете. После исправления повторите проверку. При отправке через Post API учитывайте, что события синхронизируются раз в четыре часа.

### 5. Используйте события в анализе {#step-analyze}

После проверки используйте события и их параметры в отчете «События». Чтобы анализировать последовательность действий и находить этапы, на которых пользователи останавливаются, настройте [воронку](https://appmetrica.yandex.by/docs/ru/mobile-reports/funnels-report.md).

## Как учитываются события {#accounting}

Кастомные события расходуют квоту организации. Отправка с параметрами считается одним событием независимо от числа параметров и глубины вложенности. Актуальные условия приведены в [описании лимитов](https://appmetrica.yandex.by/docs/ru/troubleshooting/limit-events.md), рекомендации по оптимизации — в статье [Как сэкономить на событиях](https://appmetrica.yandex.by/docs/ru/data-collection/save-on-events.md).

<!-- source: ru/_includes/feedback-button.md -->
Если вы не нашли ответ на свой вопрос, то вы можете задать его через форму обратной связи. Пожалуйста, опишите возникшую проблему как можно подробнее. Если возможно, приложите скриншот.

<a href="../troubleshooting/feedback-new">
  <span class="button">Написать в службу поддержки</span>
</a>

<a href="../troubleshooting/feedback-docs">
  <span class="button">Предложить улучшение для документации</span>
</a>


<br/>

<a href="https://t.me/appmetrica_support_bot">
  <span class="button">Написать в Telegram </span>
</a>

<a href="https://max.ru/yandex_appmetrica_bot">
  <span class="button">Написать в MAX</span>
</a>
<!-- endsource: ru/_includes/feedback-button.md -->
