Skip to content

Instantly share code, notes, and snippets.

@John-Henrique
Forked from thiago-sydow/index.markdown
Created February 25, 2022 22:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save John-Henrique/ff96e5ae317c00a8a4826c8516c5ee4c to your computer and use it in GitHub Desktop.
Save John-Henrique/ff96e5ae317c00a8a4826c8516c5ee4c to your computer and use it in GitHub Desktop.
Integrações RD Station - Wordpress e Contact Form 7

Integrações RD Station

Wordpress e Contact Form 7

Para as pessoas que usam o Wordpress como ferramenta de gerenciamento de conteúdo do seu site, e também a facilidade do plugin Contact Form 7 para criar formulários, a integração com RD Station fica bem simples.

Ainda não conhece o Contact Form 7

Se você ainda não tem tanta familiaridade com o plugin Contact Form 7, veja alguns tutoriais: http://www.webmaster.pt/como-criar-formulario-wordpress-contact-form-7-parte1-12914.html#post-12914 http://www.comocriarmeusite.com.br/wordpress-2/formulario-de-contato-no-wordpress-contact-form-7/#middle-post

Criar ou configurar formulários do Contact Form 7

Quando for criar um formulário no painel do plugin, eu editar algum, é preciso padronizar os mesmos tipos de input para usarem sempre os mesmos nomes (por ex.: 'email' para email, 'nome' para nome, etc), assim seu formulário ficará mais ou menos assim:

<p>Seu email (obrigatório) [email* email]</p>
<p>Seu nome [text nome]</p>

É obrigatório a presença de um campo email ou email_lead.

É possível utilizar uma lista de outros campos já cadastrados na ferramenta de CRM do RD Station. Segue uma breve lista de opções:

  • nome
  • telefone
  • empresa
  • cargo
  • twitter

É preciso também incluir três novos campos para passar o identificador do formulário/página, cookie utmz do Google Analytics e cookie TrafficSource (*valores dos cookies utilizados automaticamente com um código Javascript presente também no fragmento abaixo):

<div style="display:none;">
[text identificador "pagina contato"]
[text c_utmz id:cookieutmz ""]
[text traffic_source id:traffic_source ""]
</div>
<script type="text/javascript">
function read_cookie(a){var b=a+"=";var c=document.cookie.split(";");for(var d=0;d<c.length;d++){var e=c[d];while(e.charAt(0)==" ")e=e.substring(1,e.length);if(e.indexOf(b)==0){return e.substring(b.length,e.length)}}return null}try{document.getElementById("cookieutmz").value=read_cookie("__utmz"); document.getElementById("traffic_source").value=read_cookie("__trf.src");}catch(err){}
</script>

Editar tema

Para enviar os dados do formulário para o RD Station, insira o código abaixo no final do arquivo functions.php do seu tema do Wordpress.

Antes de salvar, é preciso alterar o código inserindo o token RD Station de sua conta (encontrado em https://www.rdstation.com.br/docs/api ).

<?php
/**
 * RD Station - Integrações
 * addLeadConversionToRdstationCrm()
 * Envio de dados para a API de leads do RD Station
 *
 * Parâmetros:
 *     ($rdstation_token) - token da sua conta RD Station ( encontrado em https://www.rdstation.com.br/docs/api )
 *     ($identifier) - identificador da página ou evento ( por exemplo, 'pagina-contato' )
 *     ($data_array) - um Array com campos do formulário ( por exemplo, array('email' => 'teste@rdstation.com.br', 'name' =>'Fulano') )
 */
function addLeadConversionToRdstationCrm( $rdstation_token, $identifier, $data_array ) {
  $api_url = "http://www.rdstation.com.br/api/1.2/conversions";

  try {
    if (empty($data_array["token_rdstation"]) && !empty($rdstation_token)) { $data_array["token_rdstation"] = $rdstation_token; }
    if (empty($data_array["identificador"]) && !empty($identifier)) { $data_array["identificador"] = $identifier; }
    if (empty($data_array["email"])) { $data_array["email"] = $data_array["your-email"]; }
    if (empty($data_array["c_utmz"])) { $data_array["c_utmz"] = $_COOKIE["__utmz"]; }
    if (empty($data_array["traffic_source"])) { $data_array["traffic_source"] = $_COOKIE["__trf.src"]; }
    unset($data_array["password"], $data_array["password_confirmation"], $data_array["senha"], 
          $data_array["confirme_senha"], $data_array["captcha"], $data_array["_wpcf7"], 
          $data_array["_wpcf7_version"], $data_array["_wpcf7_unit_tag"], $data_array["_wpnonce"], 
          $data_array["_wpcf7_is_ajax_call"], $data_array["your-email"]);
      
    if ( !empty($data_array["token_rdstation"]) && !( empty($data_array["email"]) && empty($data_array["email_lead"]) ) ) {
      $data_query = http_build_query($data_array);
      if (in_array ('curl', get_loaded_extensions())) {
        $ch = curl_init($api_url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_query);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_exec($ch);
        curl_close($ch);
      } else {
        $params = array('http' => array('method' => 'POST', 'content' => $data_query, 'ignore_errors' => true));
        $ctx = stream_context_create($params); 
        $fp = @fopen($api_url, 'rb', false, $ctx);
      }
    }
  } catch (Exception $e) { }
}
function addLeadConversionToRdstationCrmViaWpCf7( $cf7 ) {
  $token_rdstation = "SEU_TOKEN_RDSTATION_AQUI";
  $form_data = $cf7->posted_data;
  addLeadConversionToRdstationCrm($token_rdstation, null, $form_data);
}
add_action('wpcf7_mail_sent', 'addLeadConversionToRdstationCrmViaWpCf7');
?>

É possível também inserir outros parâmetros do POST para enviar ao RD Station

Avisos de conversão por email

O RD Station pode lhe enviar um email quando uma nova conversão for realizada em seu site. Para isso, basta colocar o seu email na configuração da página da API https://www.rdstation.com.br/docs/api

Erros

A API pode retornar erro caso:

  • (401) seu token RD Station esteja errado ou inválido;
  • (400) não esteja recebendo um identificador;
  • (400) não esteja recebendo a informação email ou email_lead do formulário;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment