Интеграция сайта с Битрикс24: полное руководство
Интеграция сайта с CRM-системой — ключевой шаг для автоматизации маркетинга и продаж. Битрикс24 — популярная российская CRM, и в этом гайде мы разберём, как настроить интеграцию.
Почему интегрировать сайт с Битрикс24?
✅ Автоматический сбор лидов — заявки попадают в CRM мгновенно
✅ Единая база клиентов — вся информация в одном месте
✅ Автоматические уведомления — менеджеры получают уведомления о новых заявках
✅ Аналитика воронки продаж — отслеживайте конверсию на каждом этапе
Способы интеграции
1. Вебхуки (рекомендуется)
Самый простой способ для большинства задач.
Преимущества:
- Простая настройка
- Не требует OAuth
- Идеален для отправки данных с сайта
2. REST API
Более мощный, но сложный способ.
Когда использовать:
- Двусторонняя синхронизация
- Работа с несколькими порталами
- Сложные бизнес-процессы
Настройка через вебхуки
Шаг 1. Создание входящего вебхука
- Откройте Битрикс24
- Перейдите в Dev раздел (или введите
/rest/в адресной строке) - Нажмите Добавить → Входящий вебхук
- Выберите права доступа:
crm— для работы с лидами и сделкамиcatalog— для товаровuser— для пользователей
- Скопируйте URL вебхука
Шаг 2. Отправка лида с сайта
Пример на PHP:
<?php
// Данные вебхука
$webhookUrl = 'https://your-domain.bitrix24.ru/rest/1/abcdefg123456/';
// Данные лида
$data = [
'fields' => [
'TITLE' => 'Заявка с сайта',
'NAME' => $_POST['name'],
'PHONE' => [
['VALUE' => $_POST['phone'], 'VALUE_TYPE' => 'WORK']
],
'EMAIL' => [
['VALUE' => $_POST['email'], 'VALUE_TYPE' => 'WORK']
],
'SOURCE_DESCRIPTION' => 'Заявка с формы лендинга',
]
];
// Отправка
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $webhookUrl . 'crm.lead.add',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($data),
]);
$result = curl_exec($curl);
curl_close($curl);
// Проверка результата
$response = json_decode($result, true);
if ($response['result']) {
echo 'Лид создан! ID: ' . $response['result'];
} else {
echo 'Ошибка: ' . print_r($response['error'], true);
}
Шаг 3. JavaScript-пример
Для фронтенда:
async function sendLeadToBitrix(formData) {
const webhookUrl = 'https://your-domain.bitrix24.ru/rest/1/abcdefg123456/';
const data = {
fields: {
TITLE: 'Заявка с сайта',
NAME: formData.name,
PHONE: [{ VALUE: formData.phone, VALUE_TYPE: 'WORK' }],
EMAIL: [{ VALUE: formData.email, VALUE_TYPE: 'WORK' }],
SOURCE_DESCRIPTION: 'Заявка с формы лендинга',
}
};
try {
const response = await fetch(webhookUrl + 'crm.lead.add', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
});
const result = await response.json();
if (result.result) {
console.log('Лид создан! ID:', result.result);
return result.result;
} else {
console.error('Ошибка:', result.error);
return null;
}
} catch (error) {
console.error('Ошибка запроса:', error);
return null;
}
}
REST API интеграция
OAuth авторизация
Для сложных интеграций нужен OAuth:
- Создайте локальное приложение в Битрикс24
- Получите
CLIENT_IDиCLIENT_SECRET - Получите
AUTH_CODE - Обменяйте
AUTH_CODEнаACCESS_TOKEN
Пример запроса с OAuth
<?php
$accessToken = 'your-access-token';
$domain = 'https://your-domain.bitrix24.ru';
$data = [
'fields' => [
'TITLE' => 'Заявка с сайта',
'NAME' => $_POST['name'],
// ... остальные поля
]
];
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $domain . '/rest/crm.lead.add?auth=' . $accessToken,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($data),
]);
$result = curl_exec($curl);
curl_close($curl);
Полезные советы
1. Проверка дубликатов
Перед созданием лида проверьте, существует ли контакт:
// Поиск контакта по телефону
$searchData = [
'filter' => [
'PHONE' => $_POST['phone']
]
];
$searchResult = file_get_contents(
$webhookUrl . 'crm.duplicate.findbycomm?' . http_build_query($searchData)
);
$existingContact = json_decode($searchResult, true);
if (!empty($existingContact['result'])) {
// Контакт существует, обновляем
$contactId = $existingContact['result'][0];
// ... обновление
} else {
// Создаём новый
}
2. Логирование
Логируйте все запросы для отладки:
function logRequest($url, $data, $response) {
$logEntry = sprintf(
"[%s] URL: %s\nData: %s\nResponse: %s\n\n",
date('Y-m-d H:i:s'),
$url,
print_r($data, true),
print_r($response, true)
);
file_put_contents(__DIR__ . '/bitrix.log', $logEntry, FILE_APPEND);
}
3. Обработка ошибок
Проверяйте ошибки и лимиты:
$response = json_decode(curl_exec($curl), true);
if (!empty($response['error'])) {
$error = $response['error'];
// Лимит запросов
if ($error === 'QUERY_LIMIT_EXCEEDED') {
// Подождать и повторить
sleep(1);
}
// Ошибка авторизации
if (strpos($error, 'invalid_token') !== false) {
// Обновить токен
}
}
Заключение
Интеграция с Битрикс24 — это мощный инструмент для автоматизации продаж. Начните с вебхуков для простых задач, переходите к REST API для сложных сценариев.