{"id":179172,"date":"2024-07-15T20:09:01","date_gmt":"2024-07-15T20:09:01","guid":{"rendered":"https:\/\/br.wordpress.org\/plugins\/chat-app-brasil\/"},"modified":"2026-09-10T19:57:43","modified_gmt":"2026-09-10T19:57:43","slug":"chat-app-brasil","status":"publish","type":"plugin","link":"https:\/\/yor.wordpress.org\/plugins\/chat-app-brasil\/","author":14666018,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.5.1","stable_tag":"3.5.1","tested":"6.9.8","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Chat App Brasil","header_author":"Luiz Mariano","header_description":"Plugin adicionar bot\u00e3o do WhatsApp em diferentes p\u00e1ginas.","assets_banners_color":"8bbfbb","last_updated":"2026-09-10 19:57:43","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/chatappbrasil.com\/","header_author_uri":"https:\/\/lupee.com.br\/","rating":5,"author_block_rating":0,"active_installs":10,"downloads":2002,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["faq","changelog","description"],"tags":{"1.5.0":{"tag":"1.5.0","author":"lupee87","date":"2026-04-29 17:08:50","revision":3518676},"1.5.1":{"tag":"1.5.1","author":"lupee87","date":"2026-04-29 17:15:55","revision":3518682},"1.5.2":{"tag":"1.5.2","author":"lupee87","date":"2026-04-29 17:19:24","revision":3518686},"1.5.3":{"tag":"1.5.3","author":"lupee87","date":"2026-04-29 18:17:10","revision":3518759},"1.6":{"tag":"1.6","author":"lupee87","date":"2026-04-29 17:35:00","revision":3518701},"1.7":{"tag":"1.7","author":"lupee87","date":"2026-04-29 17:52:14","revision":3518726},"2.0.0":{"tag":"2.0.0","author":"lupee87","date":"2026-04-29 18:28:43","revision":3518765},"2.0.1":{"tag":"2.0.1","author":"lupee87","date":"2026-04-29 19:07:13","revision":3518814},"2.6":{"tag":"2.6","author":"lupee87","date":"2026-04-30 14:02:26","revision":3519605},"2.7":{"tag":"2.7","author":"lupee87","date":"2026-04-30 17:23:27","revision":3519829},"2.7.1":{"tag":"2.7.1","author":"lupee87","date":"2026-04-30 17:44:30","revision":3519850},"2.7.3":{"tag":"2.7.3","author":"lupee87","date":"2026-05-06 13:54:49","revision":3524491},"2.7.4":{"tag":"2.7.4","author":"lupee87","date":"2026-05-06 18:37:57","revision":3524718},"2.7.5":{"tag":"2.7.5","author":"lupee87","date":"2026-05-06 20:44:00","revision":3524809},"2.8.0":{"tag":"2.8.0","author":"lupee87","date":"2026-05-11 19:09:00","revision":3529122},"2.9.0":{"tag":"2.9.0","author":"lupee87","date":"2026-05-22 14:16:27","revision":3543974},"3.0.0":{"tag":"3.0.0","author":"lupee87","date":"2026-05-26 19:40:46","revision":3549688},"3.0.1":{"tag":"3.0.1","author":"lupee87","date":"2026-05-26 21:01:07","revision":3549787},"3.0.2":{"tag":"3.0.2","author":"lupee87","date":"2026-05-29 16:09:21","revision":3553819},"3.0.8":{"tag":"3.0.8","author":"lupee87","date":"2026-06-01 16:20:29","revision":3557032},"3.1.0":{"tag":"3.1.0","author":"lupee87","date":"2026-06-02 18:51:29","revision":3558452},"3.2.1":{"tag":"3.2.1","author":"lupee87","date":"2026-06-03 15:40:40","revision":3559643},"3.3.0":{"tag":"3.3.0","author":"lupee87","date":"2026-08-18 19:46:11","revision":3653475},"3.3.1":{"tag":"3.3.1","author":"lupee87","date":"2026-08-26 01:22:32","revision":3666136},"3.4.0":{"tag":"3.4.0","author":"lupee87","date":"2026-09-01 14:13:35","revision":3676280},"3.5.0":{"tag":"3.5.0","author":"lupee87","date":"2026-09-01 16:39:22","revision":3676505},"3.5.1":{"tag":"3.5.1","author":"lupee87","date":"2026-09-10 19:57:43","revision":3690434}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3653475,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3653475,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3653475,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.5.0","1.5.1","1.5.2","1.5.3","1.6","1.7","2.0.0","2.0.1","2.6","2.7","2.7.1","2.7.3","2.7.4","2.7.5","2.8.0","2.9.0","3.0.0","3.0.1","3.0.2","3.0.8","3.1.0","3.2.1","3.3.0","3.3.1","3.4.0","3.5.0","3.5.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[262246],"plugin_tags":[15962,3160,141215,201674,286],"plugin_category":[45],"plugin_contributors":[],"plugin_business_model":[],"class_list":["post-179172","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-abandoned-cart","plugin_tags-whatsapp","plugin_tags-whatsapp-button","plugin_tags-whatsapp-notifications","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_committers-lupee87"],"banners":{"banner":"https:\/\/ps.w.org\/chat-app-brasil\/assets\/banner-772x250.png?rev=3653475","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/chat-app-brasil\/assets\/icon-128x128.png?rev=3653475","icon_2x":"https:\/\/ps.w.org\/chat-app-brasil\/assets\/icon-256x256.png?rev=3653475","generated":false},"screenshots":[],"raw_content":"<!--section=faq-->\n<dl>\n<dt id=\"como%20enviar%20mensagem%20whatsapp%20autom%C3%A1tica%20no%20woocommerce%3F\"><h3>Como enviar mensagem WhatsApp autom\u00e1tica no WooCommerce?<\/h3><\/dt>\n<dd><p>Configure seu token em Chat App Brasil &gt; Configura\u00e7\u00e3o e defina as mensagens em Chat App Brasil &gt; Notifica\u00e7\u00f5es. O WhatsApp \u00e9 enviado automaticamente em cada mudan\u00e7a de status do pedido.<\/p><\/dd>\n<dt id=\"%C3%89%20poss%C3%ADvel%20enviar%20o%20qr%20code%20do%20pix%20pelo%20whatsapp%3F\"><h3>\u00c9 poss\u00edvel enviar o QR code do PIX pelo WhatsApp?<\/h3><\/dt>\n<dd><p>Sim. O plugin integra com Mercado Pago PIX e Asaas PIX. O QR code \u00e9 enviado automaticamente como imagem junto com o c\u00f3digo copia e cola quando o pedido \u00e9 criado.<\/p><\/dd>\n<dt id=\"funciona%20com%20whatsapp%20business%3F\"><h3>Funciona com WhatsApp Business?<\/h3><\/dt>\n<dd><p>Sim. A plataforma ChatAppBrasil usa a API do WhatsApp Business. Voc\u00ea precisa de uma conta ativa em chatappbrasil.com.<\/p><\/dd>\n<dt id=\"como%20recuperar%20carrinho%20abandonado%20pelo%20whatsapp%3F\"><h3>Como recuperar carrinho abandonado pelo WhatsApp?<\/h3><\/dt>\n<dd><p>Instale o CartBounty Free ou Pro, configure os follow-ups na aba Carrinho Abandonado e o plugin envia mensagens autom\u00e1ticas via WhatsApp para clientes que abandonaram o carrinho.<\/p><\/dd>\n<dt id=\"posso%20enviar%20c%C3%B3digo%20de%20rastreamento%20pelo%20whatsapp%3F\"><h3>Posso enviar c\u00f3digo de rastreamento pelo WhatsApp?<\/h3><\/dt>\n<dd><p>Sim. Instale WooCommerce Correios ou Melhor Envio. Quando o pedido for conclu\u00eddo com c\u00f3digo de rastreio, o plugin envia automaticamente na aba Rastreamento.<\/p><\/dd>\n<dt id=\"o%20bot%C3%A3o%20n%C3%A3o%20aparece\"><h3>O bot\u00e3o n\u00e3o aparece<\/h3><\/dt>\n<dd><p>Preencha o n\u00famero em Chat App Brasil &gt; Bot\u00e3o.<\/p><\/dd>\n<dt id=\"mensagens%20n%C3%A3o%20enviadas\"><h3>Mensagens n\u00e3o enviadas<\/h3><\/dt>\n<dd><p>Confirme o Access Token, verifique os Logs e certifique que a mensagem n\u00e3o est\u00e1 vazia.\nVeja se h\u00e1 alerta de \"Envios pausados\" no painel.<\/p><\/dd>\n<dt id=\"pix%20asaas%20n%C3%A3o%20envia\"><h3>PIX Asaas n\u00e3o envia<\/h3><\/dt>\n<dd><p>Verifique se o plugin WooCommerce Asaas est\u00e1 ativo e se o m\u00e9todo de pagamento\ndo pedido \u00e9 \"asaas-pix\". O meta __ASAAS_ORDER precisa estar salvo.<\/p><\/dd>\n<dt id=\"tracking%20n%C3%A3o%20envia\"><h3>Tracking n\u00e3o envia<\/h3><\/dt>\n<dd><p>O c\u00f3digo de rastreio precisa estar dispon\u00edvel no momento em que o pedido \u00e9\nmarcado como Conclu\u00eddo. Verifique se WooCommerce Correios ou Melhor Envio\nest\u00e1 ativo e com c\u00f3digo cadastrado no pedido.<\/p><\/dd>\n<dt id=\"vi%20%22envios%20pausados%22\"><h3>Vi \"Envios pausados\"<\/h3><\/dt>\n<dd><p>WhatsApp desconectado. Acesse dashboard.chatappbrasil.com, reconecte e clique\nem \"Reativar envios\" no alerta do painel.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.5.1<\/h4>\n\n<ul>\n<li>CORRE\u00c7\u00c3O: notifica\u00e7\u00e3o de rastreio que falhava no envio dava o pedido por avisado assim mesmo. O pedido era marcado como \"rastreio enviado\" sem olhar o resultado, e essa marca \u00e9 justamente o que faz a nova tentativa e o rob\u00f4 do Melhor Envio pularem o pedido \u2014 um erro da plataforma e o cliente ficava sem o c\u00f3digo para sempre. Agora s\u00f3 \u00e9 marcado o que saiu de verdade<\/li>\n<li>NOVO: rastreio que n\u00e3o saiu \u00e9 tentado de novo sozinho \u2014 5 minutos depois, 15, 1 hora e 12 horas. Esgotadas as tentativas, o plugin desiste (em vez de insistir de hora em hora por 30 dias) e escreve uma nota no pedido dizendo o \u00faltimo erro e como reenviar<\/li>\n<li>CORRE\u00c7\u00c3O: quando o envio passava pela fila anti-ban, a falha acontecia depois que o plugin j\u00e1 tinha dado o rastreio por enviado, e ningu\u00e9m mais olhava para aquele pedido. A fila agora avisa, a marca \u00e9 desfeita e o rastreio volta para a fila de tentativas<\/li>\n<li>CORRE\u00c7\u00c3O: salvar no pedido o c\u00f3digo de rastreio que j\u00e1 estava gravado n\u00e3o enviava nada e n\u00e3o dizia por qu\u00ea \u2014 quem gera a etiqueta no plugin do Melhor Envio abre o pedido com o campo j\u00e1 preenchido, clicava em salvar, lia \"C\u00f3digo salvo\" e o cliente n\u00e3o recebia nada. Agora o bot\u00e3o avisa o cliente sempre que o pedido ainda n\u00e3o foi avisado, e a tela diz o que aconteceu de verdade: enviado, na fila, j\u00e1 avisado antes, ou o erro do envio<\/li>\n<li>NOVO: voc\u00ea escolhe em quais status do pedido o rastreio \u00e9 procurado e enviado (aba Rastreamento \u2192 \"Quando procurar o rastreio\"). Antes era \"Conclu\u00eddo\" e ponto: loja que despacha em \"Processando\" ou num status pr\u00f3prio nunca via o aviso sair sozinho. Nada marcado continua valendo como Conclu\u00eddo, e o rob\u00f4 do Melhor Envio passa a varrer exatamente os mesmos status<\/li>\n<li>CORRE\u00c7\u00c3O: erro interno da plataforma de envio (ERR_INTERNAL_ERROR) em mensagem com link agora \u00e9 repetido uma vez sem a pr\u00e9via do link. A pr\u00e9via \u00e9 montada pelo servidor de envio, que precisa abrir a URL da mensagem: link que ele n\u00e3o consegue abrir derrubava a mensagem inteira. Sem a pr\u00e9via perde-se o cart\u00e3ozinho do link, n\u00e3o o aviso<\/li>\n<li>MELHORIA: ERR_INTERNAL_ERROR aparecia cru no log e na nota do pedido. Agora vira texto em portugu\u00eas, como os outros erros<\/li>\n<\/ul>\n\n<h4>3.5.0<\/h4>\n\n<ul>\n<li>CORRE\u00c7\u00c3O: mensagem recusada com \"mensagem id\u00eantica j\u00e1 enviada hoje\" sem ter sido enviada. A marca de duplicata era gravada ANTES do envio e ficava de p\u00e9 mesmo quando a API recusava \u2014 o cliente ficava sem o aviso e toda retentativa levava a mesma recusa. Agora a marca s\u00f3 vale para o que saiu de verdade: envio que falha apaga a pr\u00f3pria marca<\/li>\n<li>CORRE\u00c7\u00c3O: o bot\u00e3o Reenviar (na nota do pedido, na lista de pedidos e no log) e o Teste de envio eram barrados como duplicata. S\u00e3o a\u00e7\u00f5es intencionais \u2014 mandar de novo o mesmo texto para o mesmo n\u00famero \u00e9 exatamente o que se pediu \u2014 e agora saem sempre<\/li>\n<li>CORRE\u00c7\u00c3O: pedidos diferentes com o mesmo texto disputavam a mesma marca. A chave passou a ser do evento (pedido + n\u00famero + mensagem), ent\u00e3o dois pedidos do mesmo cliente, ou dois clientes, nunca se bloqueiam<\/li>\n<li>CORRE\u00c7\u00c3O: n\u00famero e texto eram grudados sem separador para formar a chave, e dois clientes cujo n\u00famero e mensagem se encaixavam viravam a mesma chave \u2014 o segundo nunca recebia nada<\/li>\n<li>CORRE\u00c7\u00c3O: janela de bloqueio salva em branco ou em zero valia PARA SEMPRE (o prazo 0 nunca expira). Em branco vale 24h, e o teto \u00e9 uma semana<\/li>\n<li>MELHORIA: a recusa por duplicata agora diz o que houve com a g\u00eamea \u2014 \"j\u00e1 entregue h\u00e1 X (origem: Y)\" ou \"est\u00e1 na fila, aguardando o disparo\" \u2014 em vez de anunciar um envio que talvez n\u00e3o tenha acontecido<\/li>\n<li>MELHORIA: a nota no pedido de uma duplicata deixa de dizer \"falhou \u2717\" para uma mensagem que foi entregue, e a linha do log passa a levar o pedido e a origem, para achar a g\u00eamea<\/li>\n<li>NOVO: Consulta de pedidos pela IA \u2014 a loja passa a responder \"cad\u00ea meu pedido?\" para a intelig\u00eancia artificial do WhatsApp, com status, itens, rastreio e link de pagamento. Ligue em Chat App Brasil \u2192 Configura\u00e7\u00e3o, no cart\u00e3o \"Consulta de pedidos pela IA\": um bot\u00e3o gera o token e a tela mostra o endere\u00e7o e o token prontos para copiar<\/li>\n<li>A consulta nasce DESLIGADA. Sem token gerado, o endere\u00e7o recusa qualquer pergunta \u2014 atualizar o plugin n\u00e3o abre nada sozinho<\/li>\n<li>SEGURAN\u00c7A: a IA s\u00f3 enxerga pedidos do telefone de quem est\u00e1 conversando. Quem comprou usando outro telefone consegue pelo par n\u00famero do pedido + CPF\/CNPJ, e nunca s\u00f3 pelo documento<\/li>\n<li>SEGURAN\u00c7A: \"pedido n\u00e3o existe\" e \"documento n\u00e3o confere\" respondem exatamente a mesma coisa, para ningu\u00e9m descobrir a exist\u00eancia de um pedido chutando n\u00fameros<\/li>\n<li>SEGURAN\u00c7A: a resposta nunca inclui CPF, e-mail ou endere\u00e7o. Saem s\u00f3 status, data, total, itens, rastreio e link de pagamento \u2014 e o link de pagamento apenas em pedido que ainda aguarda pagamento<\/li>\n<li>O telefone \u00e9 comparado por DDD + os 8 d\u00edgitos finais, ent\u00e3o o nono d\u00edgito e a m\u00e1scara do checkout n\u00e3o separam o cliente dos pr\u00f3prios pedidos<\/li>\n<li>O rastreio da consulta sai do mesmo resolvedor das mensagens (Correios \u2192 Melhor Envio \u2192 API do Melhor Envio), para a consulta e o WhatsApp nunca discordarem sobre o mesmo pedido<\/li>\n<li>Bot\u00f5es para gerar outro token e para desligar a consulta a qualquer momento<\/li>\n<li>MELHORIA: Um clique liga a consulta \u2014 o plugin registra esta loja no XMetric Whats sozinho, usando a chave de envio que ele j\u00e1 tem, e confirma que o gateway conseguiu consultar. Nada para copiar entre pain\u00e9is<\/li>\n<li>O cart\u00e3o \"Consulta de pedidos pela IA\" s\u00f3 aparece para quem usa o XMetric Whats como servidor de envio. Com uma exce\u00e7\u00e3o: se a consulta j\u00e1 estiver ligada, o cart\u00e3o continua vis\u00edvel mesmo com o servidor de volta no ChatApp Brasil, porque esconder uma chave ligada deixaria a loja sem como deslig\u00e1-la<\/li>\n<li>Desligar a consulta avisa o XMetric Whats, para ele parar de perguntar em vez de acumular erro numa tela que o lojista j\u00e1 desligou<\/li>\n<\/ul>\n\n<h4>3.4.0<\/h4>\n\n<ul>\n<li>NOVO: Op\u00e7\u00e3o de servidor de envio \u2014 al\u00e9m do ChatApp Brasil (padr\u00e3o), o plugin passa a poder enviar pelo XMetric Whats. A op\u00e7\u00e3o \u00e9 discreta, fica no rodap\u00e9 do cart\u00e3o de Access Token em Configura\u00e7\u00e3o, e s\u00f3 aparece como uma linha de texto at\u00e9 ser ligada<\/li>\n<li>O ChatApp Brasil continua sendo o padr\u00e3o: quem nunca abrir essa op\u00e7\u00e3o n\u00e3o tem nenhuma mudan\u00e7a de comportamento, e quem atualizar do 3.3.1 continua enviando exatamente como antes<\/li>\n<li>NOVO: Ao ligar o XMetric Whats, o cart\u00e3o troca os campos \u2014 endere\u00e7o do servidor (j\u00e1 preenchido com https:\/\/whats.xmetric.com.br) e o r\u00f3tulo do token vira \"Chave do cliente\". A op\u00e7\u00e3o \"Salvar mensagens no ticket\" some, porque n\u00e3o se aplica a esse servidor<\/li>\n<li>MELHORIA: Testar Conex\u00e3o passou a responder duas coisas no XMetric Whats \u2014 se a chave vale e se existe n\u00famero pareado. Antes, um token bom em loja sem n\u00famero conectado era anunciado como pronto para enviar<\/li>\n<li>MELHORIA: Trocar o servidor ou o endere\u00e7o invalida a valida\u00e7\u00e3o anterior do token, como j\u00e1 acontecia ao trocar o token \u2014 chave aprovada por uma plataforma n\u00e3o diz nada sobre a outra<\/li>\n<li>MELHORIA: O endere\u00e7o do XMetric aceita ser colado de qualquer jeito (sem https, com barra no fim, ou o painel inteiro copiado do navegador) e \u00e9 normalizado antes de gravar<\/li>\n<li>INTERNO: As tr\u00eas chamadas que montavam o endere\u00e7o da API por conta pr\u00f3pria (envio de texto, envio de m\u00eddia e teste de token) passaram a usar um resolvedor \u00fanico. O filtro wlp_api_url continua valendo, e vale por \u00faltimo<\/li>\n<\/ul>\n\n<h4>3.3.1<\/h4>\n\n<ul>\n<li>NOVO: Integra\u00e7\u00e3o direta com a API do Melhor Envio \u2014 configure o token de acesso na aba Rastreamento e o plugin busca o c\u00f3digo de rastreio automaticamente, sem depender do plugin ME para salvar os dados<\/li>\n<li>NOVO: Card de rastreamento no painel do pedido \u2014 adicione ou edite o c\u00f3digo de rastreio manualmente e o WhatsApp \u00e9 disparado na hora para o cliente<\/li>\n<li>NOVO: Poller autom\u00e1tico (a cada hora) que verifica novos c\u00f3digos no Melhor Envio para pedidos conclu\u00eddos ainda sem rastreio enviado<\/li>\n<li>NOVO: Retry autom\u00e1tico via Action Scheduler se o c\u00f3digo de rastreio ainda n\u00e3o estiver dispon\u00edvel quando o pedido for conclu\u00eddo<\/li>\n<li>CORRECAO: Mensagem de PIX expirado duplicada \u2014 idempot\u00eancia via meta _wlp_pix_expired_sent impede que AS e hook de cancelamento enviem duas mensagens consecutivas para o mesmo pedido (MP e Asaas)<\/li>\n<li>CORRECAO: Verifica\u00e7\u00e3o do m\u00e9todo de pagamento em wlp_mp_pix_expired corrigida para strpos, compat\u00edvel com varia\u00e7\u00f5es do gateway Mercado Pago PIX<\/li>\n<li>CORRECAO: Tag %rt_total% no carrinho abandonado agora funciona como alias de %cart_total%<\/li>\n<\/ul>\n\n<h4>3.3.0<\/h4>\n\n<ul>\n<li>CORRECAO: Compatibilidade com a nova plataforma (Whaticket) \u2014 o sucesso do envio agora \u00e9 determinado pelo c\u00f3digo HTTP da resposta, e n\u00e3o mais pelo campo \"status\" da API antiga. Mensagens entregues n\u00e3o aparecem mais como \"Desconhecido\"\/erro no log e nas notas do pedido, e o aviso falso de \"Envios pausados\" deixa de ser disparado<\/li>\n<li>CORRECAO: Endpoint de envio atualizado para o endere\u00e7o documentado da plataforma (dashboard.chatappbrasil.com\/backend\/api\/messages\/send), personaliz\u00e1vel via filtro wlp_api_url<\/li>\n<li>NOVO: Sistema anti-banimento \u2014 espa\u00e7amento m\u00ednimo configur\u00e1vel entre envios (padr\u00e3o 20s) + varia\u00e7\u00e3o aleat\u00f3ria (padr\u00e3o at\u00e9 15s). Envios em rajada entram em uma fila e saem um por vez, imitando o ritmo humano; a fila \u00e9 processada em toda requisi\u00e7\u00e3o e por cron de 1 minuto<\/li>\n<li>NOVO: Mensagens que estouram o limite por minuto agora entram na fila anti-ban em vez de serem descartadas<\/li>\n<li>NOVO: Op\u00e7\u00e3o \"Salvar mensagens no ticket do painel\" (saveOnTicket) \u2014 registra os envios da loja na conversa do contato na plataforma; linkPreview habilitado nos envios de texto<\/li>\n<li>CORRECAO: Teste de token compat\u00edvel com o formato de erro da plataforma nova (HTTP 401\/403 e c\u00f3digos ERR_*)<\/li>\n<li>CORRECAO: A frequ\u00eancia do carrinho abandonado escolhida na tela de configura\u00e7\u00e3o agora \u00e9 persistida ao salvar (antes revertia para 5 min)<\/li>\n<li>CORRECAO: Os toggles \"Bloquear mensagens id\u00eanticas\" e \"Janela de hor\u00e1rio\" agora podem ser desativados (o estado desligado n\u00e3o era salvo)<\/li>\n<li>MELHORIA: Novos c\u00f3digos de erro da plataforma traduzidos no log (ERR_SENDING_WAPP_MSG, ERR_SESSION_EXPIRED, ERR_WAPP_INVALID_CONTACT)<\/li>\n<li>SEGURAN\u00c7A: Diret\u00f3rio de logs agora usa sufixo secreto no nome (uploads\/woosend-logs-xxxx) \u2014 em servidores Nginx o .htaccess n\u00e3o \u00e9 lido e os logs (com telefones e mensagens de clientes) ficavam acess\u00edveis por URL previs\u00edvel; migra\u00e7\u00e3o do diret\u00f3rio antigo \u00e9 autom\u00e1tica<\/li>\n<li>CORRECAO: Janela de hor\u00e1rio de envio agora suporta per\u00edodo que atravessa a meia-noite (ex: 22h\u20138h) \u2014 antes essa configura\u00e7\u00e3o bloqueava todos os envios<\/li>\n<li>CORRECAO: N\u00fameros locais do DDD 55 (regi\u00e3o de Santa Maria-RS) agora recebem o DDI 55 corretamente \u2014 antes eram enviados sem DDI e n\u00e3o chegavam<\/li>\n<li>CORRECAO: Carrinho abandonado (CartBounty Pro): follow-ups 2 e 3 nunca disparavam \u2014 a janela de elegibilidade de 24h era menor que os prazos deles (48h\/72h); janela agora cobre o horizonte completo dos follow-ups<\/li>\n<li>CORRECAO: Carrinho abandonado (CartBounty Free): adicionada janela de elegibilidade \u2014 antes, ativar o plugin com carrinhos hist\u00f3ricos podia disparar mensagens para carrinhos de meses atr\u00e1s<\/li>\n<li>CORRECAO: Carrinho abandonado (Free): carrinho n\u00e3o fica mais travado permanentemente ap\u00f3s 3 tentativas bloqueadas por hor\u00e1rio\/erro tempor\u00e1rio<\/li>\n<li>CORRECAO: Boleto Asaas e mensagem de novo pedido n\u00e3o s\u00e3o mais reenviados quando o cliente recarrega a p\u00e1gina de obrigado (guard por meta no pedido)<\/li>\n<li>CORRECAO: Back In Stock: assinante notificado via hook direto agora \u00e9 marcado como processado \u2014 o cron n\u00e3o reenvia mais a mesma notifica\u00e7\u00e3o depois de 5 minutos<\/li>\n<li>CORRECAO: P\u00f3s-venda: c\u00e1lculo do tempo desde a conclus\u00e3o n\u00e3o mistura mais fusos (desvio de \u00b13h) e a janela de hor\u00e1rio de envio passou a valer para o p\u00f3s-venda<\/li>\n<li>CORRECAO: Envio de m\u00eddia n\u00e3o exige mais a extens\u00e3o cURL (usa a API HTTP do WordPress)<\/li>\n<li>MELHORIA: P\u00f3s-venda, nota do pedido e lembrete PIX agora registram nota no pedido e aparecem categorizados corretamente no log<\/li>\n<li>MELHORIA: Rastreamento de cliques do bot\u00e3o flutuante reescrito em JavaScript puro com sendBeacon \u2014 funciona em temas sem jQuery e n\u00e3o atrasa a navega\u00e7\u00e3o do visitante<\/li>\n<li>LIMPEZA: Removido o painel de a\u00e7\u00f5es de inst\u00e2ncia (status\/reconectar\/reiniciar\/resetar\/webhook\/QR) \u2014 os endpoints \/api\/instance\/* eram da plataforma antiga e n\u00e3o existem no Whaticket; a conex\u00e3o \u00e9 gerenciada no painel dashboard.chatappbrasil.com<\/li>\n<li>MELHORIA: Controle de step do carrinho abandonado (Pro) migrado do post meta para colunas pr\u00f3prias (wlp_step\/wlp_last_sent) na tabela do CartBounty, com migra\u00e7\u00e3o autom\u00e1tica dos valores antigos<\/li>\n<li>CORRECAO: Contagem de cliques do bot\u00e3o n\u00e3o depende mais de nonce \u2014 p\u00e1ginas servidas por cache (WP Rocket etc.) entregavam nonce vencido e os cliques paravam de ser contados ap\u00f3s ~12h; prote\u00e7\u00e3o mantida via checagem de origem + rate limit por IP<\/li>\n<li>CORRECAO: Reenvio pela lista de pedidos agora redireciona ap\u00f3s disparar (padr\u00e3o PRG) \u2014 recarregar a p\u00e1gina n\u00e3o reenvia mais a mensagem; adicionado aviso de confirma\u00e7\u00e3o no admin<\/li>\n<li>CORRECAO: Corrigido erro de sintaxe latente no JS do admin (handler \u00f3rf\u00e3o do antigo bloco de autoresponders)<\/li>\n<\/ul>\n\n<h4>3.2.1<\/h4>\n\n<ul>\n<li>CONFIABILIDADE: Lembretes de PIX (Mercado Pago e Asaas) migrados do WP-Cron para o Action Scheduler \u2014 funciona mesmo com DISABLE_WP_CRON=true e WP Rocket, pois o AS tem runner pr\u00f3prio ativado por requisi\u00e7\u00f5es AJAX, REST e admin<\/li>\n<li>CONFIABILIDADE: Dupla garantia para lembretes PIX \u2014 al\u00e9m do AS, uma fila em wp_options \u00e9 processada em toda requisi\u00e7\u00e3o WordPress (frontend, admin, AJAX), garantindo disparo em segundos independente de cron ou tr\u00e1fego<\/li>\n<li>CONFIABILIDADE: Trava de idempot\u00eancia (transient 2h) impede duplo envio quando Action Scheduler e fila de requests disparam o mesmo lembrete quase simultaneamente<\/li>\n<li>CONFIABILIDADE: Helpers internos wlp_schedule_single e wlp_unschedule_all com fallback autom\u00e1tico para WP-Cron quando o Action Scheduler n\u00e3o estiver dispon\u00edvel<\/li>\n<li>CORRECAO: Quando um pedido PIX \u00e9 cancelado pelo gateway (PIX expirado sem pagamento), a mensagem de \"PIX expirado\" \u00e9 enviada IMEDIATAMENTE via hook woocommerce_order_status_cancelled \u2014 antes dependia do AS executar a\u00e7\u00e3o agendada, podendo demorar minutos sem avisar o cliente<\/li>\n<li>CORRECAO: Notifica\u00e7\u00e3o de novo pedido (wlp_wa_order_receive) agora passa order_id corretamente para o log e para as notas de pedido<\/li>\n<li>LIMPEZA: Removido m\u00e9todo morto wlp_mp_pix_delayed_send que tinha hook registrado mas nunca era chamado<\/li>\n<li>MELHORIA: Toda mensagem WhatsApp relacionada a pedidos (status, PIX, lembrete, expirado, rastreamento, novo pedido) registra automaticamente nota privada no pedido WooCommerce com: fonte, telefone mascarado, status de envio, pr\u00e9via e link \u21ba Reenviar<\/li>\n<li>LOG: wlp_debug_log registra agendamento via AS ou WP-Cron (fallback), aviso se AS indispon\u00edvel, e cada disparo da fila de requests com atraso em segundos<\/li>\n<li>DIAGN\u00d3STICO: Relat\u00f3rio de debug exibe status do Action Scheduler (vers\u00e3o, disponibilidade, a\u00e7\u00f5es pendentes do plugin)<\/li>\n<\/ul>\n\n<h4>3.1.0<\/h4>\n\n<ul>\n<li>NOVO: Notifica\u00e7\u00e3o do admin e formul\u00e1rios CF7\/Caldera aceitam m\u00faltiplos n\u00fameros separados por v\u00edrgula \u2014 envia para cada destinat\u00e1rio individualmente<\/li>\n<li>SEGURAN\u00c7A: Verifica\u00e7\u00e3o do header Content-Length antes do download de imagens externas \u2014 rejeita arquivos acima de 2 MB sem desperdi\u00e7ar banda<\/li>\n<li>SEGURAN\u00c7A: Rate limiting por IP no endpoint de rastreamento de cliques do bot\u00e3o (m\u00e1x. 10 cliques\/hora por IP) para evitar flood na tabela<\/li>\n<li>SEGURAN\u00c7A: Hash de deduplica\u00e7\u00e3o migrado de MD5 para SHA-256<\/li>\n<li>SEGURAN\u00c7A: Constru\u00e7\u00e3o da URL do bot\u00e3o WhatsApp corrigida (esc_url_raw em vez de esc_attr) e n\u00famero sanitizado com regex antes de compor a URL<\/li>\n<li>CONFIABILIDADE: file_put_contents do QR PIX verifica retorno e registra erro no log de debug se a escrita falhar<\/li>\n<li>CONFIABILIDADE: Resposta HTTP 4xx\/5xx da API ChatAppBrasil agora \u00e9 tratada como erro (antes era registrada como sucesso se o JSON fosse v\u00e1lido)<\/li>\n<li>CONFIABILIDADE: Lock do cron de carrinho abandonado usa transient at\u00f4mico (al\u00e9m do UPDATE condicional) para prevenir envios duplicados em crons paralelos<\/li>\n<li>CONFIABILIDADE: normalize_phone_number valida tamanho m\u00ednimo (DDI + 7 d\u00edgitos) e m\u00e1ximo (15 d\u00edgitos E.164) \u2014 n\u00fameros inv\u00e1lidos s\u00e3o descartados antes de chegar \u00e0 API<\/li>\n<li>FLEXIBILIDADE: Timeouts da API (60s) e de download de imagens (30s) agora s\u00e3o configur\u00e1veis via filtros wlp_api_timeout e wlp_download_timeout<\/li>\n<li>LIMPEZA: Blocos de coment\u00e1rio vazios remanescentes da refatora\u00e7\u00e3o para traits removidos de wlp-main.php<\/li>\n<\/ul>\n\n<h4>3.0.7<\/h4>\n\n<ul>\n<li>CORRECAO: Adicionado o callback que faltava para o retry do Asaas PIX (wlp_asaas_pix_retry). Antes o evento era agendado quando o meta __ASAAS_ORDER ainda nao estava salvo, mas nunca era tratado, e a mensagem podia nunca ser enviada<\/li>\n<li>CORRECAO: A deduplicacao deixou de bloquear lembretes, PIX expirado e reenvios manuais (envios com parametro resend), que agora sempre passam<\/li>\n<li>MELHORIA: Unificado o log das mensagens de Back In Stock (removida a gravacao manual duplicada); agora ha um unico registro por envio, identificado como Back in Stock e com o nome do cliente<\/li>\n<li>MELHORIA: A aba Debug agora exibe um quadro fixo com as integracoes suportadas e suas versoes instaladas (Melhor Envio, Mercado Pago, Asaas, Correios, CartBounty, Back In Stock Notifier, WooCommerce, etc), indicando ativo\/nao instalado, alem da versao do plugin, do WordPress e do PHP<\/li>\n<\/ul>\n\n<h4>3.0.6<\/h4>\n\n<ul>\n<li>CORRECAO: Back In Stock voltou a disparar o WhatsApp quando o e-mail de retorno ao estoque e enviado. O handler resolvia o produto do assinante por uma chave de meta errada (cwginstock_product_id) e abortava; agora usa cwginstock_pid\/cwginstock_bypass_pid. Tambem passou a ouvir os eventos de envio automatico e manual (cwginstock_auto_email_sent e cwginstock_manual_email_sent)<\/li>\n<li>MELHORIA: Nova aba Back In Stock no log, no mesmo estilo dos Carrinhos abandonados, listando os assinantes elegiveis (com telefone) com status \"Aguardando estoque\" (ampulheta), \"E-mail enviado\" e \"WhatsApp enviado\", alem do status de estoque atual do produto<\/li>\n<\/ul>\n\n<h4>3.0.5<\/h4>\n\n<ul>\n<li>CORRECAO: PIX expirado nao era agendado quando o modo de envio estava em \"Lembrete\" (a funcao retornava antes de agendar). Agora o PIX expirado e agendado em qualquer modo, no Mercado Pago e no Asaas<\/li>\n<li>CORRECAO: A mensagem de PIX expirado nunca disparava porque exigia o pedido em pending\/on-hold, mas ao expirar o gateway ja cancela o pedido. Agora ela e enviada a menos que o cliente tenha pago (processando\/concluido\/reembolsado)<\/li>\n<li>MELHORIA: Back In Stock mais robusto na leitura do telefone do assinante (tenta multiplas chaves de meta, incluindo subscriber_phone) e o cron deixou de excluir assinantes por causa do nome da chave de telefone<\/li>\n<\/ul>\n\n<h4>3.0.4<\/h4>\n\n<ul>\n<li>MELHORIA: Log de mensagens agora tem busca por nome, telefone ou numero do pedido, e filtro por tipo de mensagem (pedido concluido, processando, falhou, aguardando, PIX gerado, envio de rastreio, carrinho abandonado, assinatura, Back in Stock, etc). A busca e o filtro respeitam a paginacao<\/li>\n<li>MELHORIA: Cada envio agora registra o nome do cliente no log e a mensagem de carrinho abandonado passou a ser identificada como tal (antes caia em \"Pedido\")<\/li>\n<\/ul>\n\n<h4>3.0.3<\/h4>\n\n<ul>\n<li>CORRE\u00c7\u00c3O: Deteccao do plugin Melhor Envio na aba Rastreamento. O plugin verificava o arquivo melhor-envio-cotacao.php (inexistente) e a classe MelhorEnvio\\MelhorEnvio (inexistente), exibindo \"nao esta instalado ou ativo\" mesmo com o Melhor Envio ativo. Agora detecta pela constante MELHORENVIO_VERSION, pela classe Melhor_Envio_Plugin e pelo arquivo correto melhor-envio-beta.php<\/li>\n<\/ul>\n\n<h4>3.0.2<\/h4>\n\n<ul>\n<li>CORRE\u00c7\u00c3O: Lembrete de carrinho abandonado n\u00e3o \u00e9 mais enviado quando o cliente j\u00e1 fez a compra. Antes de disparar, o plugin verifica via wc_get_orders (compat\u00edvel com HPOS) se j\u00e1 existe pedido pago (processando ou conclu\u00eddo) para o e-mail ou telefone do carrinho e, em caso positivo, marca o carrinho como conclu\u00eddo para n\u00e3o reenviar<\/li>\n<li>UX: Tela de Carrinhos abandonados passa a ocultar carrinhos sem n\u00famero de telefone e a exibir apenas carrinhos criados ap\u00f3s a ativa\u00e7\u00e3o do plugin (wlp_install_date). Contagem e pagina\u00e7\u00e3o ajustadas aos mesmos filtros<\/li>\n<li>UX: Carrinhos que viraram venda agora exibem o selo \"(recuperado)\" na coluna Status WA e um aviso no detalhe; o bot\u00e3o de envio manual fica oculto nesses casos<\/li>\n<li>FILTRO: Novo hook wlp_converted_order_statuses para personalizar quais status de pedido contam como \"j\u00e1 comprou\" (padr\u00e3o: processando e conclu\u00eddo)<\/li>\n<\/ul>\n\n<h4>3.0.1<\/h4>\n\n<ul>\n<li>ARQUITETURA: wlp-main.php refatorado de 3.300 para 1.942 linhas com separa\u00e7\u00e3o em 7 PHP Traits<\/li>\n<li>ARQUITETURA: Criado includes\/trait-wlp-api.php \u2014 HTTP client, send_msg, process_variables, QR image<\/li>\n<li>ARQUITETURA: Criado includes\/trait-wlp-orders.php \u2014 process_states, order_receive, resend<\/li>\n<li>ARQUITETURA: Criado includes\/trait-wlp-payments.php \u2014 MP PIX, Asaas PIX, Asaas Boleto, expirados<\/li>\n<li>ARQUITETURA: Criado includes\/trait-wlp-cart.php \u2014 CartBounty, abandoned_order, aftersales<\/li>\n<li>ARQUITETURA: Criado includes\/trait-wlp-subscriptions.php \u2014 7 eventos de assinatura WCS<\/li>\n<li>ARQUITETURA: Criado includes\/trait-wlp-tracking.php \u2014 Correios e Melhor Envio<\/li>\n<li>ARQUITETURA: Criado includes\/trait-wlp-bis.php \u2014 Back In Stock + watchers + cron<\/li>\n<li>PERFORMANCE: CSS do painel extra\u00eddo para assets\/css\/wlp-admin.css (cache do browser)<\/li>\n<li>PERFORMANCE: Endpoint p\u00fablico AJAX get_base_url removido; URL injetada via wp_localize_script<\/li>\n<li>PERFORMANCE: Limpeza de cliques (90 dias) movida do AJAX p\u00fablico para cron di\u00e1rio<\/li>\n<li>SEGURAN\u00c7A: Valida\u00e7\u00e3o de tamanho (m\u00e1x. 2 MB) e MIME (JPEG\/PNG\/WebP\/GIF) antes do envio de m\u00eddia<\/li>\n<li>CORRE\u00c7\u00c3O: Normaliza\u00e7\u00e3o de posi\u00e7\u00e3o do bot\u00e3o agora aplica corretamente o mapa de variantes legadas<\/li>\n<li>LIMPEZA: Vari\u00e1vel $curl_err morta removida<\/li>\n<li>LIMPEZA: UI de wlp_autoresponders sem backend removida do JS administrativo<\/li>\n<li>CONFIABILIDADE: Watchers BIS (save_post, meta, transition_post_status) registrados como hooks<\/li>\n<li>UX: Aba \"\ud83d\udcda Tags\" adicionada ao painel de Notifica\u00e7\u00f5es com refer\u00eancia completa de vari\u00e1veis<\/li>\n<li>UX: Frequ\u00eancia do cron de carrinho abandonado configur\u00e1vel na tela de Seguran\u00e7a (1\/2\/5\/10 min)<\/li>\n<li>DEPRECIADO: wlp_bis_legacy_hook(), remove_emoji(), wlp_wa_encoding() marcados @deprecated<\/li>\n<\/ul>\n\n<h4>2.9.8<\/h4>\n\n<ul>\n<li>PERFORMANCE: Cron do carrinho abandonado configur\u00e1vel (1, 2, 5 ou 10 min) com padr\u00e3o de 5 min<\/li>\n<li>CONFIABILIDADE: Watchers BIS registrados como hooks formais (save_post, updated_post_meta, transition_post_status)<\/li>\n<li>DEPRECIADO: wlp_bis_legacy_hook(), remove_emoji(), wlp_wa_encoding() marcados com @deprecated<\/li>\n<li>UX: Aba \"\ud83d\udcda Tags\" exposta no painel de Notifica\u00e7\u00f5es (render_help)<\/li>\n<\/ul>\n\n<h4>2.9.7<\/h4>\n\n<ul>\n<li>SEGURAN\u00c7A: Endpoint p\u00fablico AJAX get_base_url removido; URL injetada via wp_localize_script<\/li>\n<li>PERFORMANCE: DELETE de reten\u00e7\u00e3o de cliques movido do AJAX para cron di\u00e1rio wlp_button_cleanup_clicks<\/li>\n<li>SEGURAN\u00c7A: Valida\u00e7\u00e3o de tamanho (m\u00e1x. 2 MB) e MIME antes do envio de m\u00eddia<\/li>\n<li>LIMPEZA: Vari\u00e1vel $curl_err morta removida<\/li>\n<li>CORRE\u00c7\u00c3O: Normaliza\u00e7\u00e3o de posi\u00e7\u00e3o do bot\u00e3o aplica corretamente $pos_map[$val]<\/li>\n<li>LIMPEZA: UI wlp_autoresponders removida do JS (backend nunca implementado)<\/li>\n<\/ul>\n\n<h4>2.9.6<\/h4>\n\n<ul>\n<li>SEGURAN\u00c7A: MD5 substitu\u00eddo por wp_hash() na valida\u00e7\u00e3o do Access Token<\/li>\n<li>SEGURAN\u00c7A: @unserialize substitu\u00eddo por is_serialized() + allowed_classes false<\/li>\n<li>SEGURAN\u00c7A: cURL manual substitu\u00eddo por WP_Http no envio de imagens<\/li>\n<li>PERFORMANCE: Hook admin_init de migra\u00e7\u00e3o com guard (s\u00f3 registra se necess\u00e1rio)<\/li>\n<li>LIMPEZA: Lottie Player removido (hook + m\u00e9todo enqueue_lottie)<\/li>\n<li>CORRE\u00c7\u00c3O: Posi\u00e7\u00f5es do bot\u00e3o normalizadas (left-bottom \u2192 bottom-left)<\/li>\n<li>LIMPEZA: uninstall.php remove logs JSONL, flags de migra\u00e7\u00e3o e transients<\/li>\n<\/ul>\n\n<h4>2.9.6<\/h4>\n\n<ul>\n<li>SEGURAN\u00c7A: MD5 substitu\u00eddo por wp_hash() (HMAC-SHA256) na valida\u00e7\u00e3o do Access Token<\/li>\n<li>SEGURAN\u00c7A: @unserialize substitu\u00eddo por verifica\u00e7\u00e3o com is_serialized() + allowed_classes false<\/li>\n<li>SEGURAN\u00c7A: cURL manual substitu\u00eddo por WP_Http (wp_remote_post) no envio de imagens<\/li>\n<li>SEGURAN\u00c7A: Todos os dados de log j\u00e1 usam esc_html() na renderiza\u00e7\u00e3o (prote\u00e7\u00e3o XSS)<\/li>\n<li>PERFORMANCE: Hook admin_init de migra\u00e7\u00e3o agora s\u00f3 registra se a migra\u00e7\u00e3o ainda n\u00e3o ocorreu<\/li>\n<li>PERFORMANCE: C\u00f3digo morto do Lottie Player removido (hook + m\u00e9todo enqueue_lottie)<\/li>\n<li>CORRE\u00c7\u00c3O: Posi\u00e7\u00f5es do bot\u00e3o flutuante normalizadas (left-bottom \u2192 bottom-left)<\/li>\n<li>LIMPEZA: uninstall.php agora remove logs JSONL, flags de migra\u00e7\u00e3o e transients<\/li>\n<\/ul>\n\n<h4>2.9.0<\/h4>\n\n<ul>\n<li>NOVO: Integra\u00e7\u00e3o Asaas PIX \u2014 QR code + c\u00f3digo copia e cola, modos imediato\/lembrete<\/li>\n<li>NOVO: Integra\u00e7\u00e3o Asaas Boleto \u2014 link do boleto via %boleto_url%<\/li>\n<li>NOVO: Notifica\u00e7\u00e3o de PIX expirado \u2014 compartilhada entre Mercado Pago e Asaas<\/li>\n<li>NOVO: Aba Pagamentos \u2014 centraliza Mercado Pago PIX, Asaas PIX, Asaas Boleto e PIX Expirado<\/li>\n<li>NOVO: Aba Rastreamento \u2014 Correios e Melhor Envio com detec\u00e7\u00e3o autom\u00e1tica<\/li>\n<li>NOVO: Tags %tracking_code%, %tracking_url% \u2014 c\u00f3digo e link de rastreio<\/li>\n<li>NOVO: Tags %order_status%, %order_time%, %payment_url% \u2014 novas tags para mensagens<\/li>\n<li>CORRIGIDO: Notifica\u00e7\u00e3o de \"envios pausados\" aparecia duplicada no painel admin<\/li>\n<li>ATUALIZADO: readme.txt e readme-en_US.txt completos para v2.9.0<\/li>\n<\/ul>\n\n<h4>2.8.0<\/h4>\n\n<ul>\n<li>NOVO: Lembrete PIX, notas privadas nos pedidos, toggle por notifica\u00e7\u00e3o<\/li>\n<li>NOVO: Linhas expans\u00edveis nos logs, monitoramento de erros, friendly errors<\/li>\n<li>CORRIGIDO: Estat\u00edsticas de logs, quebra de linha CF7, bot\u00e3o Limpar Logs<\/li>\n<\/ul>\n\n<h4>2.7.5<\/h4>\n\n<ul>\n<li>Rate limiting, filtro de hor\u00e1rio, dedup configur\u00e1vel, Back In Stock, debug mode<\/li>\n<\/ul>\n\n<h4>2.7.0<\/h4>\n\n<ul>\n<li>Compatibilidade HPOS, wc_get_order(), WC_Order API<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Bot\u00e3o flutuante SVG com preview, rastreamento de cliques<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Lan\u00e7amento inicial<\/li>\n<\/ul>\n\n<!--section=description-->\n<p>Envie mensagens WhatsApp autom\u00e1ticas para clientes WooCommerce. Notifica\u00e7\u00f5es, carrinho abandonado, PIX, rastreamento e bot\u00e3o WhatsApp.<\/p>\n\n<h3>Descri\u00e7\u00e3o<\/h3>\n\n<p><strong>Chat App Brasil<\/strong> \u00e9 o plugin WhatsApp para WooCommerce mais completo do Brasil. Conecte sua loja ao WhatsApp e envie mensagens autom\u00e1ticas para seus clientes em cada etapa da jornada de compra \u2014 do novo pedido at\u00e9 o p\u00f3s-venda.<\/p>\n\n<p>Integra\u00e7\u00e3o oficial com a plataforma <strong>ChatAppBrasil<\/strong> \u2014 sem necessidade de WhatsApp Business API direta.<\/p>\n\n<h4>Por que usar o Chat App Brasil?<\/h4>\n\n<ul>\n<li>\u2705 <strong>WhatsApp + WooCommerce nativos<\/strong> \u2014 sem configura\u00e7\u00f5es complexas<\/li>\n<li>\u2705 <strong>Bot\u00e3o flutuante WhatsApp<\/strong> customiz\u00e1vel com rastreamento de cliques<\/li>\n<li>\u2705 <strong>Recupera\u00e7\u00e3o de carrinho abandonado<\/strong> via WhatsApp (CartBounty)<\/li>\n<li>\u2705 <strong>PIX via WhatsApp<\/strong> \u2014 QR code autom\u00e1tico (Mercado Pago e Asaas)<\/li>\n<li>\u2705 <strong>Rastreamento de pedidos<\/strong> \u2014 Correios e Melhor Envio<\/li>\n<li>\u2705 <strong>Assinaturas WooCommerce<\/strong> \u2014 notifica\u00e7\u00f5es de renova\u00e7\u00e3o e cancelamento<\/li>\n<li>\u2705 <strong>Back In Stock<\/strong> \u2014 avisa cliente quando produto volta ao estoque<\/li>\n<li>\u2705 <strong>HPOS compat\u00edvel<\/strong> \u2014 WooCommerce 7.1+<\/li>\n<\/ul>\n\n<h4>Funcionalidades Principais<\/h4>\n\n<p><strong>Notifica\u00e7\u00f5es Autom\u00e1ticas de Pedido<\/strong>\nCada status do WooCommerce dispara mensagem personalizada ao cliente e\nopcionalmente ao administrador. Toggle individual por notifica\u00e7\u00e3o \u2014 a mensagem\npermanece salva mesmo quando desativada. Status suportados:\n* Novo pedido, pendente, em espera, processando, conclu\u00eddo, cancelado,\n  reembolsado, falhado, nota de pedido, status personalizados<\/p>\n\n<p><strong>Aba Pagamentos \u2014 Mercado Pago PIX<\/strong>\nEnvio autom\u00e1tico do QR code e c\u00f3digo copia e cola. Dois modos:\n* Imediato: envia em tempo real\n* Lembrete: envia somente se n\u00e3o pago ap\u00f3s X minutos (cancela se pagar antes)\n* Notifica\u00e7\u00e3o de PIX expirado: avisa o cliente quando o tempo expira<\/p>\n\n<p><strong>Aba Pagamentos \u2014 Asaas PIX<\/strong>\nIntegra\u00e7\u00e3o completa com o gateway Asaas para pagamentos via PIX.\nMesmas op\u00e7\u00f5es de imediato\/lembrete do Mercado Pago. QR code + c\u00f3digo copia e cola.<\/p>\n\n<p><strong>Aba Pagamentos \u2014 Asaas Boleto<\/strong>\nEnvio autom\u00e1tico do link do boleto quando um pedido Asaas Boleto \u00e9 criado.\nUse %boleto_url% na mensagem para incluir o link.<\/p>\n\n<p><strong>Aba Pagamentos \u2014 PIX Expirado<\/strong>\nNotifica\u00e7\u00e3o unificada para Mercado Pago e Asaas quando o PIX expira sem\npagamento. Configura quantos minutos ap\u00f3s a gera\u00e7\u00e3o do PIX disparar o aviso.<\/p>\n\n<p><strong>Aba Rastreamento \u2014 Correios e Melhor Envio<\/strong>\nNotifica\u00e7\u00e3o autom\u00e1tica quando o pedido \u00e9 conclu\u00eddo e h\u00e1 c\u00f3digo de rastreio.\nDetecta automaticamente Correios (WooCommerce Correios) e Melhor Envio.\nTags: %tracking_code%, %tracking_url%<\/p>\n\n<p><strong>Recupera\u00e7\u00e3o de Carrinho Abandonado<\/strong>\nAt\u00e9 3 follow-ups via CartBounty Free ou Pro, com intervalo configur\u00e1vel.\nToggle independente por follow-up.<\/p>\n\n<p><strong>P\u00f3s-venda (Aftersales)<\/strong>\nMensagem X horas ap\u00f3s conclus\u00e3o do pedido.<\/p>\n\n<p><strong>Back In Stock<\/strong>\nNotifica\u00e7\u00e3o via WhatsApp quando produto volta ao estoque.<\/p>\n\n<p><strong>Easy Digital Downloads (EDD)<\/strong>\nNotifica\u00e7\u00f5es de novo pedido e pedido completo para produtos digitais.<\/p>\n\n<p><strong>Contact Form 7 \/ Caldera Forms<\/strong>\nMensagens disparadas via formul\u00e1rios com substitui\u00e7\u00e3o de tags e quebras de linha.<\/p>\n\n<p><strong>Bot\u00e3o Flutuante WhatsApp<\/strong>\nSVG configur\u00e1vel: posi\u00e7\u00e3o, tamanho (40-200px), dist\u00e2ncia da borda (0-300px),\nefeito pulsante, tooltip, mensagem pr\u00e9-preenchida, ocultar por dispositivo.<\/p>\n\n<p><strong>Rastreamento de Cliques<\/strong>\nCada clique no bot\u00e3o \u00e9 registrado via AJAX (visitantes e logados).<\/p>\n\n<p><strong>Disparo em Massa<\/strong>\nPosts\/produtos para lista de n\u00fameros, mensagens personalizadas, importa\u00e7\u00e3o de clientes.<\/p>\n\n<p><strong>Logs de Mensagens<\/strong>\nEstat\u00edsticas (enviadas, erros, dedup), linhas expans\u00edveis com link ao pedido,\nbot\u00e3o de reenvio, abas por tipo, pagina\u00e7\u00e3o, link direto ao pedido WooCommerce.<\/p>\n\n<p><strong>Notas Privadas nos Pedidos<\/strong>\nNota autom\u00e1tica a cada envio WhatsApp com status, n\u00famero e link de reenvio.<\/p>\n\n<p><strong>Prote\u00e7\u00e3o e Seguran\u00e7a<\/strong>\nDeduplica\u00e7\u00e3o configur\u00e1vel, rate limiting, filtro de hor\u00e1rio, monitoramento de\nerros (pausa autom\u00e1tica ap\u00f3s 1h de falhas), erros t\u00e9cnicos em linguagem amig\u00e1vel.<\/p>\n\n<p><strong>Compatibilidade HPOS<\/strong>\nTotalmente compat\u00edvel com HPOS (WooCommerce 7.1+).<\/p>\n\n<h3>Instala\u00e7\u00e3o<\/h3>\n\n<ol>\n<li>Plugins &gt; Adicionar Novo &gt; Enviar Plugin &gt; selecione o .zip<\/li>\n<li>Ative o plugin<\/li>\n<li>Chat App Brasil &gt; Configura\u00e7\u00e3o &gt; insira seu Access Token<\/li>\n<li>Configure mensagens em Notifica\u00e7\u00f5es, Pagamentos, Rastreamento e demais abas<\/li>\n<\/ol>\n\n<h3>Tags Dispon\u00edveis<\/h3>\n\n<h4>Pedido<\/h4>\n\n<p>%id%, %order_key%, %order_date%, %order_time%, %order_link%, %order_status%,\n%product%, %product_name%, %order_subtotal%, %order_shipping%, %order_total%,\n%order_discount%, %currency%, %cust_note%, %shipping_method%,\n%payment_method_title%, %payment_url%<\/p>\n\n<h4>Cliente<\/h4>\n\n<p>%billing_first_name%, %billing_last_name%, %billing_email%, %billing_phone%,\n%billing_city%, %billing_state%, %billing_address_1%<\/p>\n\n<h4>Entrega<\/h4>\n\n<p>%shipping_first_name%, %shipping_address_1%, %shipping_city%, %shipping_state%<\/p>\n\n<h4>Rastreamento<\/h4>\n\n<p>%tracking_code% \u2014 c\u00f3digo de rastreio (Correios ou Melhor Envio)\n%tracking_url%  \u2014 link de rastreamento<\/p>\n\n<h4>Pagamentos<\/h4>\n\n<p>%pix_code%   \u2014 c\u00f3digo copia e cola PIX (Mercado Pago ou Asaas)\n%boleto_url% \u2014 link do boleto (Asaas)\n%payment_url% \u2014 link de pagamento pendente do WooCommerce<\/p>\n\n<h4>Outros<\/h4>\n\n<p>%shop_name%, %note%\nSpintax: {Ol\u00e1|Oi|Bom dia} \u2014 varia\u00e7\u00e3o aleat\u00f3ria por envio<\/p>","raw_excerpt":"Envie mensagens WhatsApp autom\u00e1ticas para clientes WooCommerce. Notifica\u00e7\u00f5es, carrinho abandonado, PIX, rastreamento e bot\u00e3o WhatsApp.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/179172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=179172"}],"author":[{"embeddable":true,"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/lupee87"}],"wp:attachment":[{"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=179172"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=179172"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=179172"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=179172"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=179172"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=179172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}