Conector HubSpot

Conector HubSpot

Conecte seu HubSpot CRM ao Brevo via Tajo para sincronização bidirecional de contatos, rastreamento de negócios, dados de engajamento e automação de marketing unificada entre as duas plataformas.

Visão geral

PropriedadeValor
PlataformaHubSpot
CategoriaCRM
Complexidade de configuraçãoMédia
Integração oficialSim
Dados sincronizadosContatos, Empresas, Negócios, Tickets, Eventos
URL base da APIhttps://api.hubapi.com

Recursos

  • Sincronização bidirecional de contatos - Mantenha contatos em sincronia entre HubSpot e Brevo em tempo real
  • Rastreamento de pipeline de negócios - Sincronize estágios e valores de negócios para segmentação baseada em receita
  • Sincronização de dados de empresa - Associe contatos a registros de empresa e dados firmográficos
  • Integração de tickets - Acompanhe tickets de suporte para pontuação de saúde do cliente
  • Rastreamento de engajamento - Sincronize aberturas de e-mail, cliques, reuniões, chamadas e notas
  • Suporte a objetos personalizados - Mapeie objetos personalizados do HubSpot para atributos do Brevo
  • Gatilhos de workflow - Use mudanças de estágio de ciclo de vida do HubSpot para disparar automações do Brevo
  • Eventos de webhook - Notificações em tempo real para mudanças de dados no CRM

Pré-requisitos

Antes de começar, certifique-se de que você tem:

  1. Uma conta HubSpot (Free, Starter, Professional ou Enterprise)
  2. Um app privado HubSpot ou app OAuth com os escopos necessários
  3. Uma conta Brevo com acesso à API
  4. Uma conta Tajo

Autenticação

Token de acesso de app privado (Recomendado)

Crie um app privado no HubSpot para acesso direto à API com controle granular de escopo.

  1. Acesse HubSpot Settings > Integrations > Private Apps
  2. Crie um novo app privado
  3. Configure os escopos necessários
  4. Copie o token de acesso
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

Use OAuth 2.0 para integrações multi-conta que exigem autorização do usuário.

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

Escopos necessários

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

Configuração

Configuração 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

Mapeamento de campos

Mapeie propriedades do HubSpot para atributos de contato do Brevo:

Mapeamentos padrão

Parameter Type Description
email required
string

E-mail do contato (identificador primário)

firstname optional
string

Mapeia para o atributo FIRSTNAME no Brevo

lastname optional
string

Mapeia para o atributo LASTNAME no Brevo

phone optional
string

Mapeia para o atributo SMS para WhatsApp/SMS

company optional
string

Nome da empresa associada

lifecyclestage optional
string

Estágio de ciclo de vida do HubSpot (subscriber, lead, MQL, SQL, customer)

hs_lead_status optional
string

Status de qualificação do lead

hubspot_owner_id optional
string

ID do responsável de vendas atribuído

Mapeamento de propriedades 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 da API

Objetos de CRM

MétodoEndpointDescrição
GET/crm/v3/objects/contactsListar contatos
POST/crm/v3/objects/contactsCriar um contato
PATCH/crm/v3/objects/contacts/{id}Atualizar um contato
GET/crm/v3/objects/companiesListar empresas
GET/crm/v3/objects/dealsListar negócios
POST/crm/v3/objects/dealsCriar um negócio
GET/crm/v3/objects/ticketsListar tickets

Associações

MétodoEndpointDescrição
GET/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}Obter associações
PUT/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}Criar associação

Engajamentos

MétodoEndpointDescrição
GET/crm/v3/objects/callsListar engajamentos de chamadas
GET/crm/v3/objects/emailsListar engajamentos de e-mail
GET/crm/v3/objects/meetingsListar reuniões
GET/crm/v3/objects/notesListar notas
GET/crm/v3/objects/tasksListar tarefas

Eventos

Eventos de contato

EventoGatilhoCaso de uso
contact.creationNovo contato criadoGatilho de fluxo de boas-vindas
contact.propertyChangePropriedade de contato atualizadaSincronização de atributos
contact.mergeContatos mescladosTratamento de deduplicação
contact.deletionContato excluídoLimpeza no Brevo

Eventos de negócio

EventoGatilhoCaso de uso
deal.creationNovo negócio criadoNotificação de vendas
deal.propertyChangeEstágio do negócio alteradoAutomação de pipeline
deal.deletionNegócio removidoRelatório de receita

Eventos de empresa

EventoGatilhoCaso de uso
company.creationNova empresa adicionadaMarketing baseado em conta
company.propertyChangeDados de empresa atualizadosSincronização firmográfica

Exemplos de código

Inicializar o 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
});

Executar sincronização de contatos

// 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
// }

Tratar 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');
});

Limites de taxa

O HubSpot aplica limites de taxa por app privado ou app OAuth:

PlanoLimite de taxaLimite de burst
Free/Starter100 requisições/10 segundos150 requisições/10 segundos
Professional150 requisições/10 segundos200 requisições/10 segundos
Enterprise200 requisições/10 segundos250 requisições/10 segundos
API add-on200 requisições/10 segundos250 requisições/10 segundos

Limites adicionais:

  • API de busca: 5 requisições/segundo por app
  • Operações em lote: 100 registros por requisição em lote
  • Limite diário: 500.000 requisições/dia (apps OAuth)

Tratamento de limite de taxa

O HubSpot retorna uma resposta 429 Too Many Requests quando os limites são excedidos. Use backoff exponencial e monitore os cabeçalhos X-HubSpot-RateLimit-*.

Solução de problemas

Problemas comuns

ProblemaCausaSolução
401 UnauthorizedToken expirado ou inválidoRegere o token do app privado ou renove o token OAuth
Contato não sincronizadoPropriedade de e-mail ausenteContatos do HubSpot exigem e-mail para sincronizar com o Brevo
Contatos duplicadosSem regra de deduplicaçãoConfigure regras de mesclagem no HubSpot
Webhook não recebidoAssinatura não ativaRegistre novamente as assinaturas de webhook
Propriedade não mapeadaPropriedade personalizada não criadaCrie a propriedade no HubSpot primeiro

Modo de depuração

Habilite o log detalhado:

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

Testar conexão

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

Melhores práticas

  1. Use apps privados em vez de chaves de API - Chaves de API estão obsoletas; use apps privados para melhor segurança
  2. Implemente sincronização bidirecional com cuidado - Evite loops infinitos rastreando a fonte da sincronização
  3. Mapeie estágios de ciclo de vida - Use estágios de ciclo de vida do HubSpot para segmentar contatos no Brevo
  4. Use requisições em lote - Use endpoints em lote para operações em massa para ficar dentro dos limites de taxa
  5. Monitore a entrega de webhooks - Configure lógica de retry e tratamento de dead letter
  6. Use sincronização incremental - Sincronize apenas registros alterados usando a propriedade lastmodifieddate

Segurança

  • Tokens de app privado - Tokens de acesso com escopo e permissões granulares
  • OAuth 2.0 - Autorização padrão de mercado com rotação de refresh token
  • Assinaturas de webhook - Verificação de assinatura baseada em HMAC (v3)
  • Criptografia TLS - Toda comunicação com a API é criptografada em trânsito
  • Permissões com escopo - Acesso de escopo mínimo necessário por integração

Recursos relacionados

Subscribe to updates

developer-docs

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

Assistente AI

Olá! Pergunte-me qualquer coisa sobre a documentação.

Comece grátis com Brevo