← Вернуться в блог

Офлайн‑конверсии из amoCRM в Яндекс Метрику и Директ через Google Таблицу

Инструкция от performance‑маркетолога: как передавать квалифицированные лиды и продажи из amoCRM в Метрику с помощью Apps Script, обучать автостратегию Директа на них и считать ДРР по данным CRM. С готовым кодом.

В трафик‑агентстве я отвечал за стоимость лида и ДРР (долю рекламных расходов) клиентов. Типичная картина: в кабинете Директа стоимость конверсии в норме, а отдел продаж жалуется, что половина заявок нецелевые. Причина почти всегда одна: автостратегия учится на цели «отправил форму», а о том, что было с заявкой дальше, ничего не знает.

Офлайн‑конверсии закрывают этот разрыв. Когда менеджер переводит сделку в amoCRM в статус «Квалифицирован» или «Оплачено», Метрика получает конверсию по этому посетителю, а Директ может оптимизировать кампании по ней. Ниже пошаговая схема, которую я собираю без отдельного сервера и платных коннекторов: amoCRM, Google Таблица с Apps Script, API Метрики и API Директа.

Как устроена схема

┌──────────────────┐  заявка + ClientID, yclid, UTM  ┌──────────────────┐
│   Сайт (форма)   │ ──────────────────────────────▶ │      amoCRM      │
└──────────────────┘                                 └──────────────────┘
                                                              │ смена статуса
                                                              ▼ (вебхук)
┌──────────────────┐  CSV: ClientId, Target, Price   ┌──────────────────┐
│  Яндекс Метрика  │ ◀────────────────────────────── │  Google Таблица  │
└──────────────────┘                                 │  + Apps Script   │
         │ офлайн-цель                               └──────────────────┘
         ▼                                                    ▲
┌──────────────────┐        расходы через API Директа         │
│  Яндекс Директ   │ ─────────────────────────────────────────┘
└──────────────────┘

Роли у каждого звена свои:

  • Сайт передаёт в заявку идентификатор посетителя из Метрики (ClientID) и метку клика Директа (yclid).
  • amoCRM хранит эти идентификаторы в сделке и при смене статуса шлёт вебхук.
  • Google Таблица с Apps Script принимает вебхук, достаёт из сделки ClientID и сумму, раз в час отправляет пачку конверсий в Метрику и ведёт журнал отправок.
  • Метрика связывает конверсию с визитом и рекламным переходом.
  • Директ использует офлайн‑цель в стратегии. Через API Директа таблица забирает расходы, чтобы считать стоимость целевого лида и ДРР по данным CRM.
Одно ограничение сразу

Загрузить конверсии напрямую в Директ через его API нельзя. Офлайн‑конверсии идут только через Метрику, а Директ видит их как обычную цель счётчика.

Шаг 1. Цели в Метрике под этапы воронки

Для каждого этапа, который хотите передавать, создайте в счётчике цель типа «JavaScript‑событие». Идентификатор цели потом пойдёт в колонку Target загружаемого файла. Я обычно завожу две:

  • qualified_lead: менеджер дозвонился и подтвердил, что заявка целевая;
  • deal_won: оплата или успешная сделка.

Дальше проверьте в настройках счётчика период учёта офлайн‑конверсий. Конверсия засчитывается, только если с визита прошло не больше этого периода. По умолчанию он короткий, поэтому при длинном цикле сделки включите расширенный период.

Если в файл передавать сумму сделки в колонке Price, в отчётах Метрики и Директа появится доход по цели. От него уже можно считать ДРР.

Шаг 2. Передаём ClientID и yclid из формы в amoCRM

Без идентификатора посетителя в сделке связать продажу с рекламой не получится. Поэтому начинаем с формы:

  1. В amoCRM заведите дополнительные поля сделки: ClientID, yclid и UTM‑метки, если их ещё нет.
  2. В форму на сайте добавьте скрытые поля clientid и yclid.
  3. В настройках интеграции Tilda (или другого конструктора) с amoCRM сопоставьте скрытые поля с полями сделки.
  4. Подключите на сайт скрипт, который заполняет скрытые поля.
JavaScript: ClientID и yclid в скрытые поля формы
<script>
(function () {
  // yclid есть только в URL первого перехода, поэтому сохраняем его
  var p = new URLSearchParams(location.search);
  if (p.get('yclid')) {
    try { localStorage.setItem('yclid', p.get('yclid')); } catch (e) {}
  }

  function cookie(name) {
    var m = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));
    return m ? decodeURIComponent(m[1]) : '';
  }

  function fill() {
    var cid = cookie('_ym_uid'); // совпадает с ClientID Метрики
    var ycl = '';
    try { ycl = localStorage.getItem('yclid') || ''; } catch (e) {}
    document.querySelectorAll('input[name="clientid"]').forEach(function (i) { i.value = cid; });
    document.querySelectorAll('input[name="yclid"]').forEach(function (i) { i.value = ycl; });
  }

  document.addEventListener('focusin', fill);
  document.addEventListener('submit', fill, true);
  window.addEventListener('load', fill);
})();
</script>

Кука _ym_uid содержит тот же идентификатор, который Метрика отдаёт методом getClientID, и читается без ожидания загрузки счётчика. Если ClientID пустой, например из‑за блокировщика рекламы, выручит yclid. Отправьте тестовую заявку и проверьте, что в сделке заполнились оба поля. Без этого дальше идти нет смысла.

Шаг 3. Доступы: токены amoCRM и Яндекса

  • amoCRM. «Настройки → Интеграции → Создать интеграцию». В созданной интеграции на вкладке «Ключи и доступы» сгенерируйте долгосрочный токен.
  • Яндекс. На oauth.yandex.ru создайте приложение с правами «Метрика: запись» и «Яндекс Директ: использование API». Для Директа отдельно подайте заявку на доступ к API в интерфейсе Директа. Токен получите по ссылке https://oauth.yandex.ru/authorize?response_type=token&client_id=<ID приложения>.
  • Apps Script. Токены не пишите в код. Сохраните их в «Настройки проекта → Свойства скрипта»: AMO_TOKEN, YA_TOKEN и случайную строку WEBHOOK_SECRET.

Ещё понадобятся ID полей и статусов amoCRM. ID полей возвращает запрос GET /api/v4/leads/custom_fields, ID статусов — GET /api/v4/leads/pipelines. У статуса «Успешно реализовано» ID всегда 142.

Шаг 4. Google Таблица и скрипт выгрузки в Метрику

Создайте таблицу с тремя листами:

Листы таблицы
ЛистЧто в нём
queueОчередь событий из amoCRM: дата, ID сделки, ID статуса, состояние (new, sent, skip, no_id, error)
sentЖурнал отправленных конверсий: что, когда и с каким идентификатором ушло в Метрику
directРасходы и конверсии по кампаниям из API Директа

Откройте «Расширения → Apps Script» и вставьте код. Первая часть: настройки и приём вебхука. Вебхук ничего не обрабатывает, а только складывает событие в очередь. Так amoCRM быстро получает ответ, и сбой на стороне Метрики не приводит к потере событий.

Apps Script: настройки и приём вебхука amoCRM
const PROPS = PropertiesService.getScriptProperties();
const CFG = {
  amoDomain: 'example.amocrm.ru',
  counterId: '12345678',       // номер счётчика Метрики
  fieldClientId: 111111,       // ID поля ClientID в amoCRM
  fieldYclid: 222222,          // ID поля yclid
  statusToTarget: {            // статус amoCRM → идентификатор цели в Метрике
    '55555555': 'qualified_lead',
    '142': 'deal_won',         // «Успешно реализовано»
  },
  directLogin: 'client-login', // логин клиента в Директе
  directGoalId: 987654321,     // ID цели deal_won в Метрике
};

