Pós Pago
[et_pb_section fb_built="1" fullwidth="on" admin_label="Hero" _builder_version="4.27.4" _module_preset="default" da_disable_devices="off|off|off" global_colors_info="{}" da_is_popup="off" da_exit_intent="off" da_has_close="on" da_alt_close="off" da_dark_close="off" da_not_modal="on" da_is_singular="off" da_with_loader="off" da_has_shadow="on"][et_pb_fullwidth_code _builder_version="4.27.4" _module_preset="default" global_colors_info="{}"] 02 · HERO — só HTML ═══════════════════════════════════════════════════════════════ -->
Plano personalizado para operações que exigem mais escala, integração e flexibilidade. Utilize todos os canais da AR Online, incluindo AR-Voz e AR-Cartas, com integração via API ou SFTP, homologação de domínio, múltiplos usuários e condições comerciais compatíveis com a sua operação. Pedir proposta no WhatsApp Preencher formulário comercial
[/et_pb_fullwidth_code][/et_pb_section][et_pb_section fb_built="1" fullwidth="on" admin_label="CANAIS COMPLETOS" _builder_version="4.27.4" _module_preset="default" da_disable_devices="off|off|off" global_colors_info="{}" da_is_popup="off" da_exit_intent="off" da_has_close="on" da_alt_close="off" da_dark_close="off" da_not_modal="on" da_is_singular="off" da_with_loader="off" da_has_shadow="on"][et_pb_fullwidth_code _builder_version="4.27.4" _module_preset="default" global_colors_info="{}"] 03 · CANAIS COMPLETOS (5, com 2 exclusivos) — só HTML ═══════════════════════════════════════════════════════════════ -->
Todos os canais da AR Online em um único plano. E-mail, SMS e WhatsApp você já conhece do autoatendimento. No plano personalizado entram também a voz e o papel — com a mesma trilha de provas.
AR-EmailPelo seu domínio homologado
AR-SMSQualquer celular, sem internet
AR-WhatsAppMaior taxa de leitura do Brasil
Exclusivo pós-pago AR-VozLigação gravada com registro
Exclusivo pós-pago AR-CartasPostal híbrido com rastreio digital
[/et_pb_fullwidth_code][/et_pb_section][et_pb_section fb_built="1" fullwidth="on" admin_label="ESTRUTURA CORPORATIVA" _builder_version="4.27.4" _module_preset="default" da_disable_devices="off|off|off" global_colors_info="{}" da_is_popup="off" da_exit_intent="off" da_has_close="on" da_alt_close="off" da_dark_close="off" da_not_modal="on" da_is_singular="off" da_with_loader="off" da_has_shadow="on"][et_pb_fullwidth_code _builder_version="4.27.4" _module_preset="default" global_colors_info="{}"] 04 · ESTRUTURA CORPORATIVA (8 cards) — só HTML ═══════════════════════════════════════════════════════════════ -->
Recursos disponíveis no plano personalizado.
[ integração ] API e SFTP Conecte seu sistema à AR Online ou envie arquivos em lote por pasta segura — o processamento é nosso.
[ identidade ] Domínio homologado Notificações saem em nome da sua empresa, com monitoramento de reputação de domínio e servidor.
[ equipe ] Múltiplos usuários Setores e filiais enviando com controle de acesso, visão consolidada e relatórios por área.
[ escala ] Envio em massa priorizado Bases grandes com sanitização inclusa, entrega priorizada e acompanhamento em tempo real.
[ estratégia ] Réguas de comunicação Desenho consultivo: e-mail → sem abertura em 72h → SMS → WhatsApp → voz. Cada etapa gera prova.
[ conteúdo ] HTML profissional incluso Convertemos e testamos seus modelos nas principais caixas de e-mail, sem custo extra.
[ jurídico ] Parecer técnico-jurídico Documentação completa para o seu departamento legal aprovar com segurança — e nosso jurídico à disposição.
[ comercial ] Preço pelo seu volume Pós-pago: pague pelo que usar, com condições negociadas que melhoram conforme a escala.
[/et_pb_fullwidth_code][/et_pb_section][et_pb_section fb_built="1" fullwidth="on" admin_label="FAIXA VIP" _builder_version="4.27.4" _module_preset="default" da_disable_devices="off|off|off" global_colors_info="{}" da_is_popup="off" da_exit_intent="off" da_has_close="on" da_alt_close="off" da_dark_close="off" da_not_modal="on" da_is_singular="off" da_with_loader="off" da_has_shadow="on"][et_pb_fullwidth_code _builder_version="4.27.4" _module_preset="default" global_colors_info="{}"] 05 · FAIXA VIP (azul navy, 4 itens) — só HTML ═══════════════════════════════════════════════════════════════ -->
Atendimento dedicado durante a implantação e a operação. Do onboarding à operação diária, você fala com gente — nosso time técnico, comercial e jurídico no mesmo grupo que o seu.
Implantação acompanhada Grupo dedicado criado no primeiro dia, com os envolvidos dos dois lados. Homologação de domínio, primeiros envios e réguas — tudo assistido.
Resposta de especialista Dúvida de comprovação, modelo ou integração respondida por quem opera os piores casos de uso do Brasil — não por um chatbot de fila.
Acompanhamento de resultados Relatórios de entrega, abertura e efetividade por canal, com recomendações práticas para melhorar a régua a cada ciclo.
Jurídico com jurídico Seu departamento legal pode falar diretamente com o nosso, com parecer técnico e histórico de aceitação em juízo à mão.
[/et_pb_fullwidth_code][/et_pb_section][et_pb_section fb_built="1" fullwidth="on" admin_label="COMO CONTRATAR" _builder_version="4.27.4" _module_preset="default" da_disable_devices="off|off|off" global_colors_info="{}" da_is_popup="off" da_exit_intent="off" da_has_close="on" da_alt_close="off" da_dark_close="off" da_not_modal="on" da_is_singular="off" da_with_loader="off" da_has_shadow="on"][et_pb_fullwidth_code _builder_version="4.27.4" _module_preset="default" global_colors_info="{}"] 06 · COMO CONTRATAR (3 passos) — só HTML ═══════════════════════════════════════════════════════════════ -->
Como funciona a contratação.
PASSO 01 — CONVERSA Conte seu caso de uso WhatsApp ou formulário: um especialista entende seu volume, canais e exigências regulatórias (ANS, cessão de crédito, mora...).
PASSO 02 — PROPOSTA Receba o pacote completo Proposta comercial pelo seu volume + parecer técnico-jurídico + modelo de notificação do seu segmento. Tudo para aprovar internamente sem atrito.
PASSO 03 — IMPLANTAÇÃO Grupo VIP e primeiros envios Homologação do domínio, integração (se houver) e acompanhamento dos primeiros disparos no grupo dedicado. Operação rodando em dias, não meses.
[/et_pb_fullwidth_code][/et_pb_section][et_pb_section fb_built="1" fullwidth="on" admin_label="FAQ" _builder_version="4.27.4" _module_preset="default" da_disable_devices="off|off|off" global_colors_info="{}" da_is_popup="off" da_exit_intent="off" da_has_close="on" da_alt_close="off" da_dark_close="off" da_not_modal="on" da_is_singular="off" da_with_loader="off" da_has_shadow="on"][et_pb_fullwidth_code _builder_version="4.27.4" _module_preset="default" global_colors_info="{}"] 07 · PERGUNTAS RÁPIDAS (FAQ) — só HTML ═══════════════════════════════════════════════════════════════ -->
Perguntas frequentes.
A partir de que volume o pós-pago compensa? Em geral, operações acima de 500 envios mensais ou de qualquer volume que precise de AR-Voz, AR-Cartas, API/SFTP ou múltiplos usuários. Abaixo disso, o plano assinatura ou os créditos avulsos costumam resolver. Quanto custa? Depende do volume, dos canais e da régua. Compramos Carimbos do Tempo ICP-Brasil em grande escala e repassamos a economia — em relação ao AR físico, a redução é de 70% ou mais. A proposta é montada para o seu caso, sem tabela engessada. Minha operação é regulada (ANS, setor elétrico...). Vocês atendem? Sim — é a nossa especialidade. Operadoras de saúde (RN 593), utilities, cobrança e cessão de crédito (Art. 290 do CC) e conselhos de classe operam conosco com modelos e réguas já validados nesses contextos. Quanto tempo leva a implantação? Envio pelo Portal: imediato. Homologação de domínio e réguas: poucos dias. Integração via API/SFTP: conforme a sua equipe — a nossa acompanha tudo pelo grupo dedicado.
[/et_pb_fullwidth_code][/et_pb_section][et_pb_section fb_built="1" fullwidth="on" admin_label="FORMULARIO" _builder_version="4.27.4" _module_preset="default" da_disable_devices="off|off|off" global_colors_info="{}" da_is_popup="off" da_exit_intent="off" da_has_close="on" da_alt_close="off" da_dark_close="off" da_not_modal="on" da_is_singular="off" da_with_loader="off" da_has_shadow="on"][et_pb_fullwidth_code _builder_version="4.27.4" _module_preset="default" global_colors_info="{}"] 08 · FORMULÁRIO COMERCIAL (em 3 etapas) — só HTML Depende do JS global (arquivo 11) — navegação entre etapas, validação por etapa, máscara de telefone e envio ao webhook (n8n). Ajuste 30/08: o formulário era uma coluna única e longa; virou um fluxo de 3 etapas (dados → operação → desafio). O visitante vê poucos campos por vez, o que reduz o abandono, e cada etapa só avança depois de válida — o lead nunca chega pela metade no CRM. ═══════════════════════════════════════════════════════════════ -->
Vamos entender sua operação e montar sua proposta. Responda algumas perguntas rápidas — nosso time comercial retorna ainda hoje, em horário útil, com uma condição sob medida para o seu volume.
Leva menos de 1 minuto para preencher.
1Seus dados 2Sua operação 3Seu desafio
Etapa 1 de 3
Seus dados
Nome
Sobrenome
Telefone (com DDD)
Empresa
Sobre o processo de notificação
Quais canais vocês usam hoje para notificar? E-mail Carta WhatsApp SMS Voz Outros
Selecione ao menos um canal.
Em média, quantas notificações vocês enviam por mês? 50 a 100 101 a 200 201 a 500 Acima de 500
Esse envio é manual ou automatizado? Manual Automatizado Os dois
Seu desafio hoje
Qual é hoje o maior desafio de vocês em relação às notificações? Custo, prazo, taxa de recebimento, exigência do regulador, integração com o sistema interno...
Voltar Continuar Enviar e falar com um especialista
✓
Recebemos suas informações!
Nosso time comercial entra em contato ainda hoje, em horário útil.
[/et_pb_fullwidth_code][/et_pb_section][et_pb_section fb_built="1" fullwidth="on" admin_label="CONHEÇA TAMBÉM" _builder_version="4.27.4" _module_preset="default" da_disable_devices="off|off|off" global_colors_info="{}" da_is_popup="off" da_exit_intent="off" da_has_close="on" da_alt_close="off" da_dark_close="off" da_not_modal="on" da_is_singular="off" da_with_loader="off" da_has_shadow="on"][et_pb_fullwidth_code _builder_version="4.27.4" _module_preset="default" global_colors_info="{}"] 09 · CONHEÇA TAMBÉM (cross-sell) — só HTML ═══════════════════════════════════════════════════════════════ -->
Volume menor? Comece pelo autoatendimento.
Uso pontual Créditos pré-pagos Compre créditos avulsos sem mensalidade e use quando precisar com validade de 12 meses. Contratar créditos pré-pagos Uso recorrente Assinatura mensal Créditos mensais que acumulam e renovação automática no cartão de crédito. Contratar plano assinatura
[/et_pb_fullwidth_code][/et_pb_section][et_pb_section fb_built="1" fullwidth="on" admin_label="JS GLOBAL" _builder_version="4.27.4" _module_preset="default" da_disable_devices="off|off|off" global_colors_info="{}" da_is_popup="off" da_exit_intent="off" da_has_close="on" da_alt_close="off" da_dark_close="off" da_not_modal="on" da_is_singular="off" da_with_loader="off" da_has_shadow="on"][et_pb_fullwidth_code _builder_version="4.27.4" _module_preset="default" global_colors_info="{}"] 11 · JAVASCRIPT GLOBAL — PÁGINA PÓS-PAGO Colar no ÚLTIMO módulo Código da página. Faz funcionar: · tracking de cliques (GTM/GA4) · menu hambúrguer mobile · formulário comercial (#formulario) em 3 etapas: navegação, validação por etapa, máscara de telefone e envio ao webhook n8n · CTAs .js-open-wa abrindo o popup do WhatsApp Esta página não tem calculadora — é institucional. ═══════════════════════════════════════════════════════════════ --><!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] --> "use strict";<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ═══ repasse de UTMs ═══════════════════════════════════════════<!-- [et_pb_line_break_holder] --> Mantém a campanha de origem viva ao navegar entre as páginas. */<!-- [et_pb_line_break_holder] --> var UTM_KEYS = ["utm_source","utm_medium","utm_campaign","utm_id",<!-- [et_pb_line_break_holder] --> "utm_term","utm_content","gclid","fbclid"];<!-- [et_pb_line_break_holder] --> /* As UTMs vivem na URL só na primeira página da visita. A partir da<!-- [et_pb_line_break_holder] --> segunda (e no POST do formulário/carrinho) elas sumiam — por isso o<!-- [et_pb_line_break_holder] --> lead chegava no CRM sem origem. Agora a primeira ocorrência é<!-- [et_pb_line_break_holder] --> gravada em sessionStorage e reaproveitada em toda a navegação. */<!-- [et_pb_line_break_holder] --> var UTM_STORE = "arOnlineUtms";<!-- [et_pb_line_break_holder] --> var UTMS = (function(){<!-- [et_pb_line_break_holder] --> var src = new URLSearchParams(window.location.search), out = {}, has = false;<!-- [et_pb_line_break_holder] --> UTM_KEYS.forEach(function(k){<!-- [et_pb_line_break_holder] --> var v = src.get(k);<!-- [et_pb_line_break_holder] --> if(v){ out[k] = v; has = true; }<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> try{<!-- [et_pb_line_break_holder] --> if(has){<!-- [et_pb_line_break_holder] --> sessionStorage.setItem(UTM_STORE, JSON.stringify(out));<!-- [et_pb_line_break_holder] --> }else{<!-- [et_pb_line_break_holder] --> var saved = JSON.parse(sessionStorage.getItem(UTM_STORE) || "null");<!-- [et_pb_line_break_holder] --> if(saved && Object.keys(saved).length){ out = saved; has = true; }<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> }catch(e){ /* modo privado / storage bloqueado: segue só com a URL */ }<!-- [et_pb_line_break_holder] --> return has ? out : null;<!-- [et_pb_line_break_holder] --> })();<!-- [et_pb_line_break_holder] --> /* exposto para os outros módulos da página (ex.: formulário comercial) */<!-- [et_pb_line_break_holder] --> window.arOnlineUtms = UTMS || {};<!-- [et_pb_line_break_holder] --> function withUtms(raw){<!-- [et_pb_line_break_holder] --> try{<!-- [et_pb_line_break_holder] --> var u = new URL(raw, window.location.origin);<!-- [et_pb_line_break_holder] --> if(u.origin !== window.location.origin) return raw;<!-- [et_pb_line_break_holder] --> Object.keys(UTMS).forEach(function(k){<!-- [et_pb_line_break_holder] --> if(!u.searchParams.has(k)) u.searchParams.set(k, UTMS[k]);<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> return u.href;<!-- [et_pb_line_break_holder] --> }catch(e){ return raw; }<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> function forwardUtms(){<!-- [et_pb_line_break_holder] --> if(!UTMS) return;<!-- [et_pb_line_break_holder] --> document.querySelectorAll('a[href]').forEach(function(a){<!-- [et_pb_line_break_holder] --> var h = a.getAttribute("href");<!-- [et_pb_line_break_holder] --> if(!h || h.charAt(0) === "#") return;<!-- [et_pb_line_break_holder] --> a.setAttribute("href", withUtms(h));<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function init(){<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> forwardUtms();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* O forwardUtms() acima só alcança o que já existe no DOM. O Divi e<!-- [et_pb_line_break_holder] --> alguns widgets injetam links depois — este ouvinte, em captura,<!-- [et_pb_line_break_holder] --> completa o href no instante do clique, antes da navegação. */<!-- [et_pb_line_break_holder] --> document.addEventListener("click", function(e){<!-- [et_pb_line_break_holder] --> if(!UTMS || !e.target || !e.target.closest) return;<!-- [et_pb_line_break_holder] --> var a = e.target.closest("a[href]");<!-- [et_pb_line_break_holder] --> if(!a) return;<!-- [et_pb_line_break_holder] --> var h = a.getAttribute("href");<!-- [et_pb_line_break_holder] --> if(!h || h.charAt(0) === "#") return;<!-- [et_pb_line_break_holder] --> var nh = withUtms(h);<!-- [et_pb_line_break_holder] --> if(nh !== h) a.setAttribute("href", nh);<!-- [et_pb_line_break_holder] --> }, true);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ── formulário comercial (#formulario) ── */<!-- [et_pb_line_break_holder] --> var ppForm = document.getElementById('ppLeadForm');<!-- [et_pb_line_break_holder] --> if(ppForm){<!-- [et_pb_line_break_holder] --> var crmWebhookUrl = 'https://n8n-mkt-dev.ar-infra.com.br/webhook/pagina-pospago-nova';<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var ppFormCard = document.getElementById('ppFormCard');<!-- [et_pb_line_break_holder] --> var ppSuccessCard = document.getElementById('ppSuccessCard');<!-- [et_pb_line_break_holder] --> var ppSuccessTitle= document.getElementById('ppSuccessTitle');<!-- [et_pb_line_break_holder] --> var ppCanaisError = document.getElementById('ppCanaisError');<!-- [et_pb_line_break_holder] --> var ppSubmitBtn = document.getElementById('ppSubmitBtn');<!-- [et_pb_line_break_holder] --> var ppTelefone = document.getElementById('ppTelefone');<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* Antes isto lia so window.location.search - e a URL de /pos-pago/<!-- [et_pb_line_break_holder] --> quase nunca tem UTM: o visitante chega pelo anuncio na home ou na<!-- [et_pb_line_break_holder] --> pre-paga e navega ate aqui, deixando os parametros para tras. Era<!-- [et_pb_line_break_holder] --> essa a razao de o lead chegar no CRM sem origem nenhuma.<!-- [et_pb_line_break_holder] --> Agora usa o repasse persistido (window.arOnlineUtms, gravado em<!-- [et_pb_line_break_holder] --> sessionStorage na primeira pagina da visita) e so cai na URL como<!-- [et_pb_line_break_holder] --> reforco, caso a pagina tenha sido aberta direto do anuncio. */<!-- [et_pb_line_break_holder] --> function ppGetUtms(){<!-- [et_pb_line_break_holder] --> var params = new URLSearchParams(window.location.search);<!-- [et_pb_line_break_holder] --> var stored = window.arOnlineUtms || {};<!-- [et_pb_line_break_holder] --> var keys = ['utm_source','utm_medium','utm_campaign','utm_id',<!-- [et_pb_line_break_holder] --> 'utm_term','utm_content','gclid','fbclid'];<!-- [et_pb_line_break_holder] --> var out = {};<!-- [et_pb_line_break_holder] --> keys.forEach(function(k){<!-- [et_pb_line_break_holder] --> out[k] = params.get(k) || stored[k] || '';<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> return out;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> var ppHiddenFields = Object.assign(<!-- [et_pb_line_break_holder] --> {<!-- [et_pb_line_break_holder] --> pageUrl: window.location.href,<!-- [et_pb_line_break_holder] --> pageTitle: document.title,<!-- [et_pb_line_break_holder] --> referrer: document.referrer || ''<!-- [et_pb_line_break_holder] --> },<!-- [et_pb_line_break_holder] --> ppGetUtms()<!-- [et_pb_line_break_holder] --> );<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function ppApplyPhoneMask(value){<!-- [et_pb_line_break_holder] --> var digits = String(value).replace(/\D/g, "").slice(0, 11);<!-- [et_pb_line_break_holder] --> /* Sem digito nenhum o campo fica vazio. Antes devolvia "(", entao<!-- [et_pb_line_break_holder] --> apagar tudo (ou digitar uma letra) deixava um parentese solto no<!-- [et_pb_line_break_holder] --> campo - e, se outro script tambem formatasse o mesmo input, os<!-- [et_pb_line_break_holder] --> dois iam empilhando pontuacao sem nenhum numero. */<!-- [et_pb_line_break_holder] --> if(!digits) return "";<!-- [et_pb_line_break_holder] --> if(digits.length <= 2) return "(" + digits;<!-- [et_pb_line_break_holder] --> if(digits.length <= 6) return "(" + digits.slice(0,2) + ") " + digits.slice(2);<!-- [et_pb_line_break_holder] --> if(digits.length <= 10) return "(" + digits.slice(0,2) + ") " + digits.slice(2,6) + "-" + digits.slice(6);<!-- [et_pb_line_break_holder] --> return "(" + digits.slice(0,2) + ") " + digits.slice(2,7) + "-" + digits.slice(7);<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> if(ppTelefone){<!-- [et_pb_line_break_holder] --> ppTelefone.addEventListener("input", function(){<!-- [et_pb_line_break_holder] --> var antes = ppTelefone.value;<!-- [et_pb_line_break_holder] --> var depois = ppApplyPhoneMask(antes);<!-- [et_pb_line_break_holder] --> /* Nada mudou: nao reescreve o campo. Alem de evitar trabalho a<!-- [et_pb_line_break_holder] --> toa, isso corta qualquer ping-pong com outro script que esteja<!-- [et_pb_line_break_holder] --> formatando o mesmo input. */<!-- [et_pb_line_break_holder] --> if(depois === antes) return;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* Onde o cursor estava, contado em digitos (a pontuacao muda de<!-- [et_pb_line_break_holder] --> lugar a cada tecla). Sem isto o cursor pula para o fim a cada<!-- [et_pb_line_break_holder] --> caractere, e corrigir um numero no meio vira um sofrimento. */<!-- [et_pb_line_break_holder] --> var caret = ppTelefone.selectionStart;<!-- [et_pb_line_break_holder] --> var digitosAteOCaret = antes.slice(0, caret).replace(/\D/g, "").length;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> ppTelefone.value = depois;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var pos = 0, contados = 0;<!-- [et_pb_line_break_holder] --> while(pos < depois.length && contados < digitosAteOCaret){<!-- [et_pb_line_break_holder] --> if(/\d/.test(depois.charAt(pos))) contados++;<!-- [et_pb_line_break_holder] --> pos++;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> try{ ppTelefone.setSelectionRange(pos, pos); }catch(err){ /* campo nao focado */ }<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function ppSendToCrm(data){<!-- [et_pb_line_break_holder] --> window.dataLayer = window.dataLayer || [];<!-- [et_pb_line_break_holder] --> window.dataLayer.push({event: "pospago_formulario_enviado", faixa_volume: data.volume});<!-- [et_pb_line_break_holder] --> fetch(crmWebhookUrl, {<!-- [et_pb_line_break_holder] --> method: "POST",<!-- [et_pb_line_break_holder] --> headers: {"Content-Type": "application/json"},<!-- [et_pb_line_break_holder] --> body: JSON.stringify(data)<!-- [et_pb_line_break_holder] --> }).catch(function(){});<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* -- navegacao entre etapas -----------------------------------<!-- [et_pb_line_break_holder] --> Validar o formulario inteiro de uma vez nao funciona aqui: um<!-- [et_pb_line_break_holder] --> campo obrigatorio dentro de uma etapa oculta nao e focavel, e o<!-- [et_pb_line_break_holder] --> reportValidity() do navegador falha em silencio. Por isso cada<!-- [et_pb_line_break_holder] --> etapa e validada isoladamente, e o envio final so acontece com<!-- [et_pb_line_break_holder] --> todas elas aprovadas. */<!-- [et_pb_line_break_holder] --> var ppSteps = Array.prototype.slice.call(ppForm.querySelectorAll(".form-step"));<!-- [et_pb_line_break_holder] --> var ppPrevBtn = document.getElementById("ppPrevBtn");<!-- [et_pb_line_break_holder] --> var ppNextBtn = document.getElementById("ppNextBtn");<!-- [et_pb_line_break_holder] --> var ppStepsFill = document.getElementById("ppStepsFill");<!-- [et_pb_line_break_holder] --> var ppStepNow = document.getElementById("ppStepNow");<!-- [et_pb_line_break_holder] --> var ppDots = Array.prototype.slice.call(document.querySelectorAll("#ppStepsTrack .step-dot"));<!-- [et_pb_line_break_holder] --> var ppCurrent = 0;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function ppShowStep(i, scroll){<!-- [et_pb_line_break_holder] --> ppCurrent = Math.max(0, Math.min(ppSteps.length - 1, i));<!-- [et_pb_line_break_holder] --> ppSteps.forEach(function(el, idx){<!-- [et_pb_line_break_holder] --> el.classList.toggle("is-active", idx === ppCurrent);<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> ppDots.forEach(function(d, idx){<!-- [et_pb_line_break_holder] --> d.classList.toggle("is-current", idx === ppCurrent);<!-- [et_pb_line_break_holder] --> d.classList.toggle("is-done", idx < ppCurrent);<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> var last = ppCurrent === ppSteps.length - 1;<!-- [et_pb_line_break_holder] --> if(ppPrevBtn) ppPrevBtn.hidden = ppCurrent === 0;<!-- [et_pb_line_break_holder] --> if(ppNextBtn) ppNextBtn.hidden = last;<!-- [et_pb_line_break_holder] --> if(ppSubmitBtn) ppSubmitBtn.hidden = !last;<!-- [et_pb_line_break_holder] --> if(ppStepsFill) ppStepsFill.style.width = ((ppCurrent + 1) / ppSteps.length * 100) + "%";<!-- [et_pb_line_break_holder] --> if(ppStepNow) ppStepNow.textContent = ppCurrent + 1;<!-- [et_pb_line_break_holder] --> /* scrollIntoView() escorregava para longe do card ao trocar de<!-- [et_pb_line_break_holder] --> etapa (a altura do formulario muda no mesmo quadro). Calculamos<!-- [et_pb_line_break_holder] --> a posicao a mao, descontando a altura do cabecalho fixo. */<!-- [et_pb_line_break_holder] --> if(scroll && ppFormCard){<!-- [et_pb_line_break_holder] --> var head = document.querySelector(".topbar");<!-- [et_pb_line_break_holder] --> var off = (head ? head.offsetHeight : 0) + 16;<!-- [et_pb_line_break_holder] --> var alvo = ppFormCard.getBoundingClientRect().top + window.pageYOffset - off;<!-- [et_pb_line_break_holder] --> window.scrollTo({top: Math.max(0, alvo), behavior: "smooth"});<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> var first = ppSteps[ppCurrent].querySelector("input, textarea, select");<!-- [et_pb_line_break_holder] --> if(scroll && first && first.type !== "checkbox" && first.type !== "radio"){<!-- [et_pb_line_break_holder] --> try{ first.focus({preventScroll: true}); }catch(err){ /* Safari antigo */ }<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function ppValidateStep(stepEl){<!-- [et_pb_line_break_holder] --> /* grupo de checkbox nao tem "required" nativo - validado a mao */<!-- [et_pb_line_break_holder] --> var grupo = stepEl.querySelector("#ppCanaisGroup");<!-- [et_pb_line_break_holder] --> if(grupo){<!-- [et_pb_line_break_holder] --> var marcados = grupo.querySelectorAll('input[name="canais"]:checked').length;<!-- [et_pb_line_break_holder] --> if(ppCanaisError) ppCanaisError.classList.toggle("show", marcados === 0);<!-- [et_pb_line_break_holder] --> if(marcados === 0){<!-- [et_pb_line_break_holder] --> grupo.scrollIntoView({behavior: "smooth", block: "center"});<!-- [et_pb_line_break_holder] --> return false;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> var ctrls = stepEl.querySelectorAll("input, textarea, select");<!-- [et_pb_line_break_holder] --> for(var i = 0; i < ctrls.length; i++){<!-- [et_pb_line_break_holder] --> if(ctrls[i].name === "canais") continue;<!-- [et_pb_line_break_holder] --> if(!ctrls[i].checkValidity()){<!-- [et_pb_line_break_holder] --> ctrls[i].reportValidity();<!-- [et_pb_line_break_holder] --> return false;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> return true;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> if(ppNextBtn){<!-- [et_pb_line_break_holder] --> ppNextBtn.addEventListener("click", function(){<!-- [et_pb_line_break_holder] --> if(!ppValidateStep(ppSteps[ppCurrent])) return;<!-- [et_pb_line_break_holder] --> window.dataLayer = window.dataLayer || [];<!-- [et_pb_line_break_holder] --> window.dataLayer.push({event: "pospago_formulario_etapa", etapa: ppCurrent + 1});<!-- [et_pb_line_break_holder] --> ppShowStep(ppCurrent + 1, true);<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> if(ppPrevBtn){<!-- [et_pb_line_break_holder] --> ppPrevBtn.addEventListener("click", function(){ ppShowStep(ppCurrent - 1, true); });<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> /* Enter num campo de texto avanca a etapa em vez de submeter cedo */<!-- [et_pb_line_break_holder] --> ppForm.addEventListener("keydown", function(e){<!-- [et_pb_line_break_holder] --> if(e.key !== "Enter") return;<!-- [et_pb_line_break_holder] --> var tag = (e.target.tagName || "").toLowerCase();<!-- [et_pb_line_break_holder] --> if(tag === "textarea") return;<!-- [et_pb_line_break_holder] --> if(ppCurrent < ppSteps.length - 1){<!-- [et_pb_line_break_holder] --> e.preventDefault();<!-- [et_pb_line_break_holder] --> if(ppNextBtn) ppNextBtn.click();<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> /* marcar um canal limpa o aviso de erro na hora */<!-- [et_pb_line_break_holder] --> if(ppCanaisError){<!-- [et_pb_line_break_holder] --> ppForm.addEventListener("change", function(e){<!-- [et_pb_line_break_holder] --> if(e.target && e.target.name === "canais") ppCanaisError.classList.remove("show");<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> ppShowStep(0, false);<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> ppForm.addEventListener("submit", function(e){<!-- [et_pb_line_break_holder] --> e.preventDefault();<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* revalida todas as etapas; se alguma falhar, volta ate ela */<!-- [et_pb_line_break_holder] --> for(var i = 0; i < ppSteps.length; i++){<!-- [et_pb_line_break_holder] --> if(!ppValidateStep(ppSteps[i])){<!-- [et_pb_line_break_holder] --> if(i !== ppCurrent){<!-- [et_pb_line_break_holder] --> ppShowStep(i, true);<!-- [et_pb_line_break_holder] --> ppValidateStep(ppSteps[i]);<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> return;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var canais = Array.prototype.slice<!-- [et_pb_line_break_holder] --> .call(ppForm.querySelectorAll('input[name="canais"]:checked'))<!-- [et_pb_line_break_holder] --> .map(function(el){ return el.value; });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> ppSubmitBtn.disabled = true;<!-- [et_pb_line_break_holder] --> ppSubmitBtn.textContent = "Enviando...";<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var leadData = {<!-- [et_pb_line_break_holder] --> nome: ppForm.nome.value.trim(),<!-- [et_pb_line_break_holder] --> sobrenome: ppForm.sobrenome.value.trim(),<!-- [et_pb_line_break_holder] --> email: ppForm.email.value.trim(),<!-- [et_pb_line_break_holder] --> telefone: ppForm.telefone.value.replace(/\D/g, ""),<!-- [et_pb_line_break_holder] --> empresa: ppForm.empresa.value.trim(),<!-- [et_pb_line_break_holder] --> canais: canais.join(", "),<!-- [et_pb_line_break_holder] --> volume: ppForm.volume.value,<!-- [et_pb_line_break_holder] --> tipoEnvio: ppForm.tipoEnvio.value,<!-- [et_pb_line_break_holder] --> desafio: ppForm.desafio.value.trim()<!-- [et_pb_line_break_holder] --> };<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* rele na hora do envio: se o repasse so ficou pronto depois do<!-- [et_pb_line_break_holder] --> init (storage lento, script do widget), o lead ainda sai completo */<!-- [et_pb_line_break_holder] --> ppSendToCrm(Object.assign({}, leadData, ppHiddenFields, ppGetUtms()));<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> ppSuccessTitle.textContent = "Perfeito, " + leadData.nome + "! Recebemos suas informações com sucesso.";<!-- [et_pb_line_break_holder] --> ppFormCard.style.display = "none";<!-- [et_pb_line_break_holder] --> ppSuccessCard.style.display = "block";<!-- [et_pb_line_break_holder] --> ppSuccessCard.scrollIntoView({behavior: "smooth", block: "start"});<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ── CTAs que abrem o popup de WhatsApp (.js-open-wa) ──────────────<!-- [et_pb_line_break_holder] --> O widget flutuante é injetado pelo WordPress, fora do Divi. Testamos<!-- [et_pb_line_break_holder] --> em ordem os seletores conhecidos do botão principal; se nenhum<!-- [et_pb_line_break_holder] --> existir (widget desativado, bloqueado por adblock, script ainda não<!-- [et_pb_line_break_holder] --> carregado), o próprio href do link — um wa.me completo — segue como<!-- [et_pb_line_break_holder] --> fallback e o clique não se perde. */<!-- [et_pb_line_break_holder] --> var WA_SELECTORS = [<!-- [et_pb_line_break_holder] --> "#wppMainBtn",<!-- [et_pb_line_break_holder] --> ".wpp-main-btn", ".wpp-btn-main", "#wpp-main-btn",<!-- [et_pb_line_break_holder] --> ".joinchat__button", ".joinchat .joinchat__button",<!-- [et_pb_line_break_holder] --> ".chaty-main-btn", "#chaty-widget-0 .chaty-btn-wrap",<!-- [et_pb_line_break_holder] --> ".ht-ctc-chat", ".wa__button", ".wa-chat-box-toggle"<!-- [et_pb_line_break_holder] --> ];<!-- [et_pb_line_break_holder] --> function findWaWidget(){<!-- [et_pb_line_break_holder] --> for(var i = 0; i < WA_SELECTORS.length; i++){<!-- [et_pb_line_break_holder] --> var el = document.querySelector(WA_SELECTORS[i]);<!-- [et_pb_line_break_holder] --> /* offsetParent é null em elementos position:fixed — usamos<!-- [et_pb_line_break_holder] --> getClientRects() para saber se o botão está de fato na tela */<!-- [et_pb_line_break_holder] --> if(el && el.getClientRects().length) return el;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> return null;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> document.querySelectorAll(".js-open-wa").forEach(function(a){<!-- [et_pb_line_break_holder] --> a.addEventListener("click", function(e){<!-- [et_pb_line_break_holder] --> window.dataLayer = window.dataLayer || [];<!-- [et_pb_line_break_holder] --> window.dataLayer.push({<!-- [et_pb_line_break_holder] --> event: "abrir_whatsapp",<!-- [et_pb_line_break_holder] --> origem: a.getAttribute("data-qual") || "",<!-- [et_pb_line_break_holder] --> rotulo: (a.textContent || "").trim().slice(0, 60)<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> var w = findWaWidget();<!-- [et_pb_line_break_holder] --> if(!w) return; /* sem widget: usa o href wa.me */<!-- [et_pb_line_break_holder] --> e.preventDefault();<!-- [et_pb_line_break_holder] --> /* stopPropagation e obrigatorio: o widget fecha o popup quando um<!-- [et_pb_line_break_holder] --> clique chega ao document vindo de fora dele. Sem esta linha, o<!-- [et_pb_line_break_holder] --> proprio clique que abre o popup continua subindo, o widget<!-- [et_pb_line_break_holder] --> entende como "clicou fora" e fecha na mesma hora - parecia que<!-- [et_pb_line_break_holder] --> o botao nao fazia nada. */<!-- [et_pb_line_break_holder] --> e.stopPropagation();<!-- [et_pb_line_break_holder] --> var target = w.matches("a,button") ? w : (w.querySelector("a,button") || w);<!-- [et_pb_line_break_holder] --> target.click();<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ── tracking GTM/GA4 ── */<!-- [et_pb_line_break_holder] --> window.dataLayer = window.dataLayer || [];<!-- [et_pb_line_break_holder] --> document.querySelectorAll("a[href]").forEach(function(a){<!-- [et_pb_line_break_holder] --> a.addEventListener("click", function(){<!-- [et_pb_line_break_holder] --> window.dataLayer.push({event:"pospago_click", destino:a.href, rotulo:(a.textContent||"").trim().slice(0,60)});<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ── menu mobile (hambúrguer) ── */<!-- [et_pb_line_break_holder] --> var t = document.getElementById('navToggle'), n = document.getElementById('navLinks');<!-- [et_pb_line_break_holder] --> if(t && n){<!-- [et_pb_line_break_holder] --> function closeNav(){<!-- [et_pb_line_break_holder] --> n.classList.remove('open');<!-- [et_pb_line_break_holder] --> t.setAttribute('aria-expanded','false');<!-- [et_pb_line_break_holder] --> t.setAttribute('aria-label','Abrir menu');<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> t.addEventListener('click', function(){<!-- [et_pb_line_break_holder] --> var open = n.classList.toggle('open');<!-- [et_pb_line_break_holder] --> t.setAttribute('aria-expanded', open ? 'true' : 'false');<!-- [et_pb_line_break_holder] --> t.setAttribute('aria-label', open ? 'Fechar menu' : 'Abrir menu');<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> n.addEventListener('click', function(e){ if(e.target.closest('a')) closeNav(); });<!-- [et_pb_line_break_holder] --> document.addEventListener('keydown', function(e){ if(e.key === 'Escape') closeNav(); });<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> if(document.readyState === "loading"){<!-- [et_pb_line_break_holder] --> document.addEventListener("DOMContentLoaded", init);<!-- [et_pb_line_break_holder] --> } else {<!-- [et_pb_line_break_holder] --> init();<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] -->[/et_pb_fullwidth_code][/et_pb_section]
