Zadarma API CRM

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

Основой эффективной работы с клиентами является CRM-система. Именно она помогает структурировать базу контактов, автоматизировать задачи и следить за тем, чтобы ни одно обращение не осталось без внимания. О том, какие операционные задачи помогает решить CRM, вы можете прочитать в статье Что такое CRM и зачем ей интеграция с телефонией?.

Но одной CRM недостаточно. Она должна взаимодействовать с другими инструментами и каналами коммуникации, которые использует ваш бизнес. Прямая интеграция формы сайта с CRM через API уже давно стала стандартом современной компании. Такой подход позволяет ускорить обработку заявок, сохранить полный контекст обращения и избавить сотрудников от рутинного ручного ввода данных.

В этой статье мы пошагово рассмотрим процесс интеграции. Вы узнаете, как автоматически передавать данные из формы на сайте в CRM и какие дополнительные сведения помогут отделу продаж и поддержки работать эффективнее.

Зачем бизнесу интегрировать форму заявок с CRM

Прежде чем перейти к коду, давайте посмотрим на задачу с точки зрения бизнеса. Что дает такая интеграция?

  • Мгновенная передача данных. Заявка попадает в CRM сразу после нажатия кнопки «Отправить». Клиент еще не успеет закрыть страницу, а ваша команда уже получит уведомление и сможет начать работу.
  • Минимизация ошибок. Ручной перенос данных неизбежно приводит к ошибкам. Неверно введенный email или пропущенная цифра в номере телефона могут стоить вам клиента. API автоматически передает данные в CRM без потерь и искажений.
  • Сохранение контекста обращения. Обычное письмо содержит только информацию, которую ввел пользователь. Интеграция через API позволяет добавлять дополнительные параметры и скрытые данные, которые помогают лучше понимать потребности клиента.
  • Автоматическая сегментация лидов. Скрипт может присваивать теги в зависимости от страницы, с которой была отправлена заявка. Например, обращения со страницы «Ошибка оплаты» автоматически направляются в техническую поддержку, а заявки со страницы «Тарифы» — в отдел продаж.

Теперь, когда преимущества понятны, перейдем к практической реализации.

Сколько стоит интеграция формы сайта с CRM

Teamsale CRM работает вместе с виртуальной АТС Zadarma, и обе услуги предоставляются бесплатно. Для поддержания активности аккаунта необходимо пополнять баланс хотя бы один раз в три месяца. Средства можно использовать на любые услуги: исходящие звонки, виртуальные номера или дополнительные функции АТС.

При необходимости можно подключить тарифный пакет, включающий минуты на исходящие звонки, виртуальные номера, AI-аналитику речи, увеличенное количество пользователей CRM и другие возможности. Выбрать подходящий тариф можно в зависимости от размера компании, объема коммуникаций и необходимых функций.

Шаг 1. Настройки в личном кабинете Zadarma

В разделе «Настройки → Интеграции и API» убедитесь, что интеграция с Teamsale CRM активирована. Затем откройте раздел «Ключи и API» и получите свои ключи доступа (key и secret). Они понадобятся для авторизации запросов к API.

Шаг 2. PHP-скрипт

Создайте обработчик, например по адресу https://my.site.com/zcrm_leads, который будет принимать данные формы и отправлять их в CRM через API. В полях UserKey и Secret необходимо указать данные, полученные на предыдущем шаге.

<?php
$postData = $_POST;
if ($postData) {
   if (isset($postData['phones'], $postData['phones'][0], $postData['phones'][0]['phone'])) {
       $postData['phones'][0]['type'] = 'work';
   }
   if (isset($postData['contacts'], $postData['contacts'][0], $postData['contacts'][0]['value'])) {
       $postData['contacts'][0]['type'] = 'email_work';
   }
   $params = ['lead' => $postData];
   $params['lead']['lead_source'] = 'form';

   $leadData = makePostRequest('/v1/zcrm/leads', $params);
   if (isset($leadData['status'], $leadData['data'], $leadData['data']['id'])
       && $leadData['status'] === 'success'
       && (isset($postData['comment']) && !empty($postData['comment']))
   ) {
       //Если клиент был создан, вы можете оставить текстовую заметку в его карте
       $addFeedMethod = sprintf('/v1/zcrm/customers/%s/feed', $leadData['data']['id']);
       $messageData = ['content' => $postData['comment']];
       makePostRequest($addFeedMethod, $messageData);
   }

   var_dump($leadData);
}
exit();

function makePostRequest($method, $params)
{
   // userKey и secret нужно заменить на свои данные из личного кабинета
   $userKey = '';
   $secret = '';
   $apiUrl = 'https://api.zadarma.com';

   ksort($params);

   $paramsStr = makeParamsStr($params);
   $sign = makeSign($paramsStr, $method, $secret);

   $curl = curl_init();
   curl_setopt($curl, CURLOPT_URL, $apiUrl . $method);
   curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
   curl_setopt($curl, CURLOPT_POST, true);
   curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
   curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
   curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
   curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
   curl_setopt($curl, CURLOPT_POSTFIELDS, $paramsStr);
   curl_setopt($curl, CURLOPT_HTTPHEADER, [
       'Authorization: ' . $userKey . ':' . $sign
   ]);

   $response = curl_exec($curl);
   $error = curl_error($curl);

   curl_close($curl);

   if ($error) {
       return null;
   } else {
       return json_decode($response, true);
   }
}

/**
* @param array $params
* @return string
*/
function makeParamsStr($params)
{
   return http_build_query($params, null, '&', PHP_QUERY_RFC1738);
}

/**
* @param string $paramsStr
* @param string $method
* @param string $secret
*
* @return string
*/
function makeSign($paramsStr, $method, $secret)
{
   return base64_encode(
       hash_hmac(
           'sha1',
           $method . $paramsStr . md5($paramsStr),
           $secret
       )
   );
}

Шаг 3. HTML-форма

Добавьте на сайт HTML-форму для отправки данных в CRM. Скрытые поля являются обязательными для корректной передачи информации.

<form method="POST" action="/zcrm_leads">
   <label for="name">Name:
   <br>
   <input type="text" id="name" name="name" value="">
   <br>
   <label for="comment">Comment:</label><br>
   <input type="text" id="comment" name="comment" value="">
   <br>
   <label for="phone">Phone:</label><br>
   <input type="text" id="phone" name="phones[0][phone]" value="">
   <br>
   <label for="phone">Email:</label><br>
   <input type="text" id="email" name="contacts[0][value]" value="">
   <br>
   <br>
   <input type="submit" value="Submit">
</form>

Пример написан на чистом HTML без использования сторонних библиотек. Вы можете адаптировать внешний вид формы под дизайн своего сайта и добавлять дополнительные поля по мере необходимости.

Полный список методов интеграции доступен в разделе API CRM.

Шаг 4. Дополнительные настройки

Базовая форма передает имя, телефон, email и комментарий. Однако API CRM позволяет отправлять значительно больше данных.

Маркетинговые параметры

Если ваш сайт использует UTM-метки, их можно автоматически передавать в CRM через скрытые поля формы. Это позволит точно понимать, из какого рекламного канала пришел лид.

Теги

Теги помогают автоматически распределять лидов по категориям. Их можно назначать как в HTML-форме, так и непосредственно в PHP-скрипте.

Дополнительные свойства

Если в форме присутствуют специфические поля, например предпочитаемое время звонка или выбранная услуга, их можно передавать через параметр custom_properties.

Шаг 5. Что происходит после отправки формы

В текущем виде форма полностью работоспособна. Однако перед запуском в рабочей среде рекомендуется выполнить несколько дополнительных шагов.

  • Защита от спама. Рекомендуется подключить проверку через бесплатную Google reCAPTCHA.
  • Валидация данных на сервере. Проверяйте корректность email, телефона и обязательных полей до отправки информации в CRM.
  • Обработка ошибок. Вместо вывода var_dump($leadData) лучше реализовать перенаправление пользователя на страницу благодарности или страницу с сообщением об ошибке.

Итоги

Форма обратной связи — самый простой способ передачи данных в CRM. Однако тот же подход можно использовать для интернет-магазинов, чат-ботов, лендингов и любых других каналов получения заявок.

Открытое API CRM Zadarma не ограничивает количество и тип интеграций. Вы можете автоматизировать практически любой бизнес-процесс и подключать собственные решения без использования сторонних сервисов.

Если вы хотите расширить возможности интеграции, полный список методов API доступен в разделе «Поддержка → API» на сайте Zadarma.

FAQ

Как автоматически добавлять лиды из формы сайта в CRM?

Самый надежный способ — интеграция через API. Данные формы передаются на серверный скрипт (например, на PHP), который формирует подписанный запрос и отправляет его в CRM. Лид создается автоматически сразу после отправки формы.

Можно ли подключить форму сайта к CRM без плагинов?

Да. Для этого достаточно использовать серверный скрипт на PHP, Python или Node.js и иметь доступ к API CRM. Никакие дополнительные платформы или конструкторы не требуются.

Как безопасно хранить ключи API?

Ключи API должны использоваться только на стороне сервера. Храните их в PHP-скрипте или переменных окружения. Никогда не размещайте key и secret в JavaScript-коде, доступном пользователям.

Нужно ли оплачивать CRM для работы с API?

Нет. Teamsale CRM предоставляет доступ к API бесплатно. Для использования интеграций достаточно иметь активный аккаунт и положительный баланс.