// Вебхук amoCRM: только кладём событие в очередь и сразу отвечаем
function doPost(e) {
  if (e.parameter.key !== PROPS.getProperty('WEBHOOK_SECRET')) {
    return ContentService.createTextOutput('forbidden');
  }
  const lock = LockService.getScriptLock();
  lock.waitLock(10000);
  try {
    const sh = SpreadsheetApp.getActive().getSheetByName('queue');
    for (let i = 0; e.parameter[`leads[status][${i}][id]`]; i++) {
      sh.appendRow([
        new Date(),
        e.parameter[`leads[status][${i}][id]`],
        e.parameter[`leads[status][${i}][status_id]`],
        'new',
      ]);
    }
  } finally {
    lock.releaseLock();
  }
  return ContentService.createTextOutput('ok');
}

Вторая часть разбирает очередь: для каждой сделки запрашивает amoCRM, берёт ClientID (или yclid, если ClientID нет) и сумму, собирает CSV и загружает его в Метрику. Отправленные строки помечаются, поэтому повторный запуск не создаёт дублей.

Apps Script: обработка очереди и загрузка офлайн‑конверсий
// Запускается по триггеру раз в час
function processQueue() {
  const ss = SpreadsheetApp.getActive();
  const q = ss.getSheetByName('queue');
  const log = ss.getSheetByName('sent');
  const rows = q.getDataRange().getValues();
  const batches = { CLIENT_ID: [], YCLID: [] };

  for (let r = 1; r < rows.length; r++) {
    const [ts, leadId, statusId, state] = rows[r];
    if (state !== 'new') continue;

    const target = CFG.statusToTarget[String(statusId)];
    if (!target) { q.getRange(r + 1, 4).setValue('skip'); continue; }

    const lead = amoGet(`/api/v4/leads/${leadId}`);
    const clientId = cf(lead, CFG.fieldClientId);
    const yclid = cf(lead, CFG.fieldYclid);
    const dt = Math.floor(new Date(ts).getTime() / 1000);
    const price = lead.price || 0;

    const type = clientId ? 'CLIENT_ID' : yclid ? 'YCLID' : null;
    if (!type) { q.getRange(r + 1, 4).setValue('no_id'); continue; }

    batches[type].push({ row: r + 1, leadId, line: [clientId || yclid, target, dt, price, 'RUB'] });
  }

  // Один файл — один тип идентификатора
  for (const type in batches) {
    const items = batches[type];
    if (!items.length) continue;
    try {
      const uploadingId = uploadToMetrika(type, items.map(i => i.line));
      items.forEach(i => {
        q.getRange(i.row, 4).setValue('sent:' + uploadingId);
        log.appendRow([new Date(), i.leadId, type].concat(i.line));
      });
    } catch (err) {
      items.forEach(i => q.getRange(i.row, 4).setValue('error'));
      console.error(err);
    }
  }
}

function uploadToMetrika(type, lines) {
  const idCol = type === 'CLIENT_ID' ? 'ClientId' : 'Yclid';
  const csv = [`${idCol},Target,DateTime,Price,Currency`]
    .concat(lines.map(l => l.join(','))).join('\n');
  const res = UrlFetchApp.fetch(
    `https://api-metrika.yandex.net/management/v1/counter/${CFG.counterId}` +
    `/offline_conversions/upload?client_id_type=${type}`,
    {
      method: 'post',
      headers: { Authorization: 'OAuth ' + PROPS.getProperty('YA_TOKEN') },
      payload: { file: Utilities.newBlob(csv, 'text/csv', 'conversions.csv') }, // уйдёт как multipart
      muteHttpExceptions: true,
    }
  );
  if (res.getResponseCode() !== 200) throw new Error(res.getContentText());
  return JSON.parse(res.getContentText()).uploading.id;
}

