Integre o Kazah ao seu Web Site WordPress
Integre seu Web Site ao Kazah, para que todas as informações preenchidas nos formulários sejam capturadas automaticamente para seu ambiente comercial no CRM.
Este processo chama-se “OPT IN“. Seguindo regras de “ANTI-SPAM“, para que sua casa de festas possa enviar campanhas de e-mail marketing é necessário que sua base de contatos tenha sido obtida por este processo.
O processo de OPT IN leva a um resultado chamado de CONVERSÃO, que é a condução do visitante a realizar uma chamada para ação (call to action).
O Token Público
Para configura esta integração, precisará do Token Público disponível no Kazah no menu Configurações -> Integrações:

Campos Para Captura
Os campos possíveis para captura de dados são: Nome, Email, Mensagem, Telefone, Celular, UF, Conversao, Origem, Tags, Fonte, Pax, TipoEvento e DataEvento.
- Nome – Nome social;
- Email – Email de contato;
- Mensagem – Utilizado para capturar a mensagem digitada pelo visitante. Essa informação será adicionada no histórico do contato;
- Telefone – Telefone fixo;
- Celular – Telefone móvel;
- UF – Estado;
- Conversao – Usado para identificar em que formulário o visitante converteu;
- Origem – Utilizado para informar o canal por onde o contato chegou, normalmente é informado “Site”;
- Tags – Utilizado para associar tags automáticas no ato da captura;
- Fonte – Por onde seu visitante encontrou sua empresa;
- Pax – Número de convidados pretendido;
- TipoEvento – Tipo do evento pretendido;
- DataEvento – Data do evento pretendido.
A API não suporta conteúdos em formato HTML devido a política de segurança, para isto, use texto plano.
Com estas informações, você poderá implementar o OPT IN no seu web site através das opções abaixo:
Web sites construídos em WordPress
Sites construídos com o WordPress permite a integração dos seguintes plugins de formulários: Contact Form7, Elementor Form, Formidable Forms, Gravity Forms, Ninja Forms, Divi Forms, e WPForms.
Contact Form7
Para formulários construídos com Contact Form 7, cole no final do arquivo functions.php o trecho abaixo:
add_action( 'wpcf7_before_send_mail', 'contactform7lead' );
function contactform7lead($cf7)
{
$submission = WPCF7_Submission::get_instance();
$args = array();
if($submission)
{
$data = $submission->get_posted_data();
$args['Token'] = 'SEU_TOKEN_PUBLICO_AQUI';
$args['Nome'] = $data['your-name'];
$args['Email'] = $data['your-email'];
$args['Mensagem'] = $data['your-message'];
$args['Telefone'] = $data['telefone'];
$args['Celular'] = $data['celular'];
$args['UF'] = $data['uf'];
$args['Conversao'] = $cf7->title();
$args['Origem'] = 'Site';
$args['Tags'] = 'tag1,tag2';
$args['Fonte'] = $data['ComoNosConheceu']; // caso use dropdown, substitua por $data['ComoNosConheceu'][0];
$args['Pax'] = $data['Convidados'];
$args['DataEvento'] = $data['DataEvento'];
$args['TipoEvento'] = $data['TipoEvento']; // caso use dropdown, substitua por $data['TipoEvento'][0];
}
$result = wp_remote_post('https://api.kazah.io/apiv1/lead', array('body' => $args));
}
Caso não saiba localizar e editar o arquivo functions.php, siga este tutorial: Edição do Tema WordPress.
Todos as variáveis com $data[‘XXX’] indica o nome dos campos no seu formulário.
Realizado estes procedimentos, faça um teste e verifique se o cadastro é exibido no ambiente do Kazah.
Elementor Form
Código pronto para o plugin Elementor Form. Cole no final do arquivo functions.php o trecho abaixo:
add_action( 'elementor_pro/forms/new_record', function( $record ) {
$submmited_fields = $record->get( 'fields' );
$fields = [];
$fields[ 'origem' ] = 'Site';
$fields[ 'conversao' ] = 'Site';
$fields[ 'token' ] = 'SEU_TOKEN_PUBLICO_AQUI';
$fields[ 'tipoevento' ] = 'Infantil';
foreach ( $submmited_fields as $field_id => $field ) {
$fields[ $field_id ] = $field['value'];
}
wp_remote_post( 'https://api.kazah.io/apiv1/lead', [
'body' => $fields,
]);
});
Caso não saiba localizar e editar o arquivo functions.php, siga este tutorial: Edição do Tema WordPress.
Formidable Forms
Código pronto para o plugin Formidable Forms. Cole no final do arquivo functions.php o trecho abaixo:
add_action('frm_after_create_entry', 'formidablelead', 30, 2);
function formidablelead($entry_id, $form_id)
{
if($form_id == 5)
{
$args = array();
if(isset($_POST['item_meta'][22]))
$args['Nome'] = $_POST['item_meta'][22];
if(isset($_POST['item_meta'][23]))
$args['Email'] = $_POST['item_meta'][23];
$args['Origem'] = 'NOME DO SEU SITE';
$args['Tags'] = 'tag1,tag2';
$args['Token'] = 'SEU_TOKEN_PUBLICO_AQUI';
$result = wp_remote_post('https://api.kazah.io/apiv1/lead', array('body' => $args));
}
}
Caso não saiba localizar e editar o arquivo functions.php, siga este tutorial: Edição do Tema WordPress.
Gravity Forms
Código pronto para o plugin Gravity Forms. Cole no final do arquivo functions.php o trecho abaixo:
add_action('gform_after_submission', 'set_post_content', 10, 2);
function set_post_content( $entry, $form ) {
$args = array();
$args['Token'] = 'SEU_TOKEN_PUBLICO_AQUI';
$args['Nome'] = rgar($entry,'1.3');
$args['Email'] = rgar($entry,'9');
$args['Mensagem'] = rgar($entry,'12');
$args['Celular'] = rgar($entry,'10');
$args['Conversao'] = $form['title'];
$args['Origem'] = 'Site';
$args['Pax'] = rgar($entry,'8');
$args['UF'] = 'RJ';
$args['TipoEvento'] = rgar($entry,'2');
$args['DataEvento'] = rgar($entry,'6');
$args['Fonte'] = rgar($entry,'13');
$result = wp_remote_post('https://api.kazah.io/apiv1/lead', array('body' => $args));
}
Caso não saiba localizar e editar o arquivo functions.php, siga este tutorial: Edição do Tema WordPress.
Ninja Forms
Código pronto para o plugin Ninja Forms. Utilize o índice de cada campo para capturar seu valor. Cole no final do arquivo functions.php o trecho abaixo:
add_action( 'ninja_forms_after_submission', 'my_ninja_forms_after_submission' );
function my_ninja_forms_after_submission( $form_data ){
$fields = $form_data['fields'];
$args = array();
$args['Token'] = 'SEU_TOKEN_PUBLICO_AQUI';
$args['Nome'] = $fields[5]['value'];
$args['Email'] = $fields[6]['value'];
$args['Celular'] = $fields[7]['value'];
$args['Mensagem'] = $fields[10]['value'];
$args['Conversao'] = 'Orçamento';
$args['Origem'] = 'Site';
$result = wp_remote_post('https://api.kazah.io/apiv1/lead', array('body' => $args));
}
Caso não saiba localizar e editar o arquivo functions.php, siga este tutorial: Edição do Tema WordPress.
Divi Forms
Código pronto para o tema Divi Theme. Utilize o índice de cada campo para capturar seu valor. Cole no final do arquivo functions.php o trecho abaixo:
add_filter( 'the_content', 'td_divi_contact_form_capture', 20 );
function td_divi_contact_form_capture( $content ) {
$form_fields = [];
$form_id = false;
foreach ( $_POST as $key => $val ) {
if ( preg_match( '/^et_pb_contact_(.+)_(\d)+$/', $key, $parts ) ) {
$field_name = $parts[1];
if ( $field_name == 'email_fields' || $field_name == 'email_hidden_fields' ) {
$form_id = $parts[2];
} else {
$form_fields[ $field_name ] = $val;
}
}
}
if ( count( $form_fields ) > 0 ) {
$args = array();
$args['Token'] = 'SEU_TOKEN_PUBLICO_AQUI';
$args['Conversao'] = 'Orçamento';
$args['Origem'] = 'Site';
$args['Nome'] = $form_fields['nome'];
$args['Email'] = $form_fields['email'];
$args['Celular'] = $form_fields['telefone'];
$args['TipoEvento'] = $form_fields['tipo_de_evento'];
$args['DataEvento'] = $form_fields['data_do_evento'];
$args['Pax'] = $form_fields['pax'];
$args['Mensagem'] = $form_fields['mensagem'];
$result = wp_remote_post('https://api.kazah.io/apiv1/lead', array('body' => $args));
}
return $content;
}
}
Caso não saiba localizar e editar o arquivo functions.php, siga este tutorial: Edição do Tema WordPress.
WPForms
Código pronto para o plugin WPForms. Utilize o índice de cada campo para capturar seu valor. Cole no final do arquivo functions.php o trecho abaixo:
add_action( 'wpforms_process', 'wpf_dev_process', 10, 3 );
function wpf_dev_process( $fields, $entry, $form_data ) {
$args = array();
$args['Token'] = 'SEU_TOKEN_PUBLICO_AQUI';
$args['Nome'] = $fields[0]['value'];
$args['Email'] = $fields[1]['value'];
$args['Mensagem'] = $fields[2]['value'];
$args['Conversao'] = 'Orçamento';
$args['Origem'] = 'Site';
$result = wp_remote_post('https://api.kazah.io/apiv1/lead', array('body' => $args));
}
Caso não saiba localizar e editar o arquivo functions.php, siga este tutorial: Edição do Tema WordPress.
Observe que o mapeamento dos campos do formulário tem a orientação do índice, 0, 2, 3 e assim por diante.
Caso queira criar uma captura diferenciando diversos formulários do seu site, use o ID do formulário como abaixo:
if ( absint( $form_data['id'] ) == 419 ) {
// Código aqui para o formulário 419
}
else if ( absint( $form_data['id'] ) == 591 ) {
// Código aqui para o formulário 591
}
Rastreamento de Origem (UTMs)
Além dos dados do visitante, o Kazah registra de qual anúncio cada lead veio. É o que permite ver no CRM qual campanha gerou orçamento e qual gerou contrato.
Para isso, o formulário precisa repassar os parâmetros de rastreamento que o Meta e o Google deixam na URL da página.
A boa notícia: quase nada precisa ser configurado nos anúncios. O Meta e o Google já colocam esses parâmetros na URL por conta própria. O trabalho do site é um só: repassar o que chegou.
A regra é simples: veio parâmetro de rastreamento junto do formulário, o Kazah grava a origem do lead. Não veio, não grava nada — e isso não é erro, é o esperado para quem chegou sem campanha.
São dois passos, em qualquer um dos plugins acima: 1. fazer o formulário carregar os parâmetros da URL em campos ocultos e 2. acrescentar três linhas ao código que você já colou no functions.php.
Parâmetros Para Captura
Os parâmetros de rastreamento possíveis são: utm_source, utm_medium, utm_campaign, utm_term, utm_content, utm_id, gclid, fbclid, gad_campaignid e Url.
- utm_source – Identifica a plataforma. O Meta envia fb, ig, msg ou an; quem configura à mão costuma usar facebook ou google;
- utm_medium – Separa mídia paga de orgânico. O Meta envia paid; configurado à mão em anúncio, use cpc ou paid_social;
- utm_campaign – A campanha nos relatórios. Automático vem o ID; configurado à mão, o nome;
- utm_term – No Meta, o ID do conjunto de anúncios. No Google, a palavra-chave que o visitante buscou;
- utm_content – ID do anúncio. É o que permite ao Kazah nomear o anúncio, e não apenas exibir o texto do parâmetro;
- utm_id – ID da campanha;
- gclid – Comprova o clique no Google Ads. Vem do auto-tagging, ligado por padrão na conta;
- fbclid – Comprova o clique no Meta. É sempre acrescentado e não há como desligar;
- gad_campaignid – ID da campanha no Google Ads;
- Url – Endereço completo da página onde o formulário foi enviado, com ? e tudo o que vem depois. Vira a página de entrada na ficha do contato e serve de reserva: se os parâmetros acima não vierem, o Kazah os lê daqui.
Três detalhes que evitam dúvida:
- Maiúscula e minúscula não importam. utm_source e UTM_Source são lidos igual;
- Todos são opcionais. Envie os que tiver; o que faltar fica em branco;
- Repasse todos sempre, sem escolher. O Meta e o Google mudam o que enviam de tempo em tempo, e quem repassa tudo não precisa mexer no site quando isso acontece.
Passo 1 – Os Campos Ocultos no Formulário
Os parâmetros chegam na URL da página que o visitante abriu — por exemplo https://seusite.com.br/contato?utm_source=fb&utm_medium=paid&fbclid=IwAR…
O navegador não envia isso junto com o formulário por conta própria. É preciso um campo oculto por parâmetro, com os nomes exatos: utm_source, utm_medium, utm_campaign, utm_term, utm_content, utm_id, gclid, fbclid, gad_campaignid e url.
A maioria dos plugins já faz isso sozinha
Quase todos têm um campo oculto que se preenche a partir da URL, sem nenhum código:
- Gravity Forms – campo Oculto, aba Avançado, opção Permitir que o campo seja preenchido dinamicamente, e em Parâmetro escreva o nome do parâmetro;
- Elementor Form – campo Oculto, no Valor Padrão use a tag dinâmica Parâmetro de Requisição, com Tipo GET e o nome do parâmetro;
- WPForms – campo Oculto, no Valor Padrão use a smart tag {query_var key=”utm_source”};
- Formidable Forms – campo Oculto, no Valor Padrão use [get param=utm_source];
- Ninja Forms – campo Oculto, e em Administração marque a opção de preencher por parâmetro da URL;
- Contact Form 7 e Divi Forms – não têm campo oculto nativo. Use o script mais abaixo.
Em todos eles, o nome do campo tem de ser exatamente o nome do parâmetro. Os menus mudam de uma versão para outra, então confira na versão que você tem instalada.
O script, que funciona em qualquer plugin
Se o seu plugin não tem campo oculto nativo, ou se você prefere resolver tudo de uma vez, cole no final do arquivo functions.php o trecho abaixo. Ele acrescenta os campos ocultos a todos os formulários da página e os preenche com o que veio na URL:
add_action('wp_footer', 'kazah_rastreamento_utm');
function kazah_rastreamento_utm() {
?>
<script>
(function () {
var campos = [
'utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',
'utm_id', 'gclid', 'fbclid', 'gad_campaignid'
];
var query = new URLSearchParams(window.location.search);
document.querySelectorAll('form').forEach(function (form) {
campos.concat(['url']).forEach(function (campo) {
var valor = campo === 'url' ? window.location.href : query.get(campo);
if (!valor) return;
// Se o proprio plugin ja criou o campo, apenas preenche
var input = form.querySelector('[name="' + campo + '"]');
if (!input) {
input = document.createElement('input');
input.type = 'hidden';
input.name = campo;
form.appendChild(input);
}
if (!input.value) input.value = valor;
});
});
})();
</script>
<?php
}
Caso não saiba localizar e editar o arquivo functions.php, siga este tutorial: Edição do Tema WordPress.
No Contact Form 7, os campos ocultos também podem ser escritos à mão: o editor do formulário aceita HTML comum, então basta colar as linhas <input type=”hidden” name=”utm_source”> e as demais junto dos outros campos.
A limitação, dita de frente: o script lê a URL daquela página. Se o visitante clica no anúncio, cai na página inicial e só depois navega até a página de contato, os parâmetros se perdem no caminho — o Kazah recebe o lead sem origem e não grava rastreamento. Para não perder esses casos, mantenha o formulário na mesma página onde o anúncio cai, ou aponte o anúncio direto para a página do formulário.
Passo 2 – Enviando o Rastreamento ao Kazah
Todos os códigos desta página terminam da mesma forma: montam um array $args e chamam o wp_remote_post. O rastreamento é um bloco só, igual para todos os plugins, colado logo antes dessa última linha:
// RASTREAMENTO DE ORIGEM
// Repassado como chegou do formulario. O que nao vier fica de fora, e
// lead sem nenhum deles simplesmente nao gera registro de origem.
foreach (array(
'utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',
'utm_id', 'gclid', 'fbclid', 'gad_campaignid'
) as $parametro) {
if (!empty($_POST[$parametro])) {
$args[$parametro] = sanitize_text_field($_POST[$parametro]);
}
}
// Endereco da pagina onde o formulario foi enviado. O campo oculto 'url'
// e o caminho principal; o wp_get_referer() cobre o envio por AJAX.
$args['Url'] = !empty($_POST['url'])
? esc_url_raw($_POST['url'])
: wp_get_referer();
Duas observações sobre onde colar:
- No Elementor Form, o array se chama $fields e não $args — troque o nome nas três ocorrências. E, se você usou o campo Oculto nativo do Elementor, o foreach que já existe no código copia os campos sozinho: nesse caso só a linha do $fields[‘Url’] é necessária;
- No Formidable Forms, o bloco entra dentro do if do formulário, junto das outras linhas do $args.
Exemplo completo com o Contact Form 7
Para não deixar dúvida sobre o lugar, o código do Contact Form 7 mostrado acima fica assim:
add_action( 'wpcf7_before_send_mail', 'contactform7lead' );
function contactform7lead($cf7)
{
$submission = WPCF7_Submission::get_instance();
$args = array();
if($submission)
{
$data = $submission->get_posted_data();
$args['Token'] = 'SEU_TOKEN_PUBLICO_AQUI';
$args['Nome'] = $data['your-name'];
$args['Email'] = $data['your-email'];
$args['Mensagem'] = $data['your-message'];
$args['Telefone'] = $data['telefone'];
$args['Celular'] = $data['celular'];
$args['UF'] = $data['uf'];
$args['Conversao'] = $cf7->title();
$args['Origem'] = 'Site';
$args['Tags'] = 'tag1,tag2';
$args['Fonte'] = $data['ComoNosConheceu'];
$args['Pax'] = $data['Convidados'];
$args['DataEvento'] = $data['DataEvento'];
$args['TipoEvento'] = $data['TipoEvento'];
// RASTREAMENTO DE ORIGEM
foreach (array(
'utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',
'utm_id', 'gclid', 'fbclid', 'gad_campaignid'
) as $parametro) {
if (!empty($_POST[$parametro])) {
$args[$parametro] = sanitize_text_field($_POST[$parametro]);
}
}
$args['Url'] = !empty($_POST['url'])
? esc_url_raw($_POST['url'])
: wp_get_referer();
}
$result = wp_remote_post('https://api.kazah.io/apiv1/lead', array('body' => $args));
}
Como Conferir
- Abra a página do formulário acrescentando parâmetros à mão na URL: https://seusite.com.br/contato?utm_source=facebook&utm_medium=paid_social&utm_campaign=teste
- Envie o formulário com um e-mail que ainda não exista no Kazah;
- No Kazah, abra a ficha do contato e veja a seção Rastreamento.
Deu certo quando a ficha mostra Entrada: Formulário no site, Origem: Meta, Canal: Mídia paga e Campanha: teste.
Não apareceu nada? Quase sempre o parâmetro não saiu do navegador. Com a página aberta, clique com o botão direito sobre o formulário e escolha Inspecionar: os campos ocultos têm de estar lá, com valor preenchido. Se estiverem vazios, o problema está no Passo 1; se estiverem preenchidos e mesmo assim o Kazah não mostrar nada, o problema está no Passo 2.
Se o seu site usa plugin de cache, limpe o cache depois de mexer no functions.php. Página servida do cache costuma ser a explicação para o script não rodar.
O Lado do Anúncio
Vale repetir, porque economiza reunião: o rastreamento funciona sem ninguém mexer nos anúncios.
- No Meta, quando o anunciante deixa o campo de parâmetros de URL em branco, o próprio Meta preenche os UTM com os IDs da campanha, do conjunto e do anúncio. O fbclid vem sempre;
- No Google, o auto-tagging da conta acrescenta o gclid, e o Google também envia o gad_campaignid com o ID da campanha.
Configurar os anúncios é opcional, e serve para uma coisa só: trocar ID por nome legível nos relatórios.
Parâmetros de URL no Meta Ads
utm_source=facebook
&utm_medium=paid_social
&utm_campaign={{campaign.name}}
&utm_id={{campaign.id}}
&utm_content={{ad.id}}
Sufixo de URL final no Google Ads (uma vez, para a conta inteira)
utm_source=google
&utm_medium=cpc
&utm_campaign={campaignid}
&gad_campaignid={campaignid}
&utm_term={keyword}
O erro que mais custa relatório: escrever utm_medium=social no anúncio. O Kazah usa esse campo para separar mídia paga de orgânico, e o valor que o Meta coloca sozinho — paid — já é lido corretamente. Quem configura à mão e escreve social piora o que funcionava por padrão: o lead do anúncio passa a entrar como orgânico e a campanha perde o crédito da venda. Em anúncio pago, use cpc ou paid_social — ou simplesmente não configure nada e deixe o Meta preencher.