Conector de Pipedrive
Conector de Pipedrive
Conecta Pipedrive con Brevo a través de Tajo para unir tu pipeline de ventas con la automatización de marketing. Sincroniza contactos, negocios, organizaciones y actividades para impulsar campañas de ciclo de vida activadas por los cambios de etapa en el CRM.
Resumen
| Propiedad | Valor |
|---|---|
| Plataforma | Pipedrive |
| Categoría | CRM |
| Complejidad de configuración | Fácil |
| Integración oficial | No |
| Datos sincronizados | Personas, Negocios, Organizaciones, Actividades |
| Skills disponibles | 8 |
Funcionalidades
- Sincronización de contactos - Sincronización bidireccional de personas de Pipedrive con contactos de Brevo
- Seguimiento de etapas de negocios - Activa automatizaciones en Brevo a partir de cambios de etapa en el pipeline
- Sincronización de organizaciones - Asocia organizaciones de Pipedrive con atributos de empresa en Brevo
- Seguimiento de actividades - Reenvía las actividades de Pipedrive (llamadas, emails, reuniones) como eventos de Brevo
- Campos personalizados - Asocia campos personalizados de Pipedrive con atributos de contacto en Brevo
- Reportes del pipeline - Extrae datos del pipeline de negocios para la atribución de marketing
- Sincronización de leads - Importa leads de Pipedrive a Brevo para campañas de nutrición
- Automatización vía webhooks - Actualizaciones en tiempo real mediante los webhooks de Pipedrive
Requisitos previos
Antes de empezar, asegúrate de tener:
- Una cuenta de Pipedrive con acceso de administrador
- Tu token de API de Pipedrive (lo encuentras en Settings > Personal preferences > API)
- Para apps OAuth: una app de Pipedrive registrada con Client ID y Client Secret
- Una cuenta de Brevo con acceso a la API
- Una cuenta de Tajo con credenciales de API
Autenticación
Token de API
El método de autenticación más sencillo. Encuentra tu token de API en Pipedrive en Settings > Personal preferences > API.
curl "https://api.pipedrive.com/v1/persons?api_token=YOUR_API_TOKEN"OAuth 2.0 (recomendado para apps)
Para aplicaciones en producción, usa 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"Tras obtener el token de acceso:
curl "https://api.pipedrive.com/v1/persons" \ -H "Authorization: Bearer ACCESS_TOKEN"Configuración
Configuración 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: 63Asignación de campos de persona
Asocia los campos de persona de Pipedrive con los atributos de contacto de 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_SIZEAsignación de etapas de negocios
Asocia las etapas del pipeline de Pipedrive con las listas de 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 listConfiguración de webhooks
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 de la API
| Método | Endpoint | Descripción |
|---|---|---|
GET | /v1/persons | Listar personas |
POST | /v1/persons | Crear una persona |
PUT | /v1/persons/{id} | Actualizar una persona |
DELETE | /v1/persons/{id} | Eliminar una persona |
GET | /v1/deals | Listar negocios |
POST | /v1/deals | Crear un negocio |
PUT | /v1/deals/{id} | Actualizar un negocio |
GET | /v1/organizations | Listar organizaciones |
POST | /v1/organizations | Crear una organización |
GET | /v1/activities | Listar actividades |
POST | /v1/activities | Crear una actividad |
GET | /v1/leads | Listar leads |
GET | /v1/pipelines | Listar pipelines |
GET | /v1/stages | Listar etapas del pipeline |
GET | /v1/itemSearch | Búsqueda global entre elementos |
POST | /v1/webhooks | Crear un webhook |
GET | /v1/recents | Obtener los últimos elementos modificados |
Ejemplos de código
Inicializar el conector de 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 personas con 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 }Seguimiento de cambios de etapa en negocios
// 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');});Búsqueda global en 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 organizationsLímites de velocidad
| Plan | Límite | Detalles |
|---|---|---|
| Essential | 80 peticiones/10 s | Por token de API |
| Advanced | 100 peticiones/10 s | Por token de API |
| Professional | 200 peticiones/10 s | Por token de API |
| Power | 200 peticiones/10 s | Por token de API |
| Enterprise | 400 peticiones/10 s | Por token de API |
| Apps OAuth | 80 peticiones/2 s | Por token de acceso |
Límites adicionales:
| Recurso | Límite |
|---|---|
| Por página | 500 registros máx. |
| Webhooks | 40 por cuenta |
| Eliminación masiva | 100 elementos/petición |
| Búsqueda | Límites estándar |
Cabeceras de límites de velocidad
Pipedrive devuelve las cabeceras X-RateLimit-Limit, X-RateLimit-Remaining y X-RateLimit-Reset. Aplica backoff cuando X-RateLimit-Remaining se acerque a cero.
Resolución de problemas
| Problema | Causa | Solución |
|---|---|---|
401 Unauthorized | Token de API no válido | Regenera el token en Pipedrive Settings > API |
403 Forbidden | Permisos de la cuenta | Asegúrate de que la cuenta tenga acceso de administrador para la API |
| Personas sin email | Sin email en el registro | Filtra las personas con email válido antes de sincronizar |
| Campos personalizados sin asignar | Clave de campo incorrecta | Usa la clave (hash) del campo de Pipedrive, no el nombre visible |
| Webhooks no recibidos | Firewall bloqueando | Asegúrate de que la URL del webhook sea accesible públicamente por HTTPS |
| Personas duplicadas | Registros con emails repetidos | Usa la API de fusión de Pipedrive antes de sincronizar |
429 Too Many Requests | Límite de velocidad superado | Aplica backoff usando la cabecera X-RateLimit-Reset |
Buenas prácticas
- Usa OAuth en producción - Prefiere OAuth 2.0 frente a tokens de API en aplicaciones en producción
- Rastrea los cambios de etapa de negocios - Usa webhooks para activar automatizaciones en Brevo en las transiciones del pipeline
- Asocia campos personalizados - Usa las claves (no los nombres) de los campos personalizados de Pipedrive para un mapeo fiable
- Gestiona la paginación - Usa los parámetros
startylimit; compruebamore_items_in_collection - Usa el endpoint Recents - Consulta
/v1/recentspara sincronizaciones incrementales en lugar de exportaciones completas - Deduplica antes de sincronizar - Fusiona personas duplicadas en Pipedrive antes de sincronizarlas con Brevo
- Usa cuentas sandbox - Crea una cuenta de desarrollador sandbox para probar integraciones
Seguridad
- Autenticación por token de API - Acceso sencillo basado en tokens para uso personal
- OAuth 2.0 - Acceso delegado seguro para aplicaciones de terceros
- Solo HTTPS - Toda la comunicación con la API requiere cifrado TLS
- Webhooks HTTPS - Los webhooks solo se entregan a endpoints HTTPS
- Acceso basado en roles - Los permisos de Pipedrive respetan los roles de usuario
- Certificado SOC 2 - Pipedrive mantiene el cumplimiento SOC 2
- Cumplimiento del RGPD - Admite solicitudes de exportación y eliminación de datos