Conector Pipedrive
Conector Pipedrive
Conecte o Pipedrive ao Brevo através do Tajo para unir seu pipeline de vendas com a automação de marketing. Sincronize contatos, negócios, organizações e atividades para alimentar campanhas de ciclo de vida disparadas por mudanças de estágio no CRM.
Visão geral
| Propriedade | Valor |
|---|---|
| Plataforma | Pipedrive |
| Categoria | CRM |
| Complexidade de configuração | Fácil |
| Integração oficial | Não |
| Dados sincronizados | Pessoas, Negócios, Organizações, Atividades |
| Skills disponíveis | 8 |
Recursos
- Sincronização de contatos - Sincronização bidirecional de pessoas do Pipedrive para contatos do Brevo
- Rastreamento de estágio de negócio - Dispare automações do Brevo com base em mudanças de estágio do pipeline
- Sincronização de organizações - Mapeie organizações do Pipedrive para atributos de empresa do Brevo
- Rastreamento de atividades - Encaminhe atividades do Pipedrive (chamadas, e-mails, reuniões) como eventos do Brevo
- Campos personalizados - Mapeie campos personalizados do Pipedrive para atributos de contato do Brevo
- Relatórios de pipeline - Puxe dados do pipeline de negócios para atribuição de marketing
- Sincronização de leads - Importe leads do Pipedrive para o Brevo para campanhas de nutrição
- Automação de webhook - Atualizações em tempo real via webhooks do Pipedrive
Pré-requisitos
Antes de começar, certifique-se de que você tem:
- Uma conta Pipedrive com acesso de administrador
- Seu token de API do Pipedrive (encontrado em Settings > Personal preferences > API)
- Para apps OAuth: um app Pipedrive registrado com Client ID e Client Secret
- Uma conta Brevo com acesso à API
- Uma conta Tajo com credenciais de API
Autenticação
Token de API
O método de autenticação mais simples. Encontre seu token de API no Pipedrive em Settings > Personal preferences > API.
curl "https://api.pipedrive.com/v1/persons?api_token=YOUR_API_TOKEN"OAuth 2.0 (Recomendado para apps)
Para aplicações em produção, use OAuth 2.0:
# Authorization URLhttps://oauth.pipedrive.com/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI
# Token exchangecurl -X POST https://oauth.pipedrive.com/oauth/token \ -d "grant_type=authorization_code" \ -d "code=AUTH_CODE" \ -d "redirect_uri=REDIRECT_URI" \ -u "CLIENT_ID:CLIENT_SECRET"Após obter o token de acesso:
curl "https://api.pipedrive.com/v1/persons" \ -H "Authorization: Bearer ACCESS_TOKEN"Configuração
Configuração básica
connectors: pipedrive: enabled: true api_token: "your-pipedrive-api-token" company_domain: "yourcompany" # yourcompany.pipedrive.com
# Data sync options sync: persons: true deals: true organizations: true activities: true leads: true
# Brevo list assignment lists: all_contacts: 60 qualified_leads: 61 customers: 62 churned: 63Mapeamento de campos de pessoa
Mapeie campos de pessoa do Pipedrive para atributos de contato do Brevo:
person_mapping: email: email name: FULLNAME first_name: FIRSTNAME last_name: LASTNAME phone: SMS org_id.name: COMPANY
# Deal-related computed fields won_deals_count: WON_DEALS lost_deals_count: LOST_DEALS open_deals_count: OPEN_DEALS closed_deals_count: CLOSED_DEALS total_revenue: LTV
# Custom fields (use Pipedrive field key) custom_fields.lead_source: LEAD_SOURCE custom_fields.industry: INDUSTRY custom_fields.company_size: COMPANY_SIZEMapeamento de estágios de negócio
Mapeie estágios de pipeline do Pipedrive para atribuições de listas do Brevo:
deal_stage_mapping: # stage_id -> brevo_list_id 1: 61 # Lead In 2: 61 # Contact Made 3: 62 # Proposal Made 4: 62 # Negotiations Started "won": 63 # Won -> Customers list "lost": 64 # Lost -> Win-back listConfiguração de webhook
webhooks: - event_action: "added" event_object: "person" brevo_event: "contact_created" - event_action: "updated" event_object: "person" brevo_event: "contact_updated" - event_action: "added" event_object: "deal" brevo_event: "deal_created" - event_action: "updated" event_object: "deal" brevo_event: "deal_updated" - event_action: "merged" event_object: "person" brevo_event: "contact_merged" - event_action: "added" event_object: "activity" brevo_event: "activity_logged"Endpoints da API
| Método | Endpoint | Descrição |
|---|---|---|
GET | /v1/persons | Listar pessoas |
POST | /v1/persons | Criar uma pessoa |
PUT | /v1/persons/{id} | Atualizar uma pessoa |
DELETE | /v1/persons/{id} | Excluir uma pessoa |
GET | /v1/deals | Listar negócios |
POST | /v1/deals | Criar um negócio |
PUT | /v1/deals/{id} | Atualizar um negócio |
GET | /v1/organizations | Listar organizações |
POST | /v1/organizations | Criar uma organização |
GET | /v1/activities | Listar atividades |
POST | /v1/activities | Criar uma atividade |
GET | /v1/leads | Listar leads |
GET | /v1/pipelines | Listar pipelines |
GET | /v1/stages | Listar estágios do pipeline |
GET | /v1/itemSearch | Buscar em todos os itens |
POST | /v1/webhooks | Criar um webhook |
GET | /v1/recents | Obter itens modificados recentemente |
Exemplos de código
Inicializar o conector Pipedrive
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Pipedrive accountawait tajo.connectors.connect('pipedrive', { apiToken: process.env.PIPEDRIVE_API_TOKEN, companyDomain: 'yourcompany'});Sincronizar pessoas para o Brevo
// Fetch persons from Pipedriveconst response = await fetch( `https://api.pipedrive.com/v1/persons?start=0&limit=100&api_token=${API_TOKEN}`);
const { data, additional_data } = await response.json();// data: [{ id, name, first_name, last_name, email, phone, org_id, ... }]// additional_data.pagination: { start, limit, more_items_in_collection }Rastrear mudanças de estágio de negócio
// Webhook handler for deal updatesapp.post('/webhooks/pipedrive', async (req, res) => { const { meta, current, previous } = req.body;
if (meta.object === 'deal' && meta.action === 'updated') { // Detect stage change if (current.stage_id !== previous.stage_id) { await tajo.connectors.handleWebhook('pipedrive', { topic: 'deal.stage_changed', payload: { dealId: current.id, dealTitle: current.title, previousStage: previous.stage_id, newStage: current.stage_id, personId: current.person_id, value: current.value, currency: current.currency } }); } }
res.status(200).send('OK');});Buscar no Pipedrive
// Global search across persons, deals, and organizationsconst response = await fetch( `https://api.pipedrive.com/v1/itemSearch?term=${query}&item_types=person,deal&api_token=${API_TOKEN}`);
const { data } = await response.json();// Returns matching persons, deals, and organizationsLimites de taxa
| Plano | Limite | Detalhes |
|---|---|---|
| Essential | 80 requisições/10 seg | Por token de API |
| Advanced | 100 requisições/10 seg | Por token de API |
| Professional | 200 requisições/10 seg | Por token de API |
| Power | 200 requisições/10 seg | Por token de API |
| Enterprise | 400 requisições/10 seg | Por token de API |
| Apps OAuth | 80 requisições/2 seg | Por token de acesso |
Limites adicionais:
| Recurso | Limite |
|---|---|
| Por página | 500 registros no máximo |
| Webhooks | 40 por conta |
| Exclusão em massa | 100 itens/requisição |
| Busca | Limites de taxa padrão |
Cabeçalhos de limite de taxa
O Pipedrive retorna os cabeçalhos X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset. Implemente backoff quando X-RateLimit-Remaining se aproximar de zero.
Solução de problemas
| Problema | Causa | Solução |
|---|---|---|
401 Unauthorized | Token de API inválido | Regere o token em Pipedrive Settings > API |
403 Forbidden | Permissões de conta | Garanta que a conta tenha acesso de administrador para uso da API |
| Pessoas sem e-mail | Sem e-mail no registro | Filtre pessoas com e-mail válido antes de sincronizar |
| Campos personalizados não mapeiam | Chave de campo errada | Use a chave do campo do Pipedrive (hash), não o nome de exibição |
| Webhooks não recebidos | Firewall bloqueando | Garanta que a URL do webhook seja publicamente acessível por HTTPS |
| Pessoas duplicadas | Múltiplos registros de e-mail | Use a API de mesclagem do Pipedrive antes de sincronizar |
429 Too Many Requests | Limite de taxa excedido | Implemente backoff usando o cabeçalho X-RateLimit-Reset |
Melhores práticas
- Use OAuth para produção - Prefira OAuth 2.0 em vez de tokens de API para aplicações em produção
- Acompanhe mudanças de estágio de negócio - Use webhooks para disparar automações do Brevo nas transições de estágio do pipeline
- Mapeie campos personalizados - Use as chaves de campos personalizados do Pipedrive (não os nomes) para mapeamento confiável
- Trate a paginação - Use os parâmetros
startelimit; verifiquemore_items_in_collection - Use o endpoint Recents - Consulte
/v1/recentspara sincronizações incrementais em vez de exportações completas - Deduplique antes de sincronizar - Mescle pessoas duplicadas no Pipedrive antes de sincronizar com o Brevo
- Use contas sandbox - Crie uma conta sandbox de desenvolvedor para testar integrações
Segurança
- Autenticação por token de API - Acesso baseado em token simples para uso pessoal
- OAuth 2.0 - Acesso delegado seguro para aplicações de terceiros
- Somente HTTPS - Toda comunicação com a API exige criptografia TLS
- Webhooks HTTPS - Webhooks são entregues apenas a endpoints HTTPS
- Acesso baseado em função - Permissões do Pipedrive respeitam funções de usuário
- Certificação SOC 2 - O Pipedrive mantém conformidade SOC 2
- Conformidade com GDPR - Suporta solicitações de exportação e exclusão de dados