=== Chat App Brasil ===
Contributors: lupee
Tags: woocommerce, notifications, abandoned cart, chat, mensagens
Requires at least: 6.0
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 2.7.5
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Automação de mensagens para WooCommerce via ChatAppBrasil. Notificações de pedidos, carrinho abandonado, Back In Stock, botão flutuante e mais.

== Description ==

**Chat App Brasil** é a integração oficial do WooCommerce com a plataforma [ChatAppBrasil](https://chatappbrasil.com/), permitindo que você envie mensagens WhatsApp automaticamente para seus clientes diretamente do seu site ou loja.

Sem complicações técnicas, sem APIs complexas — basta inserir seu Access Token e começar a enviar.

= Por que usar o Chat App Brasil? =

O WhatsApp é o principal canal de comunicação no Brasil. Com este plugin você alcança seus clientes onde eles já estão, no momento certo, com a mensagem certa — de forma automática.

> **Requer uma conta ativa em [chatappbrasil.com](https://chatappbrasil.com/).** Crie sua conta gratuitamente e obtenha seu Access Token para começar.

---

= 🛒 Notificações automáticas de pedido (WooCommerce) =

Configure uma mensagem diferente para cada status de pedido e o plugin disparará automaticamente quando o status mudar:

* **Novo pedido** — enviado na página de agradecimento, logo após a compra
* **Pedido pendente** — aguardando pagamento
* **Pedido em espera** — pagamento aguardando confirmação manual
* **Pedido processando** — pagamento confirmado, em separação
* **Pedido completo** — entregue ou finalizado
* **Pedido cancelado, reembolsado ou com falha**
* **Nota do pedido** — quando o lojista adiciona uma observação ao pedido
* **Notificação para o administrador** — receba uma cópia de cada pedido no seu WhatsApp
* **Status personalizados** — compatível com qualquer status customizado criado por outros plugins

Todas as mensagens suportam **spintax** `{Olá|Oi|Bom dia}` para variações aleatórias, e **tags dinâmicas** como `%billing_first_name%`, `%order_total%`, `%product_name%` e [mais de 20 variáveis disponíveis](https://chatappbrasil.com/).

---

= 🛒 Recuperação de carrinho abandonado =

Requer [CartBounty Free ou Pro](https://wordpress.org/plugins/woo-save-abandoned-carts/). Detecta automaticamente a versão instalada e ativa os follow-ups correspondentes:

* Até **3 mensagens de follow-up** com intervalo configurável em horas
* Mensagem de **pós-venda (aftersales)** enviada X horas após a conclusão do pedido — ideal para pedir avaliações ou oferecer um próximo produto

---

= 💬 Botão flutuante WhatsApp =

Um botão de WhatsApp moderno e configurável para qualquer página do seu site:

* Ícone SVG inline — sem imagens externas, carrega instantaneamente
* **4 posições** disponíveis (cantos da tela) com offset horizontal e vertical ajustáveis
* Tamanho configurável de 40 a 200 px
* **Efeito pulsante** para chamar atenção
* **Tooltip** com texto personalizável
* **Mensagem pré-preenchida** — o cliente abre o WhatsApp já com a mensagem digitada
* Ocultar em dispositivos móveis, desktop ou em páginas específicas
* **Rastreamento de cliques** com painel de estatísticas (total, hoje, últimos 7 dias)

---

= 📋 Integração com formulários =

**Contact Form 7** — A aba WhatsApp aparece diretamente no editor do formulário. Configure número, mensagem e imagem usando as tags do CF7 como `[your-name]` e `[your-tel]`. Cada formulário tem sua própria configuração independente.

**Caldera Forms** — Mesmo conceito, com painel nativo no editor. Usa `{slug}` no lugar de `[tag]`, e o painel lista automaticamente todos os campos disponíveis no formulário para facilitar a configuração.

---

= 🛍️ Easy Digital Downloads =

Para lojas de produtos digitais:

* Campo de telefone adicionado automaticamente no checkout do EDD
* **Notificação de novo pedido** — enviada na página de recibo
* **Notificação de pedido completo** — enviada quando o pagamento é confirmado

---

= 💳 Mercado Pago PIX =

Integração nativa com o plugin **WooCommerce Mercado Pago** (versão 8.x):

* Detecta automaticamente pedidos pagos via PIX
* Envia o **código copia e cola** do PIX diretamente por mensagem
* Envia o **QR code** como imagem junto com a mensagem
* Tag especial `%pix_code%` disponível na mensagem configurada
* Funciona com o gateway `woo-mercado-pago-pix`
* Se o plugin Mercado Pago não estiver instalado, o painel exibe um aviso informativo com link de instalação
* QR code temporário excluído automaticamente em 30 minutos via cron


= 🔔 Back In Stock Notifier =

Integração nativa com o plugin **Back In Stock Notifier for WooCommerce**:

* Enviada automaticamente quando um produto volta ao estoque
* Disparada no mesmo momento que o e-mail de aviso do plugin
* O número de telefone é lido do campo preenchido pelo cliente no formulário de inscrição
* Tags disponíveis: `%name%`, `%product_name%`, `%product_url%`
* Foto do produto enviada automaticamente como imagem
* Opção de imagem fixa (ex: banner promocional) para substituir a foto do produto
* Aba exclusiva **🔔 Back In Stock** em Notificações com gate bloqueado quando plugin não instalado


= 📊 Logs e monitoramento =

* Histórico completo de todas as mensagens enviadas
* Status de cada envio (sucesso ou erro)
* Paginação com 25 registros por página
* Reenvio com um clique diretamente do log
* Rotação automática: últimas 500 mensagens ou 30 dias
* Limpeza do histórico com um clique

---

= 🔒 Segurança e boas práticas =

* Token validado antes de liberar acesso às funcionalidades
* Todas as entradas sanitizadas com `wp_unslash()` e `sanitize_*`
* Nonces em todos os formulários e ações AJAX
* Token nunca exposto no frontend — requisições à API feitas exclusivamente via PHP
* Compatível com **HPOS** (High-Performance Order Storage do WooCommerce 7.1+)
* Integração com a **Política de Privacidade** nativa do WordPress

---

= Serviço externo =

Este plugin transmite dados (número de telefone, mensagem, imagem) para a API da plataforma **ChatAppBrasil** (`https://api.chatappbrasil.com`) exclusivamente para viabilizar o envio de mensagens WhatsApp. Nenhum dado é armazenado além do necessário para o processamento.

* [Termos de Uso](https://chatappbrasil.com/termos)
* [Política de Privacidade](https://chatappbrasil.com/privacidade)

É necessária uma conta ativa em [chatappbrasil.com](https://chatappbrasil.com/) com um Access Token válido.

---

= Compatibilidade =

* WordPress 6.0+
* WooCommerce 7.0+ com suporte total a HPOS
* PHP 7.4+
* Contact Form 7 (qualquer versão recente)
* Caldera Forms (qualquer versão recente)
* Easy Digital Downloads (qualquer versão recente)
* CartBounty Free e Pro

== Installation ==

**Via painel WordPress (recomendado)**

1. Acesse **Plugins → Adicionar Novo → Enviar Plugin**.
2. Selecione o arquivo `.zip` e clique em **Instalar Agora**.
3. Ative o plugin.
4. Acesse **Chat App Brasil → Configuração**, insira seu Access Token e clique em **Testar Conexão**.
5. Configure as mensagens em **Chat App Brasil → Notificações**.
6. Personalize o botão em **Chat App Brasil → Botão WhatsApp**.

**Instalação manual (FTP/SFTP)**

1. Descompacte o `.zip`.
2. Envie a pasta `chat-app-brasil` para `/wp-content/plugins/`.
3. Ative o plugin em **Plugins** no painel WordPress.

**Primeiro uso**

Após ativar, acesse **Chat App Brasil → Configuração**. Insira seu Access Token obtido em [chatappbrasil.com](https://chatappbrasil.com/), clique em **Testar Conexão** para validar e liberar todas as funcionalidades.

== Frequently Asked Questions ==

= Preciso de alguma conta para usar o plugin? =

Sim. É necessária uma conta ativa na plataforma [ChatAppBrasil](https://chatappbrasil.com/) com um Access Token válido. O cadastro pode ser feito diretamente no site.

= O botão flutuante não aparece no site. =

Verifique se o número de telefone está preenchido em **Chat App Brasil → Botão WhatsApp**. Sem número o botão não é exibido. Confira também se o botão não foi ocultado para o dispositivo ou página atual nas configurações.

= As mensagens não são enviadas. =

1. Certifique-se de que o Access Token foi validado com sucesso em **Chat App Brasil → Configuração**.
2. Verifique se a mensagem do status correspondente não está em branco em **Notificações**.
3. Consulte o histórico em **Chat App Brasil → Logs de mensagens** para ver o status de cada envio.

= A aba WhatsApp não aparece no editor do Contact Form 7. =

Certifique-se de que o plugin Chat App Brasil está ativo. A aba é adicionada automaticamente ao editor de qualquer formulário CF7.

= Como usar o Caldera Forms? =

Abra o editor do formulário no Caldera, clique na aba **WhatsApp** e configure usando `{slug_do_campo}`. O painel exibe todos os slugs disponíveis naquele formulário.

= O carrinho abandonado não envia. =

Instale o plugin [CartBounty Free](https://wordpress.org/plugins/woo-save-abandoned-carts/) ou Pro e configure as mensagens em **Notificações → Carrinho Abandonado**. Verifique também se o cron do WordPress está funcionando (recomendamos o plugin WP Crontrol para diagnóstico).

= Posso usar em mais de um site? =

Sim, desde que cada instalação tenha um Access Token válido associado à respectiva instância na plataforma ChatAppBrasil.

= O plugin é compatível com HPOS do WooCommerce? =

Sim. A compatibilidade com High-Performance Order Storage é declarada automaticamente e testada com WooCommerce 7.1+.

= Como envio mensagens com imagem? =

Em qualquer campo de imagem nas configurações de notificação, insira a URL da imagem ou use o botão de upload para selecionar uma da biblioteca de mídia. A imagem é enviada como anexo junto com a mensagem.

== Screenshots ==

1. Painel de configuração com validação de token e status da conexão
2. Notificações — accordion com todos os status de pedido e indicador ativo/inativo
3. Botão flutuante com preview ao vivo e estatísticas de cliques
4. Logs de mensagens com status, paginação e reenvio
5. Configuração de carrinho abandonado e pós-venda
6. Aba WhatsApp no editor do Contact Form 7

== Third-party Libraries ==

Este plugin inclui as seguintes bibliotecas de terceiros:

**International Telephone Input v15.0.2**
* Repositório: https://github.com/jackocnr/intl-tel-input
* Licença: MIT — https://github.com/jackocnr/intl-tel-input/blob/master/LICENSE
* Arquivos: assets/js/intlTelInput.js, assets/css/intlTelInput.css, assets/js/utils.js

**jQuery Modal v0.9.1**
* Repositório: https://github.com/kylefox/jquery-modal
* Licença: MIT — https://github.com/kylefox/jquery-modal/blob/master/LICENSE
* Arquivo: assets/js/jquery.modal.min.js

== Changelog ==

= 2.7.5 - 05/2026 =

**Carrinho Abandonado — CartBounty**
* Suporte completo ao CartBounty Free e CartBounty Pro com detecção automática de versão
* Query SQL filtra elegíveis diretamente (DATE_SUB) eliminando falsos positivos de tempo
* Filtro de 24 horas: apenas carrinhos abandonados nas últimas 24h são processados
* CartBounty Pro: usa wp_steps_completed e wp_last_sent para controle de steps
* CartBounty Free: usa followup_1/2/3 para controle de envios
* Detecção dinâmica de colunas (SHOW COLUMNS) para compatibilidade entre versões do CartBounty
* Lock anti-duplo por carrinho via transient (5 min)
* Rate limit respeitado: máx 10 mensagens por ciclo de cron
* Cron abandonado rodando a cada minuto via servidor real

**Back In Stock Notifier**
* Integração nativa com Back In Stock Notifier for WooCommerce v7.x
* Hook correto: cwg_instock_mail_sent_success com subscriber_id (slug=instock)
* Meta keys corretas do BIS v7: cwginstock_product_id, cwginstock_subscriber_phone, cwginstock_subscriber_name
* Cron próprio wlp_bis_cron_hook a cada 5 minutos como fallback
* wlp_bis_ensure_cron() garante agendamento via action init
* Imagem do produto enviada automaticamente; opção de imagem fixa manual
* Tags disponíveis: %name%, %product_name%, %product_url%
* Log exclusivo na aba 🔔 Back In Stock em Logs de Mensagens

**Logs de Mensagens**
* Aba exclusiva 🛒 Carrinhos abandonados com todos os dados do cliente, itens e tempo de abandono
* Aba exclusiva 🔔 Back In Stock com histórico de notificações enviadas
* Gate visual bloqueado quando CartBounty não está instalado (preview borrada + botão instalar)
* Itens do carrinho exibidos como texto corrido (nome + quantidade, separados por vírgula)
* Tempo de abandono exibido em formato legível (5 min, 2h, 3d) com cor vermelha após 24h
* Botão 📲 Enviar WA por carrinho para reenvio manual
* Paginação em todas as abas

**Notificações — Novas abas**
* Aba 🔔 Back In Stock com configuração completa de mensagem e imagem
* Card de tags disponíveis para carrinho abandonado (%product_name%, %cart_contents%, %cart_total%)
* Tags %product_name% e %cart_contents% funcionando no envio automático de carrinho abandonado

**Integração Mercado Pago PIX**
* Envio automático do QR code e código copia-e-cola via WhatsApp após compra PIX
* QR salvo em wp-content/uploads/wlp-pix/ com limpeza automática em 30 min
* Card informativo quando plugin MP não está instalado

**Badges de plugin padronizados**
* Método render_plugin_badge() centralizado para todos os plugins de integração
* Ativo: badge verde com link direto para configurações
* Inativo: badge amarelo com botão + Instalar via thickbox (WP.org)
* Aplicado em: CartBounty, EDD, Contact Form 7, Caldera Forms, Back In Stock

**Sistema de Debug**
* Aba 🔍 Debug em Configuração com toggle on/off
* Botão Gerar relatório de diagnóstico: PHP/WP/WC/WLP versions, token, plugins, crons, CartBounty stats
* Botão 🗑️ Limpar log de debug via AJAX (independente do Object Cache Pro)
* Debug mode reporta wlp_debug_enabled (não WP_DEBUG)
* Log limpo automaticamente ao ativar/desativar debug
* wlp_debug_log() nos pontos críticos: followup, BIS, rate limit, deduplicação
* bis_cron_hook visível no relatório de diagnóstico

**Segurança**
* Deduplicação de mensagens idênticas configurável (ligar/desligar em Configuração)
* Rate limit configurável de 1 a 100 mensagens por minuto
* register_setting() com sanitize_callback para todos os campos do botão flutuante
* Logger usa fgets() linha por linha em vez de file_get_contents() (performance em logs grandes)
* wp_unslash em todos os $_POST, nonces em todos os formulários

**Correções gerais**
* Fatal error WLP_Woosend_Logger::log() corrigido para add()
* Corrigido link Ver assinantes no BIS (edit.php?post_type=cwginstocknotifier)
* wlp_admin_notice() protegido com function_exists() guard
* Versão sincronizada em WLP_VERSION, Version: e Stable tag
* .pot regenerado com 44 strings, sem flag fuzzy
* Tradução en_US (.po e .mo) atualizada

= 2.1.0 - 04/2026 =
* Versão de transição — ver 2.7.5 para histórico completo

= 1.5.0 - 03/2026 =
* Refatoração completa do plugin
* Correções HPOS, XSS, nonces e APIs deprecadas do WooCommerce
* Compatibilidade com WooCommerce 8.x e WordPress 6.x
