ДокументацияРуководства
Данные о пользователях
Профиль пользователя — поля, как они влияют на выдачу, что присылать нельзя, контрольная группа и советы по идентификаторам.
События показывают, что пользователь делал. Профиль — то, что ваш сайт знает о нём сам: интересы из анкеты, год рождения, город, подписки на авторов. С профилем пользователь получает персональную выдачу сразу, ещё до накопления истории.
Просмотры, лайки, корзина и покупки — это действия с объектами: их передают событиями и заказами, а не профилем.
Запись профиля: POST /users/profile
curl -X POST https://core.daratech.ru/api/v1/users/profile \
-H "Authorization: Bearer $DARA_KEY" \
-H "Content-Type: application/json" \
-d '{
"user": {"user_id": "u-501"},
"birth_year": 1994,
"city": "Казань",
"country": "Россия",
"interests": ["горные велосипеды", "походы", "фототехника"],
"excluded_interests": ["азартные игры"],
"followed_authors": ["channel-17", "channel-203"],
"attributes": {"plan": "premium", "signup_source": "mobile"}
}'
{"identity": "user", "updated_fields": ["birth_year", "city", "country", "interests", "excluded_interests", "followed_authors", "attributes"]}
Переданные поля заменяются, null очищает поле, непереданные не меняются.
| Поле | Тип | Описание |
|---|---|---|
gender |
male или female |
пол |
birth_year |
int | год рождения, от 1900 до текущего года |
age |
int от 0 до 120 | вместо birth_year: ДАРА пересчитает возраст в год рождения, чтобы он не устаревал |
interests |
до 50 строк до 200 знаков | интересы текстом на любом языке |
excluded_interests |
до 50 строк до 200 знаков | «не интересно» |
followed_authors |
до 500 id | авторы у вас: подписки, любимые каналы и бренды |
hidden_authors |
до 500 id | авторы, которых пользователь скрыл |
city, country |
string до 100 знаков | город и страна; хранятся в нижнем регистре без лишних пробелов |
personalization |
bool | false — пользователь отказался от персонализации |
attributes |
object до 16 КБ | любые ваши данные: хранятся и видны в кабинете, на выдачу пока не влияют |
Правила:
- Без
user_idпрофиль записывается в анонимный профиль — даже если пользователь узнан без входа. На общем устройстве посторонний не должен менять данные аккаунта. - При склейке профиль анонима дополняет профиль пользователя: заполненные поля пользователя не перезаписываются.
- Без подключения DARA Fingerprint профиль только с
fingerprint_uuidотклоняется с кодомno_user.
Пакет — POST /users/profile/batch, до 500 профилей: {"profiles": [{"user": {...}, ...поля}]}. Ответ — {"results": [{"index", "ok", "error"}]}. Разовую загрузку профилей удобнее сделать файлом в кабинете — Импорт файлов.
Как данные влияют на выдачу
| Данные | Влияние |
|---|---|
interests |
каждый интерес превращается в вектор смысла в течение минуты и входит в интересы профиля; перевод не нужен — модели многоязычные |
excluded_interests |
объекты, близкие к исключённым интересам, опускаются в ленте |
followed_authors |
любимые авторы получают максимальную близость — их новые объекты попадают в ленту |
hidden_authors |
объекты этих авторов не показываются нигде, кроме переранжирования, — в том числе в поиске |
birth_year, age |
при включённом фильтре по возрасту объект с отметкой N+ показывается только пользователю не младше N лет — и в выдаче, и в поиске; объекты без отметки не фильтруются, пользователю с неизвестным возрастом отмеченные объекты показываются |
city, country, gender и возраст |
сегменты пользователя: новым пользователям лента подмешивает популярное в их сегменте |
personalization: false |
профиль не строится и не используется, узнавание без входа не работает, выдача неперсональная; события учитываются в статистике объектов и метриках |
attributes |
не влияют на выдачу |
Подробнее о заявленных интересах:
- Персональная лента сразу. Лента становится персональной (
mode: personal), когда реальной истории пользователя и указанных интересов вместе достаточно. Указанных интересов хватает для персональной ленты сразу, как только они получили векторы. Учитываются интересы, для которых вектор построен. - История важнее анкеты. Вес указанных интересов постепенно уменьшается со временем после их обновления и по мере накопления реальных действий пользователя.
- В карточке пользователя в кабинете интересы, пришедшие из профиля, отмечены «указано клиентом».
Сегменты — страна, город, пол вместе с возрастной группой: до 18, 18–24, 25–34, 35–44, 45–54, 55+. Сегмент учитывается, когда в нём достаточно пользователей с событиями за последние 30 дней; сегменты пересчитываются раз в час.
Фильтр по возрасту и популярное в сегментах включены в проекте по умолчанию и выключаются на вкладке проекта «Выдача». Как всё это сказывается на выдаче конкретного пользователя, видно в кабинете: «Пользователи» → карточка → вкладки «Интересы» и «Выдача глазами пользователя». Что никогда не попадает в выдачу — раздел Рекомендации.
Контрольная группа
Чтобы честно измерить, сколько дают данные о пользователях, часть пользователей попадает в контрольную группу: по умолчанию 10 %, на вкладке проекта «Выдача» — от 0 до 50 %. Группа выбирается по хешу пользователя и не меняется, пока не изменится доля.
- Контрольная группа получает выдачу без указанных интересов, любимых авторов и сегментов.
- Скрытые авторы, исключённые интересы, возраст и отказ от персонализации соблюдаются всегда: это пожелания пользователя, а не улучшение выдачи.
- Изменение доли пересчитывает профили и переводит часть пользователей между группами, поэтому сравнение групп за период до и после изменения неточно.
- Метрики — CTR и целевые события на 100 показов — считаются отдельно для основной и контрольной групп и только среди пользователей, о которых вы передали данные: пол, год рождения, город, страна, интересы, исключённые интересы, любимые или скрытые авторы.
Экран «Данные о пользователях»
В кабинете, проект → «Данные о пользователях» — по агрегатам, без данных отдельных людей:
- заполненность полей профиля у пользователей, активных за 30 дней, и самые частые указанные интересы;
- доли запросов выдачи по способу определения пользователя:
user_id, узнан без входа,anonymous_id,fingerprint_uuid, без пользователя; - отклонённые события, строки заказов и профили за 7 дней — по кодам;
- эффект данных: CTR и цели на 100 показов у основной и контрольной групп.
Метрики выдачи по поверхностям и дням — на экране «Метрики», как их передавать — Рекомендации → Метрики выдачи.
Что присылать нельзя
Персональные данные не принимаются. Ключи email, phone, name, first_name, last_name, middle_name, address, birth_date, passport в attributes — без учёта регистра, на любой глубине — дают ответ 422 validation_failed: в details — путь до ключа, например attributes.contacts.email, и код pii_not_allowed. Профиль в этом случае не записывается.
Не кладите персональные данные и в другие поля: в user_id, интересы, id авторов. Для выдачи они не нужны.
Сверка: GET /users/profile
Параметр — user_id, anonymous_id или fingerprint_uuid; analytics_id параметром не принимается — он пользователя не определяет. Ответ — поля профиля в том виде, в каком их хранит ДАРА, attributes и дата обновления каждого поля. Метод нужен для проверки интеграции.
Блок network
При подключённой ДАРА АНАЛИТИКЕ у пользователя, найденного в её сети, в ответе есть ещё блок network — данные сети о человеке:
{"identity": "user", "birth_year": 1994, "city": "казань",
"network": {"status": "found", "gender": "female", "gender_confidence": 0.95, "age_group": "25_34",
"country": "RU", "region": "нижегородская область", "city": "нижний новгород",
"children": [{"age_group": "3_6"}],
"company": {"type": "legal", "industry": "Торговля", "region": "Москва"},
"interests": [{"topic_id": 11, "path": "Дом > Ремонт", "share": 0.6, "sensitive": false}],
"purchases": [{"category_id": 5, "path": "Дом > Мебель", "segment": "mid"}],
"checked_at": "2026-09-24T10:00:00Z"}}
- Это данные сети, а не ваши: они не заменяют поля профиля, не попадают в
updated_fieldsи не меняются черезPOST /users/profile. Где данные сети важнее, а где — ваши, описано в разделе ДАРА АНАЛИТИКА. age_group— возрастная группа (lt14,14_17,18_24,25_34,35_44,45_54,55_64,65p); года рождения и точного возраста в данных сети нет.country— код страны по ISO 3166-1 alpha-2,regionиcity— в нижнем регистре.- Пустые значения в блок не входят, а самого блока нет, пока ДАРА АНАЛИТИКА не подключена или человек в её сети не найден. Чувствительные темы отбрасываются, если сайт в кабинете аналитики их не передаёт.
Советы
user_id— внутренний id пользователя, а не email. Id из вашей базы не меняется, когда пользователь меняет почту, и не раскрывает её. Если других идентификаторов, кроме email, нет, передавайте хеш адреса с постоянной солью вашего сайта — например,sha256("ваша-соль:" + email.lower()).- Семейный аккаунт с несколькими профилями — составной
user_id:u-501:anna,u-501:kids. У каждого профиля своя история, свои интересы и свой возраст, и детский профиль не получает рекомендации взрослого. - Гостевой заказ. На странице оформления передайте в заказе
userсanonymous_idпосетителя, а при подключённом DARA Fingerprint — иfingerprint_uuid. Если после заказа гость зарегистрируется, вызовитеPOST /users/linkс новымuser_idи теми же идентификаторами — заказ перейдёт в аккаунт. - Обновляйте профиль при изменении, а не перед каждым запросом выдачи: запись профиля сама пересчитывает всё нужное.