Гайд / Интеграции
Webhook-интеграция с вашей CRM
Replyo отправляет горячего лида в вашу систему сразу после того, как бот классифицировал диалог как «готов купить». Один HTTPS-endpoint, JSON-payload, HMAC-подпись — без плагинов, без ключей третьих сторон.
Совместимость
- Bitrix24 — входящий REST-хук или собственный обработчик.
- amoCRM — endpoint на вашем бэкенде, создающий сделку через amoCRM API с контактом.
- n8n / Zapier / Make — Webhook trigger принимает payload напрямую.
- 1С-Битрикс / собственный бэкенд — любой PHP/Node/Python route, проверяющий HMAC.
Как включить
- Кабинет → бот → «Поведение» → блок «Hot-Lead Alerts».
- Вставьте HTTPS-URL вашего обработчика и секрет (минимум 24 символа — генератор есть в интерфейсе).
- Нажмите «Отправить тест» — в CRM придёт payload с полем
test: true. - Когда живой бот поставит тикет «hot», мы вызовем этот endpoint с боевым payload.
Формат payload
Content-Type: application/json. Заголовок X-Replyo-Signature: sha256=<hex> — HMAC-SHA256 от сырого тела, секрет из настроек бота.
{
"event": "lead.captured",
"emitted_at": "2026-04-20T15:40:12.881Z",
"lead_source": "replyo_widget",
"tier": "hot",
"score": 78,
"signals": [
{ "name": "budget_mentioned", "weight": 18 },
{ "name": "timeline_soon", "weight": 15 },
{ "name": "contact_provided", "weight": 25 }
],
"bot": { "id": "bot_7g2...", "name": "Агентство Норд" },
"conversation": {
"id": "c_6c9...",
"transcript_url": "https://replyo.su/app/live/c_6c9...",
"last_messages": [
{ "role": "user", "content": "Ищу 2-ку до 12 млн, переезд в июле." },
{ "role": "assistant", "content": "Передам контакт агенту — наберёт в течение 15 минут." }
]
},
"visitor": {
"id": "v_3a1...",
"email": "client@example.ru",
"phone": "+7 900 000 00 00",
"display_name": "Алексей"
},
"metadata": {}
}Поля tier, score, signals — приоритизация: hot эскалируется агенту, warm идёт в nurture-очередь, cold обычно игнорируется.
Верификация подписи — Node.js
// Node.js (Express) — verify HMAC before trusting the payload.
import express from "express";
import { createHmac, timingSafeEqual } from "node:crypto";
const app = express();
const SECRET = process.env.REPLYO_WEBHOOK_SECRET;
app.post("/hooks/replyo",
express.raw({ type: "application/json" }), // raw body required for HMAC
(req, res) => {
const sig = (req.get("X-Replyo-Signature") ?? "").replace(/^sha256=/, "");
const expected = createHmac("sha256", SECRET).update(req.body).digest("hex");
if (sig.length !== expected.length ||
!timingSafeEqual(Buffer.from(sig, "hex"), Buffer.from(expected, "hex"))) {
return res.status(401).end();
}
const event = JSON.parse(req.body.toString("utf8"));
// event.tier === "hot" | "warm" | "cold"
// → forward to CRM, Slack, etc.
res.status(200).end();
}
);Верификация подписи — PHP
// PHP — same check, for Bitrix24 webhooks or 1C integrations.
$secret = getenv('REPLYO_WEBHOOK_SECRET');
$raw = file_get_contents('php://input');
$got = $_SERVER['HTTP_X_REPLYO_SIGNATURE'] ?? '';
$got = preg_replace('/^sha256=/', '', $got);
$expect = hash_hmac('sha256', $raw, $secret);
if (!hash_equals($expect, $got)) { http_response_code(401); exit; }
$event = json_decode($raw, true);
// forward to Bitrix24 REST, send to Slack, etc.Retry-политика
- Таймаут — 3 секунды. Дольше не ждём, чтобы не блокировать чат.
- На
5xxили сетевую ошибку — одна автоповторная попытка через 500 мс. - После двух неудач событие логируется; чат продолжает работу без сбоя.
- Если endpoint даёт
4xxиз-за неверной подписи — это баг в вашем коде, retry не поможет; мы не повторяем.
Нужна помощь с интеграцией?
На Бизнес+ подключим ваш CRM сами — напишите hello@replyo.su. На остальных тарифах — смотрите код выше и пингуйте, если застряли.