Este guia explica como integrar o sistema BarberFlow com n8n para automatizar o atendimento via WhatsApp, permitindo que clientes façam agendamentos, consultem informações e recebam notificações diretamente pelo WhatsApp.
WhatsApp Business API → n8n → BarberFlow API → Banco de Dados
↑ ↓
Webhook Resposta
# Via Docker
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-v ~/.n8n:/home/node/.n8n \
n8nio/n8n
# Via npm
npm install n8n -g
n8n startPara conectar o WhatsApp ao n8n, você precisará:
- WhatsApp Business Account
- Facebook Developer Account
- Webhook URL configurada
- Crie um novo workflow no n8n
- Adicione um nó "Webhook"
- Configure a URL:
http://seu-n8n.com/webhook/whatsapp - Método: POST
- Configure no Facebook Developer Console
{
"nodes": [
{
"name": "WhatsApp Webhook",
"type": "n8n-nodes-base.webhook",
"parameters": {
"path": "whatsapp",
"httpMethod": "POST"
}
},
{
"name": "Process Message",
"type": "n8n-nodes-base.function",
"parameters": {
"functionCode": "// Extrair dados da mensagem\nconst message = items[0].json;\nconst phoneNumber = message.from;\nconst text = message.text.body;\nconst senderName = message.profile?.name || 'Cliente';\n\nreturn [{\n json: {\n phone_number: phoneNumber,\n message: text,\n name: senderName\n }\n}];"
}
},
{
"name": "BarberFlow API",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"url": "http://sua-api.com/webhooks/whatsapp",
"method": "POST",
"body": "json",
"jsonBody": "={{ $json }}"
}
},
{
"name": "Send WhatsApp Response",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"url": "https://graph.facebook.com/v17.0/PHONE_NUMBER_ID/messages",
"method": "POST",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json"
},
"body": "json",
"jsonBody": "={\n \"messaging_product\": \"whatsapp\",\n \"to\": \"{{ $('Process Message').item.json.phone_number }}\",\n \"text\": {\n \"body\": \"{{ $('BarberFlow API').item.json.response }}\"\n }\n}"
}
}
]
}{
"nodes": [
{
"name": "Schedule Trigger",
"type": "n8n-nodes-base.webhook",
"parameters": {
"path": "schedule",
"httpMethod": "POST"
}
},
{
"name": "Create Appointment",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"url": "http://sua-api.com/webhooks/n8n/agendamento",
"method": "POST",
"body": "json",
"jsonBody": "={{ $json }}"
}
},
{
"name": "Send Confirmation",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"url": "https://graph.facebook.com/v17.0/PHONE_NUMBER_ID/messages",
"method": "POST",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN"
},
"body": "json",
"jsonBody": "={\n \"messaging_product\": \"whatsapp\",\n \"to\": \"{{ $json.phone_number }}\",\n \"text\": {\n \"body\": \"{{ $('Create Appointment').item.json.response_message }}\"\n }\n}"
}
}
]
}{
"nodes": [
{
"name": "Schedule Reminder",
"type": "n8n-nodes-base.cron",
"parameters": {
"triggerTimes": {
"hour": 9,
"minute": 0
}
}
},
{
"name": "Get Tomorrow Appointments",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"url": "http://sua-api.com/api/agendamentos?data={{ $now.plus({days: 1}).toFormat('yyyy-MM-dd') }}",
"method": "GET",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
},
{
"name": "Send Reminders",
"type": "n8n-nodes-base.splitInBatches",
"parameters": {
"batchSize": 1
}
},
{
"name": "WhatsApp Reminder",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"url": "https://graph.facebook.com/v17.0/PHONE_NUMBER_ID/messages",
"method": "POST",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN"
},
"body": "json",
"jsonBody": "={\n \"messaging_product\": \"whatsapp\",\n \"to\": \"{{ $json.cliente.telefone }}\",\n \"text\": {\n \"body\": \"🔔 Lembrete: Você tem um agendamento amanhã às {{ $json.hora }} com {{ $json.barbeiro.nome }}. Confirme sua presença!\"\n }\n}"
}
}
]
}- URL:
/webhooks/whatsapp - Método: POST
- Descrição: Processa mensagens recebidas do WhatsApp
Payload:
{
"from": "5511999999999",
"message": "menu",
"name": "João Silva"
}Resposta:
{
"success": true,
"response": "🔹 BARBERFLOW - MENU PRINCIPAL 🔹\n\nOlá! Bem-vindo...",
"phone": "5511999999999"
}- URL:
/webhooks/n8n/agendamento - Método: POST
- Descrição: Cria agendamento através do n8n
Payload:
{
"phone_number": "5511999999999",
"cliente_nome": "João Silva",
"barbeiro_nome": "Carlos",
"servico_nome": "Corte Masculino",
"data": "2024-01-15",
"hora": "14:30"
}- URL:
/webhooks/n8n/status/{agendamento_id} - Método: PATCH
- Descrição: Atualiza status do agendamento
Payload:
{
"status": "confirmado"
}- URL:
/webhooks/n8n/notifications - Método: POST
- Descrição: Envia notificação personalizada
Payload:
{
"phone_number": "5511999999999",
"message": "Sua mensagem personalizada aqui"
}| Comando | Descrição |
|---|---|
menu ou ajuda |
Exibe menu principal |
agendar |
Informações sobre agendamento |
serviços |
Lista serviços e preços |
barbeiros |
Lista equipe de barbeiros |
horários |
Horários de funcionamento |
meus agendamentos |
Consulta agendamentos do cliente |
cancelar |
Informações sobre cancelamento |
contato |
Informações de contato |
endereço |
Localização da barbearia |
No n8n, configure as seguintes variáveis:
WHATSAPP_ACCESS_TOKEN=your_whatsapp_access_token
WHATSAPP_PHONE_NUMBER_ID=your_phone_number_id
BARBERFLOW_API_URL=http://sua-api.com
BARBERFLOW_API_TOKEN=your_api_token- Cliente envia mensagem: "Quero agendar"
- n8n processa: Envia para BarberFlow API
- API responde: Menu de opções
- Cliente escolhe: Serviço, barbeiro, data/hora
- n8n cria agendamento: Via endpoint específico
- Confirmação automática: Mensagem de sucesso
- Lembrete automático: 24h antes do agendamento
- Acesse a interface do n8n
- Vá em "Executions" para ver histórico
- Configure alertas para falhas
- Logs são salvos automaticamente
- Monitore endpoints
/webhooks/* - Configure alertas para erros 500
-
Webhook não recebe mensagens
- Verifique URL no Facebook Developer
- Confirme que n8n está acessível
- Teste com ngrok para desenvolvimento
-
API não responde
- Verifique se BarberFlow está rodando
- Confirme endpoints estão corretos
- Teste com Postman/curl
-
Mensagens não são enviadas
- Verifique token do WhatsApp
- Confirme Phone Number ID
- Teste permissões da conta Business
# Testar webhook
curl -X POST http://localhost:5678/webhook/whatsapp \
-H "Content-Type: application/json" \
-d '{"from": "5511999999999", "message": "menu", "name": "Teste"}'
# Testar agendamento
curl -X POST http://localhost:5001/webhooks/n8n/agendamento \
-H "Content-Type: application/json" \
-d '{
"phone_number": "5511999999999",
"cliente_nome": "João Teste",
"barbeiro_nome": "Carlos",
"servico_nome": "Corte",
"data": "2024-01-15",
"hora": "14:30"
}'- Autenticação: Use tokens seguros
- HTTPS: Sempre em produção
- Rate Limiting: Já implementado na API
- Validação: Todos os inputs são validados
- Logs: Monitore tentativas suspeitas
- Configure conta WhatsApp Business
- Instale e configure n8n
- Importe workflows fornecidos
- Configure variáveis de ambiente
- Teste fluxos básicos
- Implante em produção
- Configure monitoramento
Para dúvidas sobre a integração:
- Email: suporte@barberflow.com
- Documentação: [Link para docs]
- Issues: [Link para GitHub]