function amoGet(path) {
  const res = UrlFetchApp.fetch(`https://${CFG.amoDomain}${path}`, {
    headers: { Authorization: 'Bearer ' + PROPS.getProperty('AMO_TOKEN') },
  });
  return JSON.parse(res.getContentText());
}

function cf(lead, fieldId) {
  const f = (lead.custom_fields_values || []).find(x => x.field_id === fieldId);
  return f ? String(f.values[0].value).trim() : '';
}

Шаг 5. Вебхук amoCRM и триггеры

  1. В Apps Script нажмите «Начать развёртывание → Новое развёртывание → Веб‑приложение». Запуск от вашего имени, доступ «Все». Скопируйте URL.
  2. В amoCRM откройте «Настройки → Интеграции → Веб‑хуки» и укажите адрес https://script.google.com/macros/s/<ID>/exec?key=<WEBHOOK_SECRET>. Событие: «Смена статуса сделки».
  3. В Apps Script в разделе «Триггеры» добавьте запуск processQueue раз в час и loadDirectCosts раз в сутки.
  4. Переведите тестовую сделку в нужный статус и проверьте, что в листе queue появилась строка, а после запуска processQueue она получила статус sent.

Одна ловушка, на которую я попадал сам: после правки кода веб‑приложение продолжает работать на старой версии, пока вы не создадите новую версию развёртывания. Если вебхуки перестали доходить или Google Таблицы недоступны, вебхук можно заменить опросом amoCRM по триггеру: GET /api/v4/leads с фильтром по статусу и updated_at.

Шаг 6. Директ: стратегия по офлайн‑цели и расчёт ДРР

Когда конверсии начали приходить в Метрику, в кампаниях Директа выберите стратегию с оптимизацией по конверсиям или с оплатой за конверсии и укажите офлайн‑цель. Я начинаю с qualified_lead: по ней конверсий больше, чем по deal_won, и автостратегия быстрее обучается. На цель «сделка» переключаюсь, когда по ней набирается достаточный объём. После смены цели стратегия переобучается, не делайте выводов по первым дням.

Чтобы видеть стоимость целевого лида и ДРР по данным CRM, а не по кабинету, таблица раз в сутки забирает расходы через сервис отчётов API Директа:

Apps Script: расходы и конверсии из API Директа
// Запускается по триггеру раз в сутки
function loadDirectCosts() {
  const body = {
    params: {
      SelectionCriteria: {},
      FieldNames: ['Date', 'CampaignId', 'CampaignName', 'Clicks', 'Cost', 'Conversions'],
      Goals: [CFG.directGoalId],
      AttributionModels: ['LYDC'], // последний значимый переход из Директа
      ReportName: 'offline_' + Date.now(),
      ReportType: 'CAMPAIGN_PERFORMANCE_REPORT',
      DateRangeType: 'LAST_30_DAYS',
      Format: 'TSV',
      IncludeVAT: 'YES',
    },
  };
  const opts = {
    method: 'post',
    contentType: 'application/json; charset=utf-8',
    headers: {
      Authorization: 'Bearer ' + PROPS.getProperty('YA_TOKEN'),
      'Client-Login': CFG.directLogin,
      processingMode: 'auto',
      returnMoneyInMicros: 'false',
      skipReportHeader: 'true',
      skipReportSummary: 'true',
    },
    payload: JSON.stringify(body),
    muteHttpExceptions: true,
  };
  for (let attempt = 0; attempt < 10; attempt++) {
    const res = UrlFetchApp.fetch('https://api.direct.yandex.com/json/v5/reports', opts);
    const code = res.getResponseCode();
    if (code === 200) {
      const data = res.getContentText().trim().split('\n').map(l => l.split('\t'));
      const sh = SpreadsheetApp.getActive().getSheetByName('direct');
      sh.clearContents();
      sh.getRange(1, 1, data.length, data[0].length).setValues(data);
      return;
    }
    if (code === 201 || code === 202) {
      // отчёт ещё готовится: ждём столько, сколько просит API
      Utilities.sleep((Number(res.getHeaders()['retryIn']) || 10) * 1000);
      continue;
    }
    throw new Error(res.getContentText());
  }
}

