ДАРА
Разделы документации

ДокументацияРуководства

Данные о пользователях

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

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

Просмотры, лайки, корзина и покупки — это действия с объектами: их передают событиями и заказами, а не профилем.

Запись профиля: 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 и теми же идентификаторами — заказ перейдёт в аккаунт.
  • Обновляйте профиль при изменении, а не перед каждым запросом выдачи: запись профиля сама пересчитывает всё нужное.