Zadarma API CRM

O percurso do cliente até à compra ou ao contacto com uma empresa começa, na maioria das vezes, com um formulário simples no site. No entanto, para transformar rapidamente um pedido num negócio bem-sucedido, não basta recolher os dados de contacto, é importante perceber para onde são enviados e como são processados posteriormente.

A base de um trabalho eficaz com os clientes é um sistema CRM. É este sistema que ajuda a estruturar a base de contactos, automatizar tarefas e garantir que nenhum pedido fica sem resposta.

No entanto, um CRM, por si só, não é suficiente. Deve interagir com outras ferramentas e canais de comunicação utilizados pela sua empresa. A integração direta do formulário do site com o CRM através de uma API já se tornou um padrão nas empresas modernas. Esta abordagem permite acelerar o processamento dos pedidos, preservar todo o contexto do contacto e evitar que os colaboradores tenham de introduzir os dados manualmente.

Neste artigo, analisaremos passo a passo o processo de integração. Ficará a saber como transferir automaticamente os dados do formulário do site para o CRM e que informações adicionais podem ajudar as equipas de vendas e de apoio a trabalhar de forma mais eficiente.

Por que razão uma empresa deve integrar o formulário de pedidos com o CRM

Antes de passarmos ao código, analisemos a questão do ponto de vista empresarial. Quais são as vantagens desta integração?

  • Transferência imediata de dados. O pedido é enviado para o CRM imediatamente após o utilizador clicar no botão "Enviar". Antes do cliente fechar a página, a sua equipa já terá recebido uma notificação e poderá começar a tratar do pedido.
  • Redução de erros. A transferência manual de dados conduz inevitavelmente a erros. Um endereço de e-mail introduzido incorretamente ou um algarismo em falta no número de telefone pode fazer-lhe perder um cliente. A API transfere automaticamente os dados para o CRM, sem perdas nem alterações.
  • Preservação do contexto do contacto. Uma mensagem de e-mail comum contém apenas as informações introduzidas pelo utilizador. A integração através de uma API permite adicionar parâmetros adicionais e dados ocultos que ajudam a compreender melhor as necessidades do cliente.
  • Segmentação automática de leads. O script pode atribuir etiquetas consoante a página a partir da qual o pedido foi enviado. Por exemplo, os contactos provenientes da página "Erro de pagamento" são encaminhados automaticamente para o apoio técnico, enquanto os pedidos provenientes da página "Tarifários" são enviados para a equipa de vendas.

Agora que as vantagens são claras, passemos à implementação prática.

Quanto custa integrar o formulário do site com o CRM

O Teamsale CRM funciona em conjunto com a central telefónica virtual da Zadarma, e ambos os serviços são disponibilizados gratuitamente. Para manter a conta ativa, é necessário adicionar saldo pelo menos uma vez a cada três meses. O saldo pode ser utilizado em qualquer serviço: chamadas efetuadas, números virtuais ou funcionalidades adicionais da central telefónica.

Caso seja necessário, pode ativar um pacote tarifário, que inclua minutos para chamadas efetuadas, números virtuais, análise de voz com IA, um maior número de utilizadores do CRM e outras funcionalidades. Pode escolher o tarifário mais adequado em função da dimensão da empresa, do volume de comunicações e das funcionalidades necessárias.

Passo 1. Definições na área pessoal da Zadarma

Na secção "Definições → Integrações e API", certifique-se de que a integração com o Teamsale CRM está ativada. Em seguida, abra a secção "Chaves e API" e obtenha as suas chaves de acesso (key e secret). Estas serão necessárias para autenticar os pedidos à API

Passo 2. Script PHP

Crie um processador, por exemplo em https://my.site.com/zcrm_leads, que receba os dados do formulário e os envie para o CRM através da API. Nos campos UserKey e Secret, deve indicar os dados obtidos no passo anterior.

<?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, pode deixar uma nota de texto na respetiva ficha
       $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)
{
   // Substitua userKey e secret pelos seus próprios dados da á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
       )
   );
}

Passo 3. Formulário HTML

Adicione ao site um formulário HTML para enviar os dados para o CRM. Os campos ocultos são obrigatórios para garantir a correta transmissão das informações.

<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>

O exemplo foi escrito em HTML puro, sem utilizar bibliotecas de terceiros. Pode adaptar o aspeto do formulário ao design do seu site e adicionar campos adicionais conforme necessário.

A lista completa dos métodos de integração está disponível na secção API CRM.

Passo 4. Definições adicionais

O formulário básico transmite o nome, o telefone, o e-mail e o comentário. No entanto, a API do CRM permite enviar muitas mais informações.

Parâmetros de marketing

Se o seu site utilizar parâmetros UTM, estes podem ser transmitidos automaticamente para o CRM através de campos ocultos do formulário. Isto permitirá saber com precisão de que canal publicitário veio o lead.

Etiquetas

As etiquetas ajudam a categorizar automaticamente os leads. Podem ser atribuídas tanto no formulário HTML como diretamente no script PHP.

Propriedades adicionais

Se o formulário incluir campos específicos, por exemplo, a hora preferencial para receber uma chamada ou o serviço selecionado, estes podem ser enviados através do parâmetro custom_properties.

Passo 5. O que acontece após o envio do formulário

Na forma atual, o formulário está totalmente funcional. No entanto, antes de o colocar em produção, recomenda-se a realização de alguns passos adicionais.

  • Proteção contra spam. Recomenda-se a utilização da validação através do Google reCAPTCHA gratuito.
  • Validação dos dados no servidor. Verifique a validade do e-mail, do número de telefone e dos campos obrigatórios antes de enviar as informações para o CRM.
  • Tratamento de erros. Em vez de apresentar var_dump($leadData), é preferível redirecionar o utilizador para uma página de agradecimento ou para uma página com uma mensagem de erro.

Conclusão

O formulário de contacto é a forma mais simples de enviar dados para o CRM. No entanto, a mesma abordagem pode ser utilizada para lojas online, chatbots, landing pages e quaisquer outros canais de receção de pedidos.

A API aberta do CRM da Zadarma não impõe limitações quanto ao número ou ao tipo de integrações. Pode automatizar praticamente qualquer processo empresarial e integrar as suas próprias soluções sem recorrer a serviços de terceiros.

Se pretender expandir as possibilidades de integração, a lista completa dos métodos da API está disponível na secção "Suporte → API" no site da Zadarma.

Perguntas frequentes

Como adicionar automaticamente leads do formulário do site ao CRM?

A forma mais fiável é a integração através da API. Os dados do formulário são enviados para um script no servidor (por exemplo, em PHP), que cria um pedido autenticado e o envia para o CRM. O lead é criado automaticamente assim que o formulário é enviado.

É possível ligar o formulário do site ao CRM sem utilizar plugins?

Sim. Basta utilizar um script no servidor em PHP, Python ou Node.js e ter acesso à API do CRM. Não são necessárias plataformas ou construtores adicionais.

Como armazenar as chaves da API em segurança?

As chaves da API devem ser utilizadas apenas no lado do servidor. Guarde-as no script PHP ou em variáveis de ambiente. Nunca coloque a key e a secret em código JavaScript acessível aos utilizadores.

É necessário pagar pelo CRM para utilizar a API?

Não. O Teamsale CRM disponibiliza acesso à API gratuitamente. Para utilizar as integrações, basta ter uma conta ativa e saldo positivo.