Дальше считаем на отдельном листе обычными формулами:

  • стоимость целевого лида = расходы / число qualified_lead за период;
  • ДРР = расходы / выручка по сделкам из листа sent × 100%.

Частые ошибки и как их найти

Что проверить, если конверсии не доходят до Директа
СимптомПричинаЧто сделать
Много строк no_idФорма не передаёт скрытые поля в amoCRM Проверить сопоставление полей в интеграции и скрипт на сайте
Загрузка прошла, конверсий в отчёте нетОтчёты обновляются с задержкой или визит старше периода учётаПодождать сутки, проверить период учёта в счётчике
Ошибка загрузки CSVВ одном файле смешаны ClientID и yclid или цель не того типаОдин файл — один тип идентификатора, цель — «JavaScript‑событие»
Конверсии задвоилисьКонверсии отправляли вручную в обход таблицы Отправлять только через очередь с отметкой sent
Вебхук перестал приходитьКод изменён без новой версии развёртывания Создать новую версию веб‑приложения

Проверить конкретную загрузку можно запросом GET /management/v1/counter/{id}/offline_conversions/uploading/{uploadingId}. ID загрузки скрипт пишет в лист queue.

Офлайн‑конверсии не спасут от мусора на входе

Офлайн‑конверсии учат стратегию на квалифицированных лидах, но боты и фейковые номера всё равно попадают в amoCRM, отнимают время менеджеров и портят данные для обучения, пока менеджер их не отсеет. Поэтому я ставлю офлайн‑конверсии вторым шагом, а первым делаю подтверждение номера в форме. Почему это важно при оплате за конверсии, разобрал в статье «Фрод при оплате за конверсии в Директе», а про связку офлайн‑конверсий с входом через Яндекс ID и Сбер ID — в статье «Как снизить CPL с ID‑авторизацией».

Чек‑лист запуска

  1. В Метрике созданы цели «JavaScript‑событие» под каждый этап и проверен период учёта.
  2. В тестовой сделке amoCRM заполнены ClientID, yclid и UTM‑метки.
  3. Токены лежат в свойствах скрипта, а не в коде.
  4. Вебхук amoCRM указывает на актуальную версию веб‑приложения с секретным ключом.
  5. Триггеры processQueue и loadDirectCosts включены.
  6. Первые конверсии видны в отчёте Метрики по офлайн‑цели.
  7. Стратегия в Директе переключена на офлайн‑цель, результат оценивается по стоимости целевого лида и ДРР.
🔗
Нужна чистая воронка от формы до сделки?

Мы внедряем СМС‑верификацию в формах на сайте и настраиваем передачу подтверждённых заявок с ClientID и UTM‑метками в amoCRM. Подключаем на Tilda, Bitrix, WordPress и самописные сайты за 1–3 рабочих дня.

Вопросы про офлайн‑конверсии

Можно ли загрузить офлайн-конверсии напрямую в Яндекс Директ через API?
Нет. Офлайн‑конверсии загружаются в Яндекс Метрику, а Директ видит их как обычную цель счётчика и может использовать в стратегии. API Директа в этой схеме нужен для выгрузки расходов, чтобы считать стоимость целевого лида и ДРР.
Что лучше передавать в Метрику: ClientID или yclid?
Основной идентификатор — ClientID: он есть у всех посетителей с кодом Метрики, в том числе пришедших не из Директа. yclid есть только у переходов по рекламе Директа и нужен как запасной вариант, когда ClientID не передался. В одном файле загрузки может быть только один тип идентификатора.
Зачем Google Таблица, если можно отправлять конверсии прямо из amoCRM?
amoCRM сама не отправляет данные в API Метрики, нужен посредник: сервер, платный коннектор или скрипт. Google Таблица с Apps Script бесплатна, не требует хостинга и даёт наглядный журнал: видно, какая сделка, когда и с каким идентификатором ушла в Метрику.
Какой статус сделки передавать для обучения автостратегии?
Я начинаю с этапа «квалифицированный лид»: таких конверсий больше, чем продаж, и стратегия быстрее обучается. Когда по продажам набирается достаточный объём, переключаю оптимизацию на цель «сделка». Передавать можно оба этапа сразу как разные цели.
Почему загруженные конверсии не видны в отчётах?
Частые причины: отчёты обновляются с задержкой, визит старше периода учёта офлайн‑конверсий, цель создана не как «JavaScript‑событие» или её идентификатор не совпадает с колонкой Target. Статус конкретной загрузки можно проверить через API Метрики по ID загрузки.
Как сделать так, чтобы в amoCRM не попадали фейковые заявки?
Поставить подтверждение номера в форме: СМС‑код, звонок или ID‑авторизацию. Тогда в CRM и в обучение стратегии попадают только люди с реальным телефоном. Подробнее в статье про фрод при оплате за конверсии.

Другие статьи и инструкции

Как снизить стоимость лида в Яндекс Директ Набор решений: СМС‑верификация, цели, офлайн‑конверсии, сквозная аналитика и CRM Фрод при оплате за конверсии в Директе Как не платить за заявки с несуществующими номерами, когда цена цели выше 1 000 ₽ Как снизить CPL с ID‑авторизацией Яндекс ID, Сбер ID, Т‑Банк и офлайн‑конверсии: обучение автостратегий на продажах из CRM Не приходит СМС‑код: причины и решение Чек‑лист для пользователя и владельца сайта: как не терять заявки, если код не дошёл Мобильный ID операторов на сайте Вход по номеру с push‑подтверждением от оператора и резервным СМС‑кодом СМС‑верификация формы на Tilda и Bitrix Живой пример OTP‑формы: ввод телефона, код из СМС, адаптивный дизайн SMS verification API на PHP и Node.js Для разработчиков: SDK формы, серверная генерация кода, webhook статусов, защита от SMS‑бомберов Дашборд рекламы для агентства с Claude Code API Директа и Метрики, ограничения ЕПК, Google Sheets и MCP‑сервер с Telegram‑ботом Офлайн‑конверсии из amoCRM в Метрику и Директ Пошаговая настройка через Google Таблицу и Apps Script: ClientID в сделке, загрузка через API, расчёт ДРР Как сделать сайт видимым в ChatGPT, Gemini и Claude SEO для ИИ‑поиска, уникальный контент и публичные MCP‑серверы с примерами ИИ‑менеджер по продажам: что умеет ИИ Возможности ИИ в автоматизации продаж по этапам воронки, внедрение по шагам и метрики Сквозная аналитика из WhatsApp Как доказать клиенту, что в WhatsApp пишут с рекламы, а не по сарафану HLR‑запрос: зачем он нужен для СМС‑рассылок Как проверить, что номер жив, до отправки СМС: статус, оператор, перенос номера и экономия на мёртвой базе Как почистить базу номеров перед рассылкой Формат, дубли, отписки, HLR и подтверждённые номера: порядок очистки без потери живых клиентов Можно ли делать СМС‑рассылку без имени отправителя Что уйдёт абоненту без регистрации подписи, чем рискуете и в каких случаях можно обойтись Рассылка по закону о рекламе: как не получить штраф за спам Согласие абонента, отписка, доказательство согласия и роль подтверждения номера Как сделать СМС‑рассылку по базе клиентов из amoCRM Какие поля и статусы выгружать, как сегментировать и не слать на мёртвые номера Офлайн‑конверсии Яндекса из amoCRM без платных виджетов Бесплатный коннектор Метрики за 10 минут: ClientID в сделку, статусы в цели, проверка журнала
Все статьи блога

Настроим чистую воронку от формы до офлайн‑конверсий

Внедрим СМС‑верификацию в формы, передачу подтверждённых заявок с ClientID и UTM‑метками в amoCRM и цель в Метрике только для реальных номеров.

Частые вопросы о СМС‑верификации и ID‑авторизации

tildasms.ru — сервис с опытом в настройке рекламы. Решение придумано именно для экономии на рекламе: снижения стоимости лида и борьбы с фродовыми заявками.

Что такое сервис верификации номера по СМС?
Это технология, которая подтверждает, что заявку на сайте оставил реальный человек с настоящим номером телефона: пользователь получает одноразовый код в СМС и вводит его в форме. tildasms.ru внедряет такую верификацию под ключ — мы много лет настраиваем рекламу и разработали это решение именно для того, чтобы клиенты экономили на трафике и не платили за фродовые и нецелевые заявки.
Как добавить проверку номера в форму на сайте?
Достаточно подключить наш JS‑скрипт к существующей форме — без переделки дизайна и вёрстки. Мы настраиваем интеграцию для Tilda, Bitrix, WordPress, OpenCart, Wix и других платформ за 1–3 дня, включая передачу данных и UTM‑меток в вашу CRM.
Как снизить стоимость лида в рекламе?
Внедрите верификацию номера телефона. Опыт настройки рекламных кампаний показывает: значительная часть бюджета в Яндекс Директе и других каналах уходит на фродовые и некачественные заявки. Отсекая их SMS‑верификацией или ID‑авторизацией, вы платите только за реальных клиентов — по нашей статистике стоимость целевого лида снижается на 40% и более.
Как зарегистрировать номер для отправки одноразовых СМС?
Номер отправителя регистрируется через SMS‑шлюз (например, SMSAero, SMS.ru или smsc.ru) — там же оформляется имя отправителя и тарифицируются сообщения. Мы помогаем подобрать подходящий шлюз, регистрируем отправителя и настраиваем отправку OTP‑кодов с вашего сайта под ключ.
Как внедрить коды через СМС на сайте?
Мы подключаем к вашей форме готовый OTP‑виджет: пользователь вводит номер, получает СМС с кодом, подтверждает его — и только после этого заявка уходит в CRM. Никакого программирования с вашей стороны не требуется, всё настраивается за 1–3 рабочих дня.
Как внедрить авторизацию через WB ID?
Авторизация через WB ID позволяет пользователю входить на сайт одной кнопкой, без ввода номера и оплаты SMS. Мы настраиваем OAuth‑интеграцию с WB ID и передачу полученных данных (телефон, ФИО) прямо в вашу CRM — это особенно эффективно для селлеров и партнёров Wildberries.
Как внедрить логин пользователя на сайте через Яндекс ID?
Подключаем кнопку входа через Яндекс ID к вашей форме или личному кабинету: пользователь авторизуется в один клик, а верифицированные ФИО, телефон и email автоматически попадают в CRM. Это дешевле SMS‑верификации в 3–5 раз и повышает конверсию формы.
Безопасна ли авторизация на сайте через Т‑Банк, Альфа, Сбер ID?
Да. Авторизация через ID банков-экосистем (Т‑Банк ID, Альфа ID, Сбер ID) использует защищённый протокол OAuth 2.0 — сайт не получает и не хранит пароли пользователя, только подтверждённые данные профиля. Мы настраиваем такую интеграцию и подключаем сразу несколько провайдеров на выбор пользователя.
Как внедрить авторизацию через Госуслуги, ВК ID?
Госуслуги и ВК ID дают максимально проверенные данные пользователя (вплоть до паспортных для Госуслуг) и подходят для ниш с высокими требованиями к достоверности контактов — недвижимость, финансы, визы. Мы подключаем нужный провайдер ID‑авторизации к вашей форме или кабинету и настраиваем передачу данных в CRM.
Задать свой вопрос в WhatsApp