13.07.2020
Zadarma CRM

Благодаря открытому интерфейсу API, вы можете подключать бесплатную CRM Zadarma к любым каналам связи с клиентом.

Одним из самых простых и популярных каналов является форма на сайте. Ниже приведем пример полностью работоспособной формы для приема заявок или обратной связи с сайта и создания Лидов в ZCRM на основании этих данных.

Для минимизации примера форма максимально упрощена. Мы рекомендуем модифицировать форму для использования на вашем сайте, как минимум установить свои стили и добавить защиту для борьбы со спамом (капчу).

Форма написана на HTML без элементов и библиотек, вставляется в код сайта. Также для работы формы на вашем сайте нужно разместить скрипт для добавления данных в ZCRM, он написан на PHP.

Этапы установки кода для создания лида в CRM из формы на сайте

  1. Проверяем что бесплатная CRM создана и активна, если нет то регистрируемся и включаем.
  2. Получаем ключи для API в личном кабинете.
  3. По маршруту https://my.site.com/zcrm_leads создаем скрипт для отправки данных с формы в CRM через API (данный пример на PHP). В полях UserKey и Secret нужно установить ваш ключ и пароль полученные в пункте 2.
  4. <?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
           )
       );
    }
  5. В код вашего сайта добавляем форму для получения лида и отправки его в API: (Скрытые поля обязательны для запроса)
  6. <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>
  7. Форма установлена и может уже полностью выполнять свои функции. Но так как она не имеет дизайна то имеет вид подобный этому:









Рекомендуем установить свои стили и защиту (например бесплатную reCAPTCHA). Также вы можете любым образом модернизировать форму либо скрипт, чтобы вносить другие данные, либо в другой раздел (например в контакты либо в задачи). Ознакомиться с полным списком возможностей (методов) интеграции вы можете в разделе API ZCRM.