O disparador de campanhas oferece uma forma eficiente e eficaz de gerenciar e enviar mensagens de campanha utilizando o ChatWoot. Esta solução é projetada para facilitar a comunicação com seus clientes, permitindo agendamento de campanhas, envio de mensagens personalizadas e acompanhamento de desempenho.
Integração completa com o ChatWoot para gerenciar suas campanhas diretamente dentro da plataforma.
- Agende suas campanhas para uma data e hora específicas.
- Opção para disparo imediato, permitindo envios em tempo real.
- Possibilidade de incluir imagens nas mensagens da campanha.
- Suporte para múltiplos formatos de imagem (JPEG e PNG).
- Usar a variavel &img=linkdaimagem.jpg
- Possibilidade de incluir PDF junto com uma mensagem.
- Usar a variavel &doc=linkdopdf.pdf
- Possibilidade de incluir video nas mensagens da campanha.
- Usar a variavel &vid=linkdovideo.mp4
- Defina um limite diário de envios para cada empresa.
- Evite sobrecarregar a utilização da VPS com o alto fluxo de mensagens.
- Adicione um temporizador randômico entre os envios para evitar detecção como spam e bloquear o número.
- (Lembrando que isso não é uma garantia de que você não possa perder seu número e sim uma solução para reduzir os riscos.)
- Conta número de envios ✅.
- Conta número de falhas ❌.
- Envio automático de uma mensagem quando o limite diário de envios for excedido.
- Mantenha os administradores informados sobre o status das campanhas.
- Receba uma mensagem avisando que o disparo da campanha foi iniciado.
- Receba um relatório detalhado ao final de cada campanha.
- Inclui número total de envios e falhas.
- Inclui número de disparos que restam no dia.
- Inclui os números que não enviaram com o nome do contato.
- Use a variável (&nome) para personalizar as mensagens com o nome do contato.
- Use a variável (&email) para personalizar as mensagens com o email do contato.
- Aumente a personalização e eficácia das suas mensagens de campanha.
- Utilize as etiquetas dos contatos para segmentar e direcionar suas campanhas de maneira eficiente.
- Agrupe contatos com base em características específicas e envie mensagens direcionadas.
- Automatização: Reduza o trabalho manual com a automação de campanhas. 🤖
- Personalização: Melhore a experiência do cliente com mensagens personalizadas. 🎯
- Eficiência: Acompanhe o desempenho em tempo real e otimize suas campanhas. 📊
- Integração: Dispare campanhas diretamente pelo ChatWoot sem precisar abrir outro sistema, otimizando tempo e recursos. 🚀
Vamos começar o tutorial para fazer a automação do sistema de disparo de campanhas usando o n8n e a Evolution API junto ao ChatWoot.
Antes de iniciar, certifique-se de que você já tem instalado:
- ChatWoot
- n8n
- Evolution API
- pgAdmin ou outro de sua preferência para acessar o banco de dados do Postgres
- Acesse o ChatWoot: Faça login na sua conta do ChatWoot.
- Configurações: Vá para a seção de configurações.
- Caixas de Entrada: Selecione "Caixas de Entrada" no menu.
- Adicionar Nova Caixa de Entrada: Clique no botão "Adicionar Nova Caixa de Entrada".
- Escolher Tipo de Canal: Selecione "SMS" e escolha "Bandwidth" como o tipo de canal.
- Configurar Detalhes do Canal:
- Nome da Caixa de Entrada: Disparador (ou o nome que preferir).
- Número de telefone: +741963
- ID da Conta: 741963
- ID da aplicação: 741963
- Chave API: 741963
- Chave secreta API: 741963
- Salvar Configurações: Clique em "Criar canal Bandwidth" para criar a nova caixa de entrada.
-
Acesse o Banco de Dados: Use o pgAdmin ou outro software de sua preferência para acessar o banco de dados do ChatWoot.
-
Adicionar Coluna na Tabela Accounts:
- Execute o seguinte comando SQL para adicionar a coluna
limite_disparo
:ALTER TABLE accounts ADD COLUMN limite_disparo INTEGER NOT NULL DEFAULT 100;
- Execute o seguinte comando SQL para adicionar a coluna
-
Adicionar Colunas na Tabela Campaigns:
- Execute os seguintes comandos SQL para adicionar as colunas
status_envia
,enviou
efalhou
:ALTER TABLE campaigns ADD COLUMN status_envia INTEGER NOT NULL DEFAULT 0; ALTER TABLE campaigns ADD COLUMN enviou INTEGER NOT NULL DEFAULT 0; ALTER TABLE campaigns ADD COLUMN falhou INTEGER NOT NULL DEFAULT 0;
- Execute os seguintes comandos SQL para adicionar as colunas
-
Adicionar nova Tabela para guardar os envios que falharem:
- Execute o seguinte comando SQL para adicionar a tabela campaigns_failled:
-- Cria a sequência CREATE SEQUENCE campaigns_failled_id_seq; -- Cria a tabela com a coluna `id` usando a sequência criada CREATE TABLE campaigns_failled ( id BIGINT PRIMARY KEY NOT NULL DEFAULT nextval('campaigns_failled_id_seq'::regclass), nomecontato TEXT NOT NULL, telefone CHARACTER VARYING NOT NULL, id_campanha INTEGER NOT NULL );
- Execute o seguinte comando SQL para adicionar a tabela campaigns_failled:
- Foi notado que os ID da tabela "labels" não condizia com os id ta tabela "tags" sendo assim criei algumas funções e triggers que corrigem esse problema.
-
Criação das Funções de Replicação, Exclusão e Atualização
Cria na raiz do banco de dados
Função para replicar inserções:
CREATE OR REPLACE FUNCTION replicate_labels_to_tags() RETURNS TRIGGER AS $$ BEGIN INSERT INTO tags (id, name) VALUES (NEW.id, NEW.title); RETURN NEW; END; $$ LANGUAGE plpgsql;
Função para replicar exclusões:
CREATE OR REPLACE FUNCTION delete_labels_from_tags_and_taggings() RETURNS TRIGGER AS $$ BEGIN -- Exclui da tabela tags DELETE FROM tags WHERE id = OLD.id; -- Exclui da tabela taggings DELETE FROM taggings WHERE tag_id = OLD.id; RETURN OLD; END; $$ LANGUAGE plpgsql;
Função para replicar atualizações:
CREATE OR REPLACE FUNCTION update_labels_to_tags() RETURNS TRIGGER AS $$ BEGIN UPDATE tags SET name = NEW.title WHERE id = NEW.id; RETURN NEW; END; $$ LANGUAGE plpgsql;
-
Criação dos Triggers
Criar na tabela labels
Trigger para inserções:
CREATE TRIGGER after_insert_labels AFTER INSERT ON labels FOR EACH ROW EXECUTE FUNCTION replicate_labels_to_tags();
Trigger para exclusões:
CREATE TRIGGER after_delete_labels AFTER DELETE ON labels FOR EACH ROW EXECUTE FUNCTION delete_labels_from_tags_and_taggings();
Trigger para atualizações:
CREATE TRIGGER after_update_labels AFTER UPDATE ON labels FOR EACH ROW EXECUTE FUNCTION update_labels_to_tags();
- Acesse o n8n: Faça login na sua instância do n8n.
- Adicionar Novo Workflow:
- Clique em "Add Workflow".
- Importar Workflow:
- Clique nos três pontinhos no canto superior direito.
- Selecione "Import from File".
- Importar o Fluxo Disparador:
- Importe o arquivo de workflow disparador.json.
- Importar o Fluxo Reset-Limite-Campanhas:
- Repita os passos acima e importe o reset-limite-campanha.json.
- Acesse o Workflow Disparador: No n8n, abra o workflow Disparador que você importou.
- Editar Nó Info_Base:
- Preencha os seguintes campos com suas informações:
- URL do ChatWoot
- URL da Evolution API
- Token de acesso da conta do ChatWoot
- Global API KEY da Evolution API
- Nome da Caixa de Entrada cadastrada na Evolution API que vai disparar as mensagens
- ID da conta do ChatWoot
- Email que vai receber o relatório
- Número do WhatsApp que vai receber o relatório
- Preencha os seguintes campos com suas informações:
- Editar Nó Buscar campanhas:
- Edite "account_id" pelo id da instancia do ChatWoot.
- Edite "inbox_id" pelo id da caixa de entrada do disparador que voce crio no Passo 1.
- Conectar Nós do Postgres ao Banco de Dados do ChatWoot:
- Conecte todos os nós do Postgres ao banco de dados do ChatWoot, garantindo que as informações fluam corretamente entre os sistemas.
- Acesse o Workflow reset-limite-campanha: No n8n, abra o workflow reset-limite-campanha que você importou.
- Conectar Nós do Postgres ao Banco de Dados do ChatWoot:
- Conecte todos os nós do Postgres ao banco de dados do ChatWoot, garantindo que as informações sejam atualizadas corretamente para resetar o limite de disparo diário.
Agora que os workflows foram importados, configurados e editados, sua automação de disparo de campanhas está pronta para funcionar!
Para criar uma campanha, siga os passos abaixo:
- Clique em Campanhas: Acesse a seção de Campanhas no ChatWoot.
- Clique em Única: Selecione a opção "Única".
- Clique em Criar uma campanha única: Adicione as informações da sua campanha.
- Título: Insira o título da campanha.
- Mensagem: Digite a mensagem que quer enviar na campanha.
- Para adicionar o nome do contato à mensagem, digite
&nome
. - Para adicionar o email do contato à mensagem, digite
&email
. - Para adicionar uma imagem, digite
&img=urldaimagemaqui.jpg
. - Para adicionar um video, digite
&vid=urldovideo.mp4
. - Para adicionar um pdf, digite
&doc=urldopdf.pdf
.
- Para adicionar o nome do contato à mensagem, digite
"Olá &nome, tudo bem? Você já viu esta bela paisagem?
"Olá &nome, tudo bem? Segue o nosso catalogo em PDF?
&doc=https://evolution-api.com/files/evolution-api.pdf"
"Olá &nome, tudo bem? Você já viu esse vídeo??_
&vid=https://evolution-api.com/files/video.mp4"
- Selecionar Caixa de Entrada: No campo "Selecionar caixa de entrada", selecione a caixa de SMS que você criou no início do tutorial.
- Público: Selecione a etiqueta que está atribuída aos contatos que quer disparar a campanha.
- Horário Agendado: Selecione o dia e a hora que quer disparar a campanha. Caso queira disparar a campanha na mesma hora, selecione a data e a hora atual.
- Clique em Criar: Finalize a criação da campanha.
Agora tudo está pronto para enviar a sua campanha!
Mensagem de Início de Disparo
- Implementar uma mensagem que indique o início do disparo da campanha para notificar os usuários sobre o processo inicial.
Correção no limitador
- Correção no limitador de disparo, foi encontrado um erro que ele rouba 1 limite da conta quando chega em 1.
Relatório de Finalização por Email
- Adicionar funcionalidade para enviar um relatório por email ao final da campanha, detalhando métricas e resultados.
Inclusão do Limite de Disparos Diários no Relatório
- Introduzir no relatório o número restante de disparos diários disponíveis, fornecendo transparência sobre os limites e uso.
Adicionando variável
- Vamos adicionar a variável &email para conseguir personalizar mais ainda a mensagem.
Relatório de Falhas de Envio
- Desenvolver um relatório específico que liste os contatos que falharam no envio, incluindo nome e telefone, para análise e correção.
Envio de PDF
- Incluir a inserção de um arquivo pdf dentro da campanha.
Envio de PDF
- Incluir a inserção de video dentro da campanha.
Envio de Mensagens Dinâmicas
- Possibilidade de cadastrar mais de uma mensagem dentro do template para disparar de forma aleatória, evitando bloqueio do número.
Disparo por Múltiplos Números de WhatsApp
- Permitir o disparo de campanhas através de mais de um número de WhatsApp, melhorando a capacidade de gestão e distribuição das mensagens.
- Este roadmap pode ser ajustado conforme novas ideias surjam ou prioridades se alterem durante o desenvolvimento. Cada etapa visa melhorar a funcionalidade e a eficiência do disparador de campanhas, proporcionando uma experiência mais completa e eficaz aos usuários.
Quem quiser apoiar o projeto com dicas de melhorias e reportar alguma falha pode me acionar pelo grupo do WhatsApp.
https://chat.whatsapp.com/H2as2v9yHre8U2gjNaCWRc
Caso alguém queira contribuir de forma monetária, o chave PIX aleatoria: a0db6d5c-625b-4846-ba9a-3e06ccc6b1d4