Zadarma API CRM
Від кліку до продажу за кілька хвилин. Як пов'язати форму на сайті із CRM-системою. Кожна хвилина очікування відповіді суттєво знижує ймовірність успішного закриття угоди. Коли дані форми на сайті надходять у звичайну поштову скриньку, співробітники витрачають дорогоцінний час на ручне оброблення заявок. Рішення - пряма інтеграція сайту з CRM-системою через API. У цій статті ми крок за кроком розберемо, як реалізувати таке рішення за допомогою PHP та автоматизувати шлях ліда від заповнення форми до передачі інформації вашим фахівцям.

Шлях клієнта до покупки чи звернення в компанію частіше за все починається з простої форми на сайті. Однак для того, щоб швидко перетворити заявку на успішну угоду, недостатньо просто зібрати контактні дані: важливо розуміти, куди вони потрапляють і як обробляються далі.

Основою ефективної роботи з клієнтами є 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 безкоштовно. Для використання інтеграцій достатньо мати активний акаунт та кошти на балансі.