12.01.2026

Graças à interface aberta da API, pode ligar o CRM gratuito da Zadarma a qualquer meio de comunicação com os clientes.

Um dos canais mais comuns é o formulário no site. Aqui está um exemplo de um formulário totalmente funcional para aceitar pedidos ou comentários do site e criar leads no Teamsale com base nestes dados.

Para simplificar o exemplo, o formulário é reduzido ao mínimo. Recomendamos modificar o formulário para utilização no seu site, pelo menos definir os seus próprios estilos e adicionar medidas anti-spam (captcha).

O formulário está em HTML, sem elementos nem bibliotecas, e é inserido no código do site. Além disso, para o funcionamento do formulário no site, será necessário colocar o script em PHP para adicionar dados no Teamsale.

Etapas de configuração do código para a criação de lead no CRM a partir do formulário do site

  1. Verificamos se o CRM gratuito está criado e ativado, caso não esteja, procedemos ao registo e à ativação.
  2. Obtemos as chaves da API na área pessoal.
  3. No caminho https://my.site.com/zcrm_leads criamos um script para enviar os dados do formulário para o CRM através da API (este exemplo está em PHP). Nos campos UserKey e Secret deve definir a sua chave e palavra-passe obtidas no ponto 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']))
       ) {
           //Se o cliente tiver sido criado, deixamos uma nota de texto no fluxo de atividade
           $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 e secret substituir pelos próprios obtidos na área pessoal
       $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. No código do seu site adicionamos o formulário para obter e enviar o lead via API: (Campos ocultos obrigatórios para o pedido)
  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. O formulário está configurado e pronto a funcionar. Como não tem design, será semelhante a este:









Recomendamos definir estilos próprios e proteção (por exemplo, reCAPTCHA gratuito). Também pode atualizar o formulário de qualquer forma, seja com um script para adicionar outros dados ou noutro separador (por exemplo, contactos ou tarefas). Pode consultar a lista completa das possibilidades (métodos) de integração na secção API Teamsale.