# Для разработчика: настройка отправки и параметры событий Статья: Кастомные события Разметка описывает, какое действие и в какой момент нужно зафиксировать. Разработчик добавляет отправку в приложение или на сервер и передает параметры по согласованным правилам. ### Как отправлять через SDK Разработчик добавляет вызов метода SDK в то место кода, где происходит выбранное действие. Используйте инструкцию для платформы: - [Android](https://appmetrica.yandex.ru/docs/ru/sdk/android/analytics/android-operations#report-event) - [iOS](https://appmetrica.yandex.ru/docs/ru/sdk/ios/analytics/ios-operations#report-event) - [Flutter](https://appmetrica.yandex.ru/docs/ru/sdk/flutter/analytics/flutter-operations#report-event) - [React Native](https://appmetrica.yandex.ru/docs/ru/sdk/react-native/analytics/react-native-operations#report-event) - [Unity](https://appmetrica.yandex.ru/docs/ru/sdk/unity/analytics/unity-operations#report-event) ### Как отправлять с сервера Если сведения о действии доступны на сервере, используйте [загрузку событий через Post API](https://appmetrica.yandex.ru/docs/ru/mobile-api/post/post-import-events). Данные передаются HTTP-запросом и связываются с идентификатором профиля или устройства, ранее переданным через SDK. До настройки проверьте [ограничения загрузки](https://appmetrica.yandex.ru/docs/ru/mobile-api/post/restrictions). Данные Post API синхронизируются раз в четыре часа — учитывайте это при проверке. ### Уровни вложенности событий Чтобы отправить событие, которое имеет вложенные параметры, передайте пару `key:value`. В интерфейсе `key` и `value` считаются уровнями вложенности. ![key-value](https://yastatic.net/s3/doc-binary/src/dev/appmetrica/ru/images/common/levels.png) AppMetrica позволяет передавать в событии вложенные параметры, которые могут иметь несколько уровней. При передаче параметров в виде JSON каждый новый объект в значении — новый уровень вложенности, например: ```json { "param1":"1", "param2":"abc", "param3": { "paramLevel2": "2", "param2Level2": { "paramLevel3": "3", "param2Level3":{ "level": "4" } } } } ``` Веб-интерфейс AppMetrica отображает до пяти уровней вложенности события. Если событие содержит шесть уровней и более, в отчете отобразятся пять верхних. С помощью [API отчетов](https://appmetrica.yandex.ru/docs/ru/mobile-api/stat/intro) можно выгрузить до десяти уровней вложенности события. ### Трактовка числовых и строковых значений В интерфейсе AppMetrica значения `{"count" : 3}` и `{"count" : "3"}` трактуются одинаково. Но при выгрузке с помощью API отчетов или [Logs API](https://appmetrica.yandex.ru/docs/ru/mobile-api/logs/about) параметр будет выгружен в том виде, в котором он был отправлен на сервер. Если одно и то же событие передается несколько раз с разным числовым значением параметра, в веб-интерфейсе значения параметра не суммируются. Каждое из значений записывается и считается отдельно. С помощью API отчетов можно выгрузить дополнительные поля: сумму и среднее всех числовых значений. ### Частично совпадающие вложенные события В одном событии можно передавать все время разные значения параметров. Если сервер получает события с повторяющимися параметрами, их значения аккумулируются, а в отчете отображается количество по каждому из переданных вариантов. Если сервер получает события с повторяющимися параметрами, но с разной глубиной вложенности, их значения аккумулируются по повторяющимся параметрам. Например, первое событие имеет два уровня вложенности: ``` { "param1": "param2" } ``` Второе — три уровня вложенности: ``` { "param1": { "param2": "value" } } ``` В веб-интерфейсе эти события отобразятся в древовидном списке: ![древовидный список](https://yastatic.net/s3/doc-binary/src/dev/appmetrica/ru/images/common/example.png) Подсчет производится по следующему алгоритму: 1. Записывается событие и два его подуровня. Добавляется 1 к каждому параметру. 2. Добавляется 1 к названию события и трем его подуровням.