Conselhos V2
[et_pb_section fb_built="1" fullwidth="on" admin_label="Header" _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="{}"] 01 · CABEÇALHO + MENU — só HTML ═══════════════════════════════════════════════════════════════ -->
Início Planos Não sei qual escolherResponda 2 perguntas e descubra Créditos pré-pagosUso pontual, sem mensalidade Assinatura mensalCréditos que acumulam Plano personalizadoAlto volume, API e atendimento VIP
Case CRA-MG Benefícios Onde usar Solicitar diagnóstico Acessar Portal AR
[/et_pb_fullwidth_code][/et_pb_section][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 (copy + vídeo do case) — só HTML O vídeo é o mesmo depoimento do CRA-MG que já roda na home (seção 07), hospedado no próprio WordPress. Player nativo , sem marca e sem vídeos sugeridos no fim. preload="metadata" baixa só o cabeçalho do arquivo, não os 28 MB — o vídeo só carrega de verdade quando alguém dá play. ═══════════════════════════════════════════════════════════════ --> Mais volume de notificações, menos sobrecarga operacional. CRA-MG e AR Online: uma estrutura que reduz a sobrecarga no envio de notificações e mantém registros para comprovar cada comunicação — com uma economia de mais de R$ 500 mil em um ano.
Solicitar diagnóstico Ver o case CRA-MG
+ de 50 conselhos parceiros Carimbo do Tempo ICP-Brasil Integração via API
src="https://ar-online.com.br/wp-content/uploads/2026/08/depoimento-cra-mg-aronline.mp4" controls preload="metadata" playsinline controlsList="nodownload" title="Depoimento CRA-MG — como a tecnologia reduziu R$ 500 mil em custos"> Seu navegador não reproduz vídeo HTML5. Abrir o vídeo em outra aba. Vídeo · Case CRA-MG +R$ 500 mil economizados em um ano
[/et_pb_fullwidth_code][/et_pb_section][et_pb_section fb_built="1" fullwidth="on" admin_label="Case" _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 · O CASE CRA-MG — só HTML ⚠ IMAGEM: suba `imagens/conselhos-case-cra-mg.webp` na Biblioteca de Mídia e troque o src abaixo pela URL real. O caminho atual é um chute do padrão de uploads e provavelmente NÃO existe ainda. O PNG extraído do mockup tinha 1,87 MB e 1448px de largura, para um espaço que exibe 467px. O WebP tem 1000px (2x para telas de alta densidade) e 71 KB — 96% menor, sem perda visível no tamanho em que aparece. Prefira subir o .webp; o .png ficou na pasta só como original. ═══════════════════════════════════════════════════════════════ -->

alt="Painel de irregularidades de um conselho regional, sobre uma mesa com autos de infração e projetos técnicos" loading="lazy" decoding="async" width="1000" height="750">
Quando o volume cresce, a operação precisa crescer sem virar trabalho manual. O Conselho Regional de Administração de Minas Gerais enfrentava um desafio comum a qualquer conselho: notificar associados em volume crescente, comprovar as comunicações, dar respaldo às cobranças e evitar a perda do direito de cobrar.
12 mil → 33 mil
envios de notificações por mês, sem aumentar a equipe.
+R$ 500 mil
economizados em um ano, comparado ao custo de carta registrada.
oculto pelo CSS (.case-cta). --> Solicitar diagnóstico [/et_pb_fullwidth_code][/et_pb_section][et_pb_section fb_built="1" fullwidth="on" admin_label="Conselhos" _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" hover_enabled="0" global_colors_info="{}" sticky_enabled="0"] 04 · CONSELHOS QUE JÁ USAM — só HTML 16 logos, todas no mesmo tamanho: PNG transparente de 420x144 px, com a logo centralizada e escalada pelo peso visual. Os arquivos estão em divi-secoes-conselhos/logos/. ⚠ ANTES DE PUBLICAR: suba as 16 imagens na Biblioteca de Mídia e confira se o endereço bate com o usado abaixo (wp-content/uploads/2026/09/). Se subirem em outro mês, troque o "2026/09" em todas as linhas. A última linha fica centralizada pelo CSS (.council-grid usa flex-wrap com justify-content:center), então dá para acrescentar ou tirar logos sem mexer no alinhamento. ═══════════════════════════════════════════════════════════════ -->

Nossos clientes + 50 conselhos já confiam na AR Online.















[/et_pb_fullwidth_code][/et_pb_section][et_pb_section fb_built="1" fullwidth="on" admin_label="Beneficios" _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 · PRINCIPAIS BENEFÍCIOS (4 cards) — só HTML Usa .grid4/.feat, os mesmos componentes da página pós-paga. ═══════════════════════════════════════════════════════════════ -->
Uma estrutura para enviar, registrar e acompanhar cada comunicação.
01 Histórico de comunicação organizado Cada comunicação gera registros técnicos de envio, entrega, tentativas e, quando aplicável, abertura. Os logs ficam disponíveis para consulta e podem ser autenticados com Carimbo do Tempo ICP-Brasil.
02 Cobrança organizada do início ao fim Estruture uma régua de comunicação para anuidades e outros débitos, com diferentes canais, prazos e tentativas, mantendo o histórico organizado desde os primeiros contatos.
03 Menos trabalho manual Notificações recorrentes podem ser automatizadas e integradas aos sistemas do Conselho via API, reduzindo controles paralelos e tarefas repetitivas.
04 Custo menor por notificação Carta registrada custa entre R$ 15 e R$ 30 por envio. Com a AR Online, o custo começa em R$ 4 — e quanto maior o volume, menor o custo por notificação.
[/et_pb_fullwidth_code][/et_pb_section][et_pb_section fb_built="1" fullwidth="on" admin_label="Canais" _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 · CANAIS DE COMUNICAÇÃO (abas) — só HTML Depende do JS global (arquivo 11) para trocar de aba. ⚠ Divergência do mockup: lá a barra listava 5 abas (Email, Carta, WhatsApp, SMS, Voz), mas só havia 4 painéis — SMS e Voz dividiam o mesmo texto. Mantive 4 abas, com "AR-SMS / AR-Voz" juntos, para não inventar copy que não existe. Se quiser 5 abas separadas, me passe o texto de cada uma. Sem JS as 4 abas continuam legíveis: o JS começa escondendo os painéis 2 a 4, então uma falha no script deixa tudo visível em vez de deixar a seção vazia. ═══════════════════════════════════════════════════════════════ -->
Combine canais de acordo com a finalidade, urgência e sensibilidade.
AR-Email AR-WhatsApp AR-SMS / AR-Voz AR-Carta
AR-Email Canal-base de quase toda etapa: carrega o conteúdo completo (valor, prazo, anexo, justificativa) e fica registrado formalmente, sustentando a maioria das provas de notificação.
AR-WhatsApp Usado nas etapas que pedem engajamento e leitura rápida, como registro, anuidade e convocação — evitando-se conteúdo sigiloso em etapas mais sensíveis.
AR-SMS / AR-Voz Funcionam como lembretes de prazo em etapas com urgência de data, sem substituir o canal de conteúdo em atos de maior peso jurídico.
AR-Carta Reservada para o degrau final: entra nas etapas de maior peso jurídico ou quando os canais digitais não confirmam entrega, reforçando a comprovação física.
[/et_pb_fullwidth_code][/et_pb_section][et_pb_section fb_built="1" fullwidth="on" admin_label="Onde Usar" _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 · ONDE USAR A AR ONLINE (7 etapas + convite) — só HTML ═══════════════════════════════════════════════════════════════ -->
Da habilitação profissional à sanção, cada etapa pede uma comunicação diferente.
01 Registro e habilitação profissional Confirmação de inscrição, pendência documental e emissão de carteira. Primeiro contato formal e definição do canal de preferência do profissional. AR-EmailAR-WhatsAppAR-SMS
02 Cobrança de anuidade e emissão de carnê Lembrete de vencimento, 2ª via de boleto e notificação de lançamento, mantendo a comprovação da comunicação. AR-EmailAR-WhatsAppAR-SMSAR-Carta
03 Auto de infração e aplicação de multa Intimação para defesa administrativa e notificação da decisão de multa, preservando o histórico da fiscalização. AR-CartaAR-EmailAR-Voz
04 Processo ético-disciplinar (PED) Citação inicial, intimações intermediárias e notificação da decisão final em uma etapa de alta sensibilidade. AR-CartaAR-EmailAR-SMS
05 Assembleias, eleições e editais Convocação de eleições, assembleias gerais e atualização cadastral em operações de alto volume e prazo curto. AR-EmailAR-WhatsAppAR-Voz
06 Da inadimplência às medidas de cobrança Notificações de inadimplência, oportunidades de regularização e preparação das etapas seguintes da cobrança. AR-CartaAR-EmailAR-SMSAR-Voz
07 Suspensão, cassação e reativação de registro Comunicação formal da sanção aplicada e do trâmite de regularização, mantendo evidências do processo. AR-CartaAR-Email
→ Quer mapear a régua do seu Conselho? Um diagnóstico ajuda a identificar volume, canais, integrações e etapas que podem ser automatizadas. Solicitar diagnóstico
[/et_pb_fullwidth_code][/et_pb_section][et_pb_section fb_built="1" fullwidth="on" admin_label="Estrutura" _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 · ESTRUTURA DE COBRANÇA (faixa escura, 4 passos) — só HTML ═══════════════════════════════════════════════════════════════ -->
Uma estrutura de cobrança que começa antes da dívida chegar ao jurídico. Organize os contatos, preserve o histórico e conecte as comunicações às próximas etapas definidas pelo Conselho.
1 Defina uma régua de comunicação Envio de boleto ou link de pagamento, lembretes, oportunidades de regularização e notificações em diferentes canais e momentos.
2 Mantenha o histórico da cobrança Eventos técnicos de envio, entrega e tentativas ficam organizados ao longo da jornada, com possibilidade de Carimbo do Tempo ICP-Brasil.
3 Conecte às próximas etapas Quando cabível, o fluxo pode contemplar proteção de crédito via SPC, protesto e outras medidas definidas pelo Conselho.
4 Automatize alto volume Réguas e integrações via API reduzem tarefas repetitivas e permitem executar grandes volumes de comunicação de forma centralizada.
[/et_pb_fullwidth_code][/et_pb_section][et_pb_section fb_built="1" fullwidth="on" admin_label="Diagnostico" _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 · DIAGNÓSTICO (formulário) — só HTML Depende do JS global (arquivo 11) — máscara de telefone, validação e envio ao webhook (n8n). Formulário curto (5 campos), então NÃO foi dividido em etapas como o da pós-paga — ali eram 9 campos e a divisão fazia sentido. ═══════════════════════════════════════════════════════════════ -->
Vamos mapear a operação de notificações do seu Conselho? Preencha os dados. Um especialista entra em contato em até 2 horas úteis.
O diagnóstico pode considerar: volume mensal, canais utilizados, régua de cobrança, integrações via API e pontos de trabalho manual.
Nome
Telefone / WhatsApp
Conselho
Quantas notificações você envia por mês? Selecione uma faixa Até 1.000 1.001 a 5.000 5.001 a 20.000 Mais de 20.000
Solicitar diagnóstico
Ao enviar, você concorda em ser contatado pela equipe comercial da AR Online.
✓
Recebemos seus dados!
Um especialista entra em contato em até 2 horas úteis.
[/et_pb_fullwidth_code][/et_pb_section][et_pb_section fb_built="1" fullwidth="on" admin_label="Rodape" _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="{}"] 10 · RODAPÉ — só HTML Se o rodapé do tema Divi já estiver ativo, desative-o nesta página (Configurações de Página > modelo "Em branco"). ═══════════════════════════════════════════════════════════════ -->
AR ONLINE TECNOLOGIA LTDA · CNPJ 37.459.079/0001-23 · Rua Inácio Higino, 673, Sala 816 — Praia da Costa, Vila Velha/ES +55 (11) 4200-7766 · Contato
[/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 CONSELHOS (/conselhos) Colar no ÚLTIMO módulo Código da página. Faz funcionar: · repasse de UTMs (persistido em sessionStorage) nos links · abas dos canais (seção 06) · formulário do diagnóstico (seção 09): máscara de telefone, validação e envio ao webhook n8n · CTAs .js-open-wa abrindo o popup do WhatsApp · tracking de cliques (GTM/GA4) · menu hambúrguer mobile · animações de entrada ao rolar (classes .reveal) ⚠ CONFIRME O WEBHOOK antes de publicar — veja cnWebhookUrl logo abaixo. O endereço atual segue o padrão da pós-paga, mas com um caminho novo que talvez ainda não exista no n8n. ═══════════════════════════════════════════════════════════════ --><!-- [et_pb_line_break_holder] -->/* ═══ animações de entrada ═══════════════════════════════════════<!-- [et_pb_line_break_holder] --> Roda ANTES do resto, ainda durante a análise da página: como este<!-- [et_pb_line_break_holder] --> módulo é o último, todas as seções já existem no DOM aqui.<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> As classes são atribuídas por JS, e não escritas no HTML das seções,<!-- [et_pb_line_break_holder] --> de propósito: assim trocar ou remover as animações mexe só neste<!-- [et_pb_line_break_holder] --> arquivo, sem precisar recolar os 10 módulos de conteúdo. */<!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] --> "use strict";<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* "anim-on" liga o estado escondido no CSS. Se este script não rodar,<!-- [et_pb_line_break_holder] --> a classe não existe e nada fica invisível. */<!-- [et_pb_line_break_holder] --> document.documentElement.classList.add("anim-on");<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var ALVOS = [<!-- [et_pb_line_break_holder] --> "#case .case-media", "#case .section-head", "#case .metric", "#case .btn",<!-- [et_pb_line_break_holder] --> ".councils .cap", ".councils h3", ".council-tile",<!-- [et_pb_line_break_holder] --> "#beneficios .section-head", "#beneficios .feat", "#beneficios .steps-cta",<!-- [et_pb_line_break_holder] --> "#canais .section-head", "#canais .chan-tabs", "#canais .chan-panels",<!-- [et_pb_line_break_holder] --> "#onde-usar .section-head", "#onde-usar .use-card",<!-- [et_pb_line_break_holder] --> ".charge .section-head", ".charge .step",<!-- [et_pb_line_break_holder] --> "#diagnostico .section-head", "#diagnostico .diag-note", "#diagnostico .card"<!-- [et_pb_line_break_holder] --> ];<!-- [et_pb_line_break_holder] --> ALVOS.forEach(function(sel){<!-- [et_pb_line_break_holder] --> document.querySelectorAll(sel).forEach(function(el){ el.classList.add("reveal"); });<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function revelar(){<!-- [et_pb_line_break_holder] --> var itens = document.querySelectorAll(".reveal");<!-- [et_pb_line_break_holder] --> /* Sem IntersectionObserver (navegador antigo), mostra tudo de uma vez<!-- [et_pb_line_break_holder] --> em vez de deixar a página em branco. */<!-- [et_pb_line_break_holder] --> if(!("IntersectionObserver" in window)){<!-- [et_pb_line_break_holder] --> itens.forEach(function(el){ el.classList.add("in"); });<!-- [et_pb_line_break_holder] --> return;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> var obs = new IntersectionObserver(function(entradas){<!-- [et_pb_line_break_holder] --> entradas.forEach(function(e){<!-- [et_pb_line_break_holder] --> if(!e.isIntersecting) return;<!-- [et_pb_line_break_holder] --> e.target.classList.add("in");<!-- [et_pb_line_break_holder] --> obs.unobserve(e.target); /* anima uma vez só, não a cada rolagem */<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> }, {threshold:.12, rootMargin:"0px 0px -8% 0px"});<!-- [et_pb_line_break_holder] --> itens.forEach(function(el){ obs.observe(el); });<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* Rede de segurança: se algo impedir o observer de disparar, tudo<!-- [et_pb_line_break_holder] --> aparece em 4s. Melhor estático que invisível. */<!-- [et_pb_line_break_holder] --> setTimeout(function(){<!-- [et_pb_line_break_holder] --> document.querySelectorAll(".reveal:not(.in)").forEach(function(el){<!-- [et_pb_line_break_holder] --> if(el.getBoundingClientRect().top < window.innerHeight) el.classList.add("in");<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> }, 4000);<!-- [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", revelar);<!-- [et_pb_line_break_holder] --> } else {<!-- [et_pb_line_break_holder] --> revelar();<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] --><!-- [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] --> /* ── abas dos canais (seção 06) ── */<!-- [et_pb_line_break_holder] --> var chanTabs = Array.prototype.slice.call(document.querySelectorAll(".chan-tab"));<!-- [et_pb_line_break_holder] --> if(chanTabs.length){<!-- [et_pb_line_break_holder] --> var chanPanels = chanTabs.map(function(t){<!-- [et_pb_line_break_holder] --> return document.getElementById(t.getAttribute("aria-controls"));<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> function mostrarAba(i){<!-- [et_pb_line_break_holder] --> chanTabs.forEach(function(t, idx){<!-- [et_pb_line_break_holder] --> t.setAttribute("aria-selected", idx === i ? "true" : "false");<!-- [et_pb_line_break_holder] --> if(chanPanels[idx]) chanPanels[idx].hidden = idx !== i;<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> chanTabs.forEach(function(t, i){<!-- [et_pb_line_break_holder] --> t.addEventListener("click", function(){<!-- [et_pb_line_break_holder] --> mostrarAba(i);<!-- [et_pb_line_break_holder] --> window.dataLayer = window.dataLayer || [];<!-- [et_pb_line_break_holder] --> window.dataLayer.push({event: "conselhos_canal_aba", canal: (t.textContent || "").trim()});<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> /* setas do teclado, como manda o padrão de tablist */<!-- [et_pb_line_break_holder] --> t.addEventListener("keydown", function(e){<!-- [et_pb_line_break_holder] --> var d = e.key === "ArrowRight" ? 1 : e.key === "ArrowLeft" ? -1 : 0;<!-- [et_pb_line_break_holder] --> if(!d) return;<!-- [et_pb_line_break_holder] --> e.preventDefault();<!-- [et_pb_line_break_holder] --> var alvo = (i + d + chanTabs.length) % chanTabs.length;<!-- [et_pb_line_break_holder] --> mostrarAba(alvo);<!-- [et_pb_line_break_holder] --> chanTabs[alvo].focus();<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> /* Só agora os painéis 2+ somem. Se este script não rodar, todos<!-- [et_pb_line_break_holder] --> ficam visíveis — a seção fica longa, mas nunca vazia. */<!-- [et_pb_line_break_holder] --> mostrarAba(0);<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* ── formulário do diagnóstico (#diagnostico) ── */<!-- [et_pb_line_break_holder] --> var cnForm = document.getElementById("cnLeadForm");<!-- [et_pb_line_break_holder] --> if(cnForm){<!-- [et_pb_line_break_holder] --> /* ⚠ CONFIRME ESTE ENDEREÇO com quem cuida do n8n. Segue o padrão da<!-- [et_pb_line_break_holder] --> pós-paga (…/webhook/pagina-pospago-nova), mas com caminho novo. Se<!-- [et_pb_line_break_holder] --> o fluxo não existir, o envio falha — e, diferente da pós-paga, aqui<!-- [et_pb_line_break_holder] --> a falha APARECE para o visitante em vez de sumir no silêncio. */<!-- [et_pb_line_break_holder] --> var cnWebhookUrl = "https://n8n-mkt-dev.ar-infra.com.br/webhook/pagina-conselhos";<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var cnCard = document.getElementById("cnFormCard");<!-- [et_pb_line_break_holder] --> var cnSuccess = document.getElementById("cnSuccessCard");<!-- [et_pb_line_break_holder] --> var cnTitulo = document.getElementById("cnSuccessTitle");<!-- [et_pb_line_break_holder] --> var cnBtn = document.getElementById("cnSubmit");<!-- [et_pb_line_break_holder] --> var cnErro = document.getElementById("cnError");<!-- [et_pb_line_break_holder] --> var cnTelefone= document.getElementById("cnTelefone");<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function cnUtms(){<!-- [et_pb_line_break_holder] --> var params = new URLSearchParams(window.location.search);<!-- [et_pb_line_break_holder] --> var guardadas = window.arOnlineUtms || {};<!-- [et_pb_line_break_holder] --> var chaves = ["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] --> chaves.forEach(function(k){ out[k] = params.get(k) || guardadas[k] || ""; });<!-- [et_pb_line_break_holder] --> return out;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* máscara de telefone — mesma da pós-paga, já com as correções:<!-- [et_pb_line_break_holder] --> campo sem dígito fica vazio (nada de "(" solto), só reescreve<!-- [et_pb_line_break_holder] --> quando muda de fato, e o cursor não pula para o fim. */<!-- [et_pb_line_break_holder] --> function cnMascara(valor){<!-- [et_pb_line_break_holder] --> var d = String(valor).replace(/\D/g, "").slice(0, 11);<!-- [et_pb_line_break_holder] --> if(!d) return "";<!-- [et_pb_line_break_holder] --> if(d.length <= 2) return "(" + d;<!-- [et_pb_line_break_holder] --> if(d.length <= 6) return "(" + d.slice(0,2) + ") " + d.slice(2);<!-- [et_pb_line_break_holder] --> if(d.length <= 10) return "(" + d.slice(0,2) + ") " + d.slice(2,6) + "-" + d.slice(6);<!-- [et_pb_line_break_holder] --> return "(" + d.slice(0,2) + ") " + d.slice(2,7) + "-" + d.slice(7);<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> if(cnTelefone){<!-- [et_pb_line_break_holder] --> cnTelefone.addEventListener("input", function(){<!-- [et_pb_line_break_holder] --> var antes = cnTelefone.value;<!-- [et_pb_line_break_holder] --> var depois = cnMascara(antes);<!-- [et_pb_line_break_holder] --> if(depois === antes) return;<!-- [et_pb_line_break_holder] --> var caret = cnTelefone.selectionStart;<!-- [et_pb_line_break_holder] --> var digitosAteOCaret = antes.slice(0, caret).replace(/\D/g, "").length;<!-- [et_pb_line_break_holder] --> cnTelefone.value = depois;<!-- [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{ cnTelefone.setSelectionRange(pos, pos); }catch(err){ /* campo sem foco */ }<!-- [et_pb_line_break_holder] --> });<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> cnForm.addEventListener("submit", function(e){<!-- [et_pb_line_break_holder] --> e.preventDefault();<!-- [et_pb_line_break_holder] --> if(cnErro) cnErro.classList.remove("show");<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> if(!cnForm.checkValidity()){<!-- [et_pb_line_break_holder] --> cnForm.reportValidity();<!-- [et_pb_line_break_holder] --> return;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var dados = {<!-- [et_pb_line_break_holder] --> nome: cnForm.nome.value.trim(),<!-- [et_pb_line_break_holder] --> email: cnForm.email.value.trim(),<!-- [et_pb_line_break_holder] --> telefone: cnForm.telefone.value.replace(/\D/g, ""),<!-- [et_pb_line_break_holder] --> conselho: cnForm.conselho.value.trim(),<!-- [et_pb_line_break_holder] --> volume: cnForm.volume.value,<!-- [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] --> Object.assign(dados, cnUtms());<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> cnBtn.disabled = true;<!-- [et_pb_line_break_holder] --> var rotuloOriginal = cnBtn.textContent;<!-- [et_pb_line_break_holder] --> cnBtn.textContent = "Enviando...";<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> window.dataLayer = window.dataLayer || [];<!-- [et_pb_line_break_holder] --> window.dataLayer.push({event: "conselhos_formulario_enviado", faixa_volume: dados.volume});<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> /* Diferente da pós-paga, aqui esperamos a resposta antes de<!-- [et_pb_line_break_holder] --> comemorar. Dar "recebemos!" sem saber se o webhook aceitou é<!-- [et_pb_line_break_holder] --> perder o lead sem ninguém ficar sabendo. */<!-- [et_pb_line_break_holder] --> fetch(cnWebhookUrl, {<!-- [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(dados)<!-- [et_pb_line_break_holder] --> }).then(function(r){<!-- [et_pb_line_break_holder] --> if(!r.ok) throw new Error("HTTP " + r.status);<!-- [et_pb_line_break_holder] --> cnTitulo.textContent = "Perfeito, " + dados.nome + "! Recebemos seus dados.";<!-- [et_pb_line_break_holder] --> cnCard.style.display = "none";<!-- [et_pb_line_break_holder] --> cnSuccess.style.display = "block";<!-- [et_pb_line_break_holder] --> cnSuccess.scrollIntoView({behavior: "smooth", block: "center"});<!-- [et_pb_line_break_holder] --> }).catch(function(){<!-- [et_pb_line_break_holder] --> cnBtn.disabled = false;<!-- [et_pb_line_break_holder] --> cnBtn.textContent = rotuloOriginal;<!-- [et_pb_line_break_holder] --> if(cnErro){<!-- [et_pb_line_break_holder] --> cnErro.innerHTML = "Não conseguimos enviar agora. Tente de novo em instantes ou "<!-- [et_pb_line_break_holder] --> + '<a class="js-open-wa" href="https://wa.me/5527995753040?text=Ol%C3%A1!%20Quero%20um%20diagn%C3%B3stico%20para%20o%20meu%20Conselho." data-qual="conselhos-erro-whatsapp">fale conosco pelo WhatsApp</a>.';<!-- [et_pb_line_break_holder] --> cnErro.classList.add("show");<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> window.dataLayer.push({event: "conselhos_formulario_erro"});<!-- [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:"conselhos_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]
