Documentação do ZPE Desktop
Tudo o que você precisa para colocar o ZPE Desktop em operação: instalação em cada sistema, pareamento com o WhatsApp, vínculo seguro com o Luva CRM e o dia a dia de campanhas, recibos e múltiplas instâncias.
Visão geral
O ZPE Desktop é um cliente WhatsApp para computador construído sobre o whatsmeow. Ele mantém a sessão do WhatsApp conectada localmente — o celular não precisa ficar ligado — e se integra ao Luva CRM em duas vias:
- CRM → Desktop: campanhas e envios chegam como lotes que exigem confirmação humana local antes de qualquer mensagem sair;
- Desktop → CRM: histórico, mensagens novas, mídia e recibos são sincronizados para a caixa de entrada do CRM com deduplicação garantida.
Todo o estado local (conversas, mensagens, fila, mídia) fica em SQLite no perfil do usuário. Credenciais do CRM ficam no cofre de senhas do sistema operacional.
Instalação
Baixe o pacote do seu sistema na página de download e selecione o guia abaixo. Nenhum sistema exige ferramentas de desenvolvimento — os pacotes são autossuficientes.
macOS — Intel e Apple Silicon
O bundle é universal: o mesmo .app roda em Macs Intel e Apple Silicon. O ZPE Desktop é distribuído fora da App Store, então o macOS bloqueia a primeira abertura — os passos abaixo autorizam somente este aplicativo.
- Baixe e abra o arquivo
zpe-desktop-macos-universal.zip. - Arraste
zpe-desktop.apppara a pasta Aplicativos. - Na pasta Aplicativos, clique com o botão direito sobre o ZPE Desktop e selecione Abrir.
- Quando o aviso de segurança aparecer, clique em Abrir novamente.
Se o botão Abrir não aparecer no aviso:
- Tente abrir o ZPE Desktop uma vez e feche o aviso exibido.
- Abra o menu Apple → Ajustes do Sistema.
- Entre em Privacidade e Segurança.
- Role até a seção Segurança. Ao lado da mensagem de que o ZPE Desktop foi bloqueado, clique em Abrir Mesmo Assim.
- Confirme com senha, Touch ID ou credencial de administrador.
- Na confirmação final, clique em Abrir.
~/Library/Application Support/ZPE Desktop.
Verificação opcional do pacote
shasum -a 256 ~/Downloads/zpe-desktop-macos-universal.zip
# compare a saída com o SHA-256 publicado no release
Windows 10/11 — x64
- Baixe o instalador
zpe-desktop-windows-installer.exe(ou a versão portátilzpe-desktop-windows-amd64.zip). - Dê um duplo clique no instalador.
- Se o SmartScreen exibir “O Windows protegeu o computador”, clique em Mais informações e depois em Executar assim mesmo.
- Avance pelo instalador. O ZPE Desktop será instalado para o usuário atual e criará atalho no Menu Iniciar.
- Abra o ZPE Desktop pelo Menu Iniciar.
Verificação opcional do pacote
certutil -hashfile "%USERPROFILE%\Downloads\zpe-desktop-windows-installer.exe" SHA256
# compare a saída com o SHA-256 publicado no release
Para desinstalar: Configurações → Aplicativos → ZPE Desktop → Desinstalar.
Os dados locais (sessão, conversas) ficam em %AppData% e podem
ser removidos manualmente se você não pretende reinstalar.
Linux — Ubuntu 22.04+ / derivados (x64)
O pacote
zpe-desktop-linux-amd64.tar.gz
traz o binário (Wails + WebKitGTK 4.1), o atalho
.desktop, o ícone e um install.sh que instala
tudo para o usuário atual — sem sudo:
- Instale o WebKitGTK 4.1 (uma vez):
sudo apt update sudo apt install libwebkit2gtk-4.1-0 - Baixe, extraia e instale:
tar xzf ~/Downloads/zpe-desktop-linux-amd64.tar.gz -C /tmp/zpe /tmp/zpe/install.sh - Abra o ZPE Desktop pelo menu de aplicativos (ou rode
~/.local/bin/zpe-desktop).
O install.sh coloca o binário em ~/.local/bin,
o ícone em ~/.local/share/icons/hicolor e o atalho em
~/.local/share/applications com o Exec já
apontando para o binário instalado.
StartupWMClass=zpe-desktop do atalho é o que liga a
janela ao ícone no Alt+Tab do GNOME. Se o ícone antigo persistir,
relogue a sessão (ou, no X11, Alt+F2 → r).
Compilar do código-fonte (opcional)
# pré-requisitos: Go 1.25+, Node 20+, Wails v2, libwebkit2gtk-4.1-dev
git clone https://github.com/3lados/zpe-desktop
cd zpe-desktop
wails build -tags webkit2_41
# artefato: build/bin/zpe-desktop
Parear com o WhatsApp
- Abra o ZPE Desktop. A tela inicial exibe um QR code.
- No celular, abra o WhatsApp → Configurações → Aparelhos conectados → Conectar um aparelho.
- Escaneie o QR code exibido no computador.
- Aguarde a mensagem “Conectado! Carregando...” — o histórico inicial sincroniza automaticamente.
Depois do pareamento, a sessão fica salva localmente: fechar e abrir o aplicativo não exige novo QR. O celular pode ficar desligado — o desktop mantém a conexão por conta própria.
Vincular ao Luva CRM
O vínculo usa um código de autorização de uso único gerado pelo CRM:
- No Luva CRM, acesse Configurações → Instâncias WhatsApp e crie uma instância do tipo “WhatsApp Desktop (ZPE)”.
- Na instância criada, gere o código de autorização — o CRM exibe o código copiável e um QR equivalente, com validade curta.
- No ZPE Desktop, abra o cartão LUVA CRM e informe a origem do CRM (ex.:
https://app2.luvacrm.com.br) e o código. - Confirme a conexão com a segunda ação explícita — o código nunca é enviado automaticamente.
Propriedades do vínculo:
- o código é de uso único e expira — reutilização falha fechado;
- o dispositivo fica vinculado exatamente a um tenant e uma instância; não alcança outras instâncias do mesmo tenant;
- o token do dispositivo fica no cofre do sistema (Keychain, Credential Manager, Secret Service);
- revogar o dispositivo no CRM derruba a conexão e bloqueia trabalho pendente.
Operação diária
Campanhas e confirmação humana
Quando o CRM despacha uma campanha para a sua instância, o ZPE Desktop recebe um lote e o persiste localmente antes de qualquer notificação. Nada é enviado sem a sua revisão:
- O aplicativo sinaliza “trabalho disponível” no painel Envios do CRM.
- Abra o lote e revise destinatários e conteúdo.
- Confirme o envio — a confirmação é por lote, explícita, e não é herdada por lotes futuros.
- O desktop envia com pacing e reporta cada item ao CRM (enviado, falhou, recibos).
Envios são idempotentes: reinícios ou reconexões não duplicam mensagens — cada item tem identidade estável e um journal local impede repetição.
Recibos e status
| Indicador | Significado |
|---|---|
| ✓ um check cinza | mensagem aceita pelo WhatsApp (enviada) |
| ✓✓ dois checks cinza | entregue ao aparelho do destinatário |
| ✓✓ dois checks azuis | lida (ou mídia reproduzida) |
O status nunca regride: um recibo atrasado de prioridade menor não “des-lê” uma mensagem. Em Dados da mensagem você vê a timeline completa — incluindo, em grupos, o participante de cada recibo.
Multi-instância
Abrindo o ZPE Desktop normalmente, o próprio aplicativo gerencia várias instâncias em uma única janela:
- a coluna lateral esquerda alterna entre instâncias;
- o botão + cria um perfil novo (QR próprio, CRM próprio);
- eventos de instâncias em segundo plano viram um badge numérico no ícone da instância;
- cada instância tem bancos, mídia, fila e sessão totalmente isolados, podendo apontar até para origens diferentes do CRM.
O modo antigo — uma janela por perfil — continua suportado via linha de comando:
# macOS
open -n "/Applications/zpe-desktop.app" --args --profile chip-01
# Linux / Windows
zpe-desktop --profile chip-01
--profile — e
vice-versa. Isso evita corrupção de sessão.
Solução de problemas
“Não foi possível conectar” ao escanear o QR
Sintoma clássico de QR vencido. Versões atuais renovam o código automaticamente; se a tela ficar sem QR por mais de ~30 segundos, use o botão Tentar novamente.
Instância aparece “desconectada” no CRM
- Confirme que o ZPE Desktop está aberto e o WhatsApp conectado (bolinha verde na instância);
- Verifique o cartão LUVA CRM — estado deve ser conectado;
- Se estiver revogado, gere um novo código de autorização no CRM e refaça o vínculo.
Campanha não chega ao desktop
- O relay entrega trabalho apenas com o vínculo ativo e a instância correta — confira no CRM se a campanha aponta para a instância desta máquina;
- Lotes já reservados por outro dispositivo não são re-entregues até liberação.
Ícone genérico no Alt+Tab (Linux)
Instale o arquivo .desktop com StartupWMClass=zpe-desktop
e os ícones hicolor conforme o guia do Linux; depois
relogue a sessão.
macOS bloqueou o aplicativo
Fluxo completo na seção do macOS: botão direito → Abrir; se não houver botão, Ajustes do Sistema → Privacidade e Segurança → Abrir Mesmo Assim.
Onde ficam meus dados?
| Sistema | Local |
|---|---|
| macOS | ~/Library/Application Support/ZPE Desktop |
| Windows | %AppData%\ZPE Desktop (instalado) ou pasta data\ ao lado do executável (portátil) |
| Linux | ~/.local/share (perfil do usuário) ou diretório data/ ao lado do binário |
Perfis adicionais vivem em profiles/<nome>/ dentro do
diretório de dados. Excluir uma instância pelo aplicativo remove os dados
locais e, quando vinculada, também a instância correspondente no CRM.