Conector de HubSpot

Conector de HubSpot

Conecta tu CRM de HubSpot con Brevo a través de Tajo para sincronizar contactos de forma bidireccional, hacer seguimiento de negocios, compartir datos de interacción y automatizar el marketing de forma unificada entre ambas plataformas.

Resumen

PropiedadValor
PlataformaHubSpot
CategoríaCRM
Complejidad de configuraciónMedia
Integración oficial
Datos sincronizadosContactos, Empresas, Negocios, Tickets, Eventos
URL base de la APIhttps://api.hubapi.com

Funcionalidades

  • Sincronización bidireccional de contactos - Mantén los contactos sincronizados entre HubSpot y Brevo en tiempo real
  • Seguimiento del pipeline de ventas - Sincroniza etapas de negocios y valores para segmentar por ingresos
  • Sincronización de datos de empresas - Asocia contactos con registros de empresas y datos firmográficos
  • Integración de tickets - Haz seguimiento de tickets de soporte para evaluar la salud del cliente
  • Seguimiento de interacciones - Sincroniza aperturas de email, clics, reuniones, llamadas y notas
  • Soporte de objetos personalizados - Asocia objetos personalizados de HubSpot con atributos de Brevo
  • Activadores de workflows - Usa los cambios de etapa del ciclo de vida en HubSpot para disparar automatizaciones en Brevo
  • Eventos de webhook - Notificaciones en tiempo real sobre cambios en los datos del CRM

Requisitos previos

Antes de empezar, asegúrate de tener:

  1. Una cuenta de HubSpot (Free, Starter, Professional o Enterprise)
  2. Una app privada o app OAuth de HubSpot con los scopes necesarios
  3. Una cuenta de Brevo con acceso a la API
  4. Una cuenta de Tajo

Autenticación

Token de acceso de app privada (recomendado)

Crea una app privada en HubSpot para acceso directo a la API con control granular de scopes.

  1. Ve a Configuración de HubSpot > Integraciones > Apps privadas
  2. Crea una nueva app privada
  3. Configura los scopes necesarios
  4. Copia el token de acceso
Terminal window
curl -X GET "https://api.hubapi.com/crm/v3/objects/contacts" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json"

OAuth 2.0

Usa OAuth 2.0 para integraciones multicuenta que requieran autorización del usuario.

Terminal window
# Authorization URL
https://app.hubspot.com/oauth/authorize?client_id={client_id}&scope=crm.objects.contacts.read&redirect_uri={redirect_uri}

Scopes necesarios

crm.objects.contacts.read
crm.objects.contacts.write
crm.objects.companies.read
crm.objects.deals.read
crm.objects.deals.write
crm.objects.custom.read
crm.schemas.custom.read

Configuración

Configuración básica

connectors:
hubspot:
enabled: true
access_token: "${HUBSPOT_ACCESS_TOKEN}"
# Data sync options
sync:
contacts: true
companies: true
deals: true
tickets: true
engagements: true
# Sync direction
direction: bidirectional # or 'hubspot_to_brevo' | 'brevo_to_hubspot'
# List assignment in Brevo
lists:
all_contacts: 10
qualified_leads: 11
customers: 12

Asignación de campos

Asocia las propiedades de HubSpot con los atributos de contacto de Brevo:

Asignaciones por defecto

Parameter Type Description
email required
string

Correo electrónico del contacto (identificador principal)

firstname optional
string

Se asigna al atributo FIRSTNAME en Brevo

lastname optional
string

Se asigna al atributo LASTNAME en Brevo

phone optional
string

Se asigna al atributo SMS para WhatsApp/SMS

company optional
string

Nombre de la empresa asociada

lifecyclestage optional
string

Etapa del ciclo de vida en HubSpot (subscriber, lead, MQL, SQL, customer)

hs_lead_status optional
string

Estado de calificación del lead

hubspot_owner_id optional
string

ID del responsable de ventas asignado

Asignación de propiedades personalizadas

field_mapping:
# Standard fields
email: email
firstname: FIRSTNAME
lastname: LASTNAME
phone: SMS
# CRM fields
lifecyclestage: LIFECYCLE_STAGE
hs_lead_status: LEAD_STATUS
company: COMPANY_NAME
# Deal metrics
hs_total_deal_value: DEAL_VALUE
num_associated_deals: DEAL_COUNT
# Custom properties
preferred_channel: PREFERRED_CHANNEL
customer_segment: SEGMENT

Endpoints de la API

Objetos del CRM

MétodoEndpointDescripción
GET/crm/v3/objects/contactsListar contactos
POST/crm/v3/objects/contactsCrear un contacto
PATCH/crm/v3/objects/contacts/{id}Actualizar un contacto
GET/crm/v3/objects/companiesListar empresas
GET/crm/v3/objects/dealsListar negocios
POST/crm/v3/objects/dealsCrear un negocio
GET/crm/v3/objects/ticketsListar tickets

Asociaciones

MétodoEndpointDescripción
GET/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}Obtener asociaciones
PUT/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}Crear asociación

Interacciones

MétodoEndpointDescripción
GET/crm/v3/objects/callsListar llamadas registradas
GET/crm/v3/objects/emailsListar emails registrados
GET/crm/v3/objects/meetingsListar reuniones
GET/crm/v3/objects/notesListar notas
GET/crm/v3/objects/tasksListar tareas

Eventos

Eventos de contactos

EventoDisparadorCaso de uso
contact.creationNuevo contacto creadoDisparar flujo de bienvenida
contact.propertyChangePropiedad del contacto actualizadaSincronización de atributos
contact.mergeContactos fusionadosGestión de duplicados
contact.deletionContacto eliminadoLimpieza en Brevo

Eventos de negocios

EventoDisparadorCaso de uso
deal.creationNuevo negocio creadoNotificación comercial
deal.propertyChangeCambio de etapa del negocioAutomatización del pipeline
deal.deletionNegocio eliminadoReporte de ingresos

Eventos de empresas

EventoDisparadorCaso de uso
company.creationNueva empresa añadidaMarketing basado en cuentas
company.propertyChangeDatos de la empresa actualizadosSincronización firmográfica

Ejemplos de código

Inicializar el conector

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
// Connect HubSpot
await tajo.connectors.connect('hubspot', {
accessToken: process.env.HUBSPOT_ACCESS_TOKEN
});

Ejecutar la sincronización de contactos

// Full bidirectional sync
await tajo.connectors.sync('hubspot', {
type: 'full',
resources: ['contacts', 'companies', 'deals'],
direction: 'bidirectional',
since: '2023-01-01'
});
// Check sync status
const status = await tajo.connectors.status('hubspot');
console.log(status);
// {
// connected: true,
// lastSync: '2024-01-15T10:30:00Z',
// contactsSynced: 34200,
// companiesSynced: 5100,
// dealsSynced: 2340
// }

Gestionar eventos de webhook

// Handle HubSpot webhook notifications
app.post('/webhooks/hubspot', async (req, res) => {
const signature = req.get('X-HubSpot-Signature-v3');
// Verify webhook signature
if (!verifyHubSpotSignature(req.body, signature)) {
return res.status(401).send('Unauthorized');
}
for (const event of req.body) {
await tajo.connectors.handleWebhook('hubspot', {
eventType: event.subscriptionType,
objectId: event.objectId,
propertyName: event.propertyName,
propertyValue: event.propertyValue
});
}
res.status(200).send('OK');
});

Límites de velocidad

HubSpot aplica límites de velocidad por app privada o app OAuth:

PlanLímite de velocidadLímite de ráfaga
Free/Starter100 peticiones/10 segundos150 peticiones/10 segundos
Professional150 peticiones/10 segundos200 peticiones/10 segundos
Enterprise200 peticiones/10 segundos250 peticiones/10 segundos
Complemento de API200 peticiones/10 segundos250 peticiones/10 segundos

Límites adicionales:

  • API de búsqueda: 5 peticiones/segundo por app
  • Operaciones en lote: 100 registros por petición
  • Límite diario: 500.000 peticiones/día (apps OAuth)

Gestión de límites de velocidad

HubSpot devuelve una respuesta 429 Too Many Requests cuando se superan los límites. Usa backoff exponencial y monitoriza las cabeceras X-HubSpot-RateLimit-*.

Resolución de problemas

Problemas habituales

ProblemaCausaSolución
401 UnauthorizedToken expirado o no válidoRegenera el token de la app privada o refresca el token OAuth
Contacto no sincronizadoFalta la propiedad emailLos contactos de HubSpot necesitan email para sincronizarse con Brevo
Contactos duplicadosSin regla de deduplicaciónConfigura reglas de fusión en HubSpot
Webhook no recibidoSuscripción inactivaVuelve a registrar las suscripciones de webhook
Propiedad sin asignarPropiedad personalizada no creadaCrea primero la propiedad en HubSpot

Modo depuración

Activa el registro detallado:

connectors:
hubspot:
debug: true
log_level: verbose
log_webhooks: true

Probar la conexión

Terminal window
tajo connectors test hubspot
# ✓ API connection successful
# ✓ Contacts readable
# ✓ Companies readable
# ✓ Deals readable
# ✓ Webhooks registered

Buenas prácticas

  1. Usa apps privadas en lugar de claves de API - Las claves de API están obsoletas; usa apps privadas para mayor seguridad
  2. Implementa la sincronización bidireccional con cuidado - Evita bucles infinitos rastreando el origen de la sincronización
  3. Asocia las etapas del ciclo de vida - Usa las etapas del ciclo de vida de HubSpot para segmentar contactos en Brevo
  4. Agrupa las peticiones a la API - Usa los endpoints de lote para operaciones masivas y respetar los límites
  5. Supervisa la entrega de webhooks - Configura lógica de reintentos y gestión de dead letters
  6. Usa sincronización incremental - Sincroniza solo los registros modificados usando la propiedad lastmodifieddate

Seguridad

  • Tokens de apps privadas - Tokens de acceso con permisos granulares
  • OAuth 2.0 - Autorización estándar del sector con rotación de refresh tokens
  • Firmas de webhooks - Verificación de firma basada en HMAC (v3)
  • Cifrado TLS - Toda la comunicación con la API está cifrada en tránsito
  • Permisos con scope - Acceso con los scopes mínimos necesarios por integración

Recursos relacionados

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

Asistente AI

¡Hola! Pregúntame lo que quieras sobre la documentación.

Empieza gratis con Brevo