Sistema automatizado para criação e gerenciamento de atividades de contrato via webhooks do Pipedrive
📋 Funcionalidades • 🚀 Instalação • ⚙️ Configuração • 📖 Uso • 🔧 Desenvolvimento
- 4 tipos de contratos suportados: CCV, Escritura, Financiamento e FGTS
- Cronograma inteligente: Atividades baseadas em dias corridos desde o início do contrato
- Dias úteis: Ajuste automático para próximo dia útil
- Priorização automática: Alta, média e baixa baseada na criticidade
- Anti-duplicação: Sistema triplo de proteção contra atividades duplicadas
- Debounce inteligente: 15 segundos entre processamentos do mesmo deal
- Cooldown global: 2 minutos para evitar spam de webhooks
- Cache distribuído: Uso do Google Cache Service para performance
- Logs detalhados: Todas as ações são registradas no Google Sheets
- Controle de erros: Sistema robusto de tratamento e registro de erros
- Métricas: Acompanhamento de atividades criadas vs. puladas
| Tipo | Atividades | SLA | Prioridades |
|---|---|---|---|
| CCV | 7 marcos | 7 dias | Alta: Elaboração, Finalização |
| Escritura | 13 marcos | 30 dias | Alta: Início, Validação, Prazos |
| Financiamento | 10 marcos | 30 dias | Alta: Início, Tratativas, Prazos |
| FGTS | 7 marcos | 30 dias | Alta: Orientação, SLA, Prazo Final |
- Conta Google com acesso ao Google Apps Script
- Conta Pipedrive com permissões administrativas
- Planilha Google Sheets para logs
git clone https://github.com/mcemy/Atividades-de-contrato.git
cd Atividades-de-contrato- Acesse Google Apps Script
- Crie um novo projeto
- Copie o conteúdo dos arquivos:
main.js→ Arquivo principalwebhook→ Handler de webhooks
- Salve o projeto
- No Apps Script, clique em Deploy > New deployment
- Escolha tipo: Web app
- Execute como: Me
- Acesso: Anyone (para receber webhooks)
- Copie a URL do webhook gerada
- Copie
.env.examplepara.env(localmente, para referência) - No Google Apps Script, vá em Project Settings > Script Properties
- Adicione as seguintes propriedades:
| Propriedade | Descrição | Exemplo |
|---|---|---|
PIPEDRIVE_API_TOKEN |
Token da API do Pipedrive | abc123def456... |
PIPEDRIVE_BASE_URL |
URL base da API | https://api.pipedrive.com/v1 |
TIMEZONE |
Fuso horário | America/Sao_Paulo |
ACTIVITY_TYPE_KEY |
Tipo de atividade | escritura |
- Crie uma planilha no Google Sheets
- Copie o ID da planilha (da URL)
- Atualize
SHEET_IDno códigowebhook - As abas
WebhookLogeWebhookErrorsserão criadas automaticamente
- Acesse Configurações > Webhooks
- Crie novo webhook:
- URL: URL do seu Web App
- Eventos:
Deal updated - Status: Ativo
Configure os IDs dos campos customizados no objeto FIELD_KEYS:
const FIELD_KEYS = {
dataTerminoTriagem: 'seu_field_id_aqui',
dataInicioContrato: 'seu_field_id_aqui',
// ... outros campos
};- Webhook recebido: Deal atualizado no Pipedrive
- Verificação: Status mudou para "01. Iniciar"?
- Elegibilidade: Deal possui datas obrigatórias?
- Proteção: Não processado recentemente?
- Criação: Atividades baseadas no cronograma
- Log: Registro completo na planilha
- D+1: Elaborar minuta
- D+2: Revisão gerente parceiro
- D+3: Acompanhar conferência
- D+4: Coletar assinaturas
- D+5: Finalizar assinaturas
- D+6: Alerta de atraso
- D+7: Descumprimento de SLA
- D+1: Iniciar processo
- D+2: Providenciar procurações
- D+3, D+5, D+7: Acompanhar minuta
- D+10, D+12, D+15: Verificar ITBI
- D+16: Marcar videoconferência
- D+18: Acompanhar assinatura
- D+20: Validar e finalizar
- D+25, D+30: Alertas críticos
// Testar negócio específico
testarNegocio(11176);
// Limpar locks em caso de problemas
limparLocks();
// Limpar cache de atividades
limparCacheAtividades();Atividades-de-contrato/
├── main.js # Lógica principal e configurações
├── webhook # Handler de webhooks e proteções
├── .env.example # Template de variáveis de ambiente
├── .gitignore # Arquivos ignorados pelo Git
└── README.md # Documentação
// Executar no Google Apps Script Console
testarNegocio(DEAL_ID); // Testa deal específico
tick(); // Executa processamento completo- WebhookLog: Histórico de processamentos
- WebhookErrors: Erros detalhados com stack trace
- Console Logs: Debug em tempo real
| Problema | Solução |
|---|---|
| Atividades duplicadas | Execute limparCacheAtividades() |
| Webhook não responde | Verifique locks com limparLocks() |
| Campos não encontrados | Valide FIELD_KEYS no Pipedrive |
| Prioridades incorretas | Verifique getPriorityIds_() |
- ⚡ Tempo de resposta: < 3 segundos por webhook
- 🛡️ Taxa de duplicação: < 0.1% com proteções ativas
- 📊 Precisão: 99.9% de atividades criadas corretamente
- 🔄 Uptime: 99.8% de disponibilidade