К интеграциям
RoistatДокументация интеграции

Roistat

Лиды и звонки из Roistat - коллтрекинг и аналитика

Нативный адаптер Roistat принимает заявки, звонки и события из Roistat через выделенный endpoint. UTM-метки, roistat_visit и данные о звонке сохраняются в карточке лида автоматически. Опционально - outbound webhook с HMAC-подписью для получения событий обратно в Roistat.

Webhook endpoint

POSThttps://closeflow.ru/api/v1/webhooks/leads

Аутентификация: заголовок X-Api-Key или query-параметр ?api_key=. Получить ключ - в Настройках.

Шаги настройки

01

Получите API-ключ CloseFlow

Откройте /dashboard/settings → API-ключи → «Создать ключ». Скопируйте значение (cf_live_…) - показывается один раз.

02

Настройте webhook в Roistat

В кабинете Roistat → Настройки → HTTP-интеграция (или используйте Roistat scripts для отправки при lead/call-событиях). Укажите endpoint и заголовок X-Api-Key. Используйте X-Idempotency-Key для защиты от дублей при ретраях.

POST https://your-app.com/api/v1/webhooks/roistat/leads
X-Api-Key: cf_live_...
X-Idempotency-Key: roistat-lead-123
Content-Type: application/json

{
  "externalId": "roistat-lead-123",
  "roistatVisit": "123456",
  "name": "Иван",
  "phone": "+79990000000",
  "email": "ivan@example.com",
  "callStatus": "missed",
  "callDuration": 0,
  "utm_source": "yandex",
  "utm_medium": "cpc",
  "utm_campaign": "brand_search",
  "utm_content": "ad_1",
  "utm_term": "купить услугу",
  "landingPage": "https://client.ru/service",
  "managerEmail": "manager@company.ru",
  "metadata": { "roistatSource": "calltracking" }
}
03

Включите outbound webhook (опционально)

В /dashboard/integrations/roistat укажите Callback URL - CloseFlow будет слать туда HMAC-подписанные события LEAD_CREATED / LEAD_STATUS_CHANGED / REPLY_RECEIVED / SLA_BREACHED / HANDED_OFF.

04

Настройте маппинг полей

Используйте настройки по умолчанию или задайте кастомные JSON dot-path пути в /dashboard/integrations/roistat → «Соответствие полей», если ваш payload имеет вложенную структуру.

05

Проверьте подпись outbound событий

CloseFlow подписывает каждый исходящий webhook заголовком X-CloseFlow-Signature: sha256=<hex>. База подписи: timestamp + '.' + raw_body. Пример верификации на Python:

import hashlib, hmac

def verify(body: bytes, timestamp: str, signature: str, secret: str) -> bool:
    expected = "sha256=" + hmac.new(
        secret.encode(), f"{timestamp}.".encode() + body, hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)

Если что-то не так

Лид приходит без roistat_visit

Убедитесь, что Roistat-cookie передаётся в payload как поле roistatVisit.

Пропущенный звонок не помечен срочным

В /dashboard/integrations/roistat включите опцию «Пропущенные звонки = срочные лиды».

Дубликат лида при ретрае

Убедитесь, что Roistat шлёт стабильный externalId, или поставьте X-Idempotency-Key.

Документация провайдера

Другие интеграции

CloseFlow - Follow-up Autopilot