Conector Intercom
Conecte seu workspace do Intercom ao Brevo via Tajo para mensageria unificada de clientes, rastreamento de conversas e automação de marketing orientada por engajamento, alimentada pelos seus dados de suporte e produto.
Visão geral
| Propriedade | Valor |
|---|---|
| Plataforma | Intercom |
| Categoria | Suporte |
| Complexidade de configuração | Média |
| Integração oficial | Sim |
| Dados sincronizados | Contatos, Conversas, Empresas, Eventos |
| URL base da API | https://api.intercom.io |
Recursos
- Sincronização de contatos - Sincronização bidirecional de usuários e leads do Intercom com contatos do Brevo
- Rastreamento de conversas - Sincronize dados de conversas para segmentação orientada por suporte
- Mapeamento de empresas - Associe contatos com empresas para workflows baseados em contas
- Atributos personalizados - Mapeie atributos personalizados do Intercom para campos de contato do Brevo
- Rastreamento de eventos - Sincronize eventos personalizados e atividades de usuário para segmentação comportamental
- Sincronização de tags - Mapeie tags do Intercom para membros de listas ou atributos do Brevo
- Dados do Messenger - Rastreie engajamento de mensageria in-app e interações de chat
- Integração com agente de IA - Sincronize resultados de conversas de agentes de IA com o Brevo
Pré-requisitos
Antes de começar, certifique-se de ter:
- Um workspace do Intercom (plano Starter, Pro ou Premium)
- Um app Intercom com token de acesso (app privado) ou OAuth configurado (app público)
- Uma conta Brevo com acesso à API
- Uma conta Tajo
Autenticação
Token de acesso (App privado)
Para integrações privadas que acessam os dados do seu próprio workspace.
- Vá até Developer Hub > Your Apps > Create new app
- Associe com seu workspace do Intercom
- Copie o token de acesso
curl https://api.intercom.io/contacts \ -H "Authorization: Bearer {access_token}" \ -H "Content-Type: application/json" \ -H "Intercom-Version: 2.11"OAuth 2.0 (App público)
Para integrações que acessam dados do Intercom de outros clientes.
# Authorization URLhttps://app.intercom.com/oauth?client_id={client_id}&state={state}
# Token exchangecurl -X POST https://api.intercom.io/auth/eagle/token \ -d "client_id={client_id}" \ -d "client_secret={client_secret}" \ -d "code={auth_code}"Versionamento da API
Sempre inclua o cabeçalho Intercom-Version em suas requisições. O Tajo usa a versão 2.11 da API por padrão. Consulte o changelog do Intercom para verificar mudanças que quebram a compatibilidade.
Configuração
Configuração básica
connectors: intercom: enabled: true access_token: "${INTERCOM_ACCESS_TOKEN}" api_version: "2.11"
# Data sync options sync: contacts: true conversations: true companies: true events: true tags: true
# Sync direction direction: intercom_to_brevo
# Brevo list assignment lists: all_users: 35 active_conversations: 36 leads: 37Mapeamento de campos
Mapeie dados de contato do Intercom para atributos de contato do Brevo:
Default Mappings
| Parameter | Type | Description |
|---|---|---|
email required | string | Endereço de e-mail do contato (identificador único) |
name optional | string | Nome completo, dividido em FIRSTNAME/LASTNAME |
phone optional | string | Mapeia para o atributo SMS para WhatsApp/SMS |
role optional | string | Tipo de contato: user ou lead |
company.name optional | string | Nome da empresa associada |
signed_up_at optional | timestamp | Data de cadastro do usuário |
last_seen_at optional | timestamp | Timestamp da última atividade |
custom_attributes optional | object | Pares chave-valor de atributos personalizados |
Mapeamento de atributos personalizados
field_mapping: # Standard fields email: email name: FULLNAME phone: SMS
# Engagement fields signed_up_at: SIGNUP_DATE last_seen_at: LAST_ACTIVE session_count: SESSION_COUNT unsubscribed_from_emails: UNSUBSCRIBED
# Company fields company.name: COMPANY_NAME company.plan: COMPANY_PLAN company.size: COMPANY_SIZE
# Custom attributes custom_attributes.plan_tier: PLAN_TIER custom_attributes.feature_usage: FEATURE_USAGEEndpoints da API
API de Contatos
| Método | Endpoint | Descrição |
|---|---|---|
GET | /contacts | Listar todos os contatos |
POST | /contacts | Criar um contato |
PUT | /contacts/{id} | Atualizar um contato |
GET | /contacts/{id} | Obter um contato |
POST | /contacts/search | Buscar contatos |
DELETE | /contacts/{id} | Arquivar um contato |
API de Conversas
| Método | Endpoint | Descrição |
|---|---|---|
GET | /conversations | Listar conversas |
GET | /conversations/{id} | Obter uma conversa |
POST | /conversations | Criar uma conversa |
POST | /conversations/{id}/reply | Responder a uma conversa |
POST | /conversations/{id}/parts | Adicionar parte à conversa |
API de Empresas
| Método | Endpoint | Descrição |
|---|---|---|
GET | /companies | Listar empresas |
POST | /companies | Criar ou atualizar uma empresa |
GET | /companies/{id} | Obter uma empresa |
GET | /companies/{id}/contacts | Listar contatos da empresa |
API de Eventos
| Método | Endpoint | Descrição |
|---|---|---|
POST | /events | Enviar um evento |
GET | /events?type=user&intercom_user_id={id} | Listar eventos do usuário |
Eventos
Eventos de conversa
| Evento | Gatilho | Caso de uso |
|---|---|---|
conversation.created | Nova conversa iniciada | Alerta de ticket de suporte |
conversation.closed | Conversa resolvida | Disparo de pesquisa CSAT |
conversation.rating.added | Avaliação enviada | Rastreamento de satisfação |
conversation.snoozed | Conversa adiada | Agendamento de follow-up |
Eventos de contato
| Evento | Gatilho | Caso de uso |
|---|---|---|
contact.created | Novo contato adicionado | Sequência de boas-vindas |
contact.updated | Dados do contato alterados | Sincronização de atributos |
contact.deleted | Contato arquivado | Limpeza |
contact.tag.created | Tag adicionada ao contato | Atualização de segmento |
Eventos de usuário
| Evento | Gatilho | Caso de uso |
|---|---|---|
user.created | Novo usuário cadastrado | Fluxo de onboarding |
user.email.updated | E-mail alterado | Mesclagem de contato |
user.unsubscribed | Cancelou inscrição de e-mails | Atualização de preferências |
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 Intercomawait tajo.connectors.connect('intercom', { accessToken: process.env.INTERCOM_ACCESS_TOKEN, apiVersion: '2.11'});Sincronizar contatos e conversas
// Full sync of contacts and conversation dataawait tajo.connectors.sync('intercom', { type: 'full', resources: ['contacts', 'conversations', 'companies'], since: '2023-01-01'});
// Check sync statusconst status = await tajo.connectors.status('intercom');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// contactsSynced: 14200,// conversationsSynced: 28400,// companiesSynced: 2100// }Tratar webhooks do Intercom
import crypto from 'crypto';
app.post('/webhooks/intercom', async (req, res) => { const signature = req.get('X-Hub-Signature'); const expectedSig = 'sha1=' + crypto .createHmac('sha1', process.env.INTERCOM_CLIENT_SECRET) .update(JSON.stringify(req.body)) .digest('hex');
if (signature !== expectedSig) { return res.status(401).send('Unauthorized'); }
await tajo.connectors.handleWebhook('intercom', { topic: req.body.topic, data: req.body.data });
res.status(200).send('OK');});Limites de taxa
O Intercom aplica limites de taxa com base no seu plano:
| Plano | Limite de taxa | Detalhes |
|---|---|---|
| Starter | 20 requisições/10 segundos | Por app |
| Pro | 50 requisições/10 segundos | Por app |
| Premium | 100 requisições/10 segundos | Por app |
| Endpoint de busca | 1 requisição/segundo | Por app |
| Endpoint de scroll | 1 requisição/minuto | Por app |
Limites adicionais:
- Operações em lote: 15 contatos por requisição em lote
- Envios de evento: 500 eventos/segundo por workspace
- Entrega de webhook: Retry automático por 24 horas
- Exportação de dados: 1 exportação concorrente
Resposta de limite de taxa
O Intercom retorna 429 Too Many Requests com um cabeçalho Retry-After. Implemente backoff exponencial e respeite a janela de retry.
Solução de problemas
Problemas comuns
| Problema | Causa | Solução |
|---|---|---|
| 401 Unauthorized | Token inválido ou expirado | Regere o token de acesso no Developer Hub |
| Contato não sincronizado | Campo de e-mail ausente | Leads do Intercom podem não ter e-mail; filtre por role |
| Dados de conversa vazios | App sem escopo de conversa | Reautorize com permissões de leitura de conversas |
| Webhook não recebido | Webhook não registrado | Configure webhooks nas configurações do Developer Hub |
| Incompatibilidade de versão da API | Mudanças que quebram compatibilidade na nova versão | Fixe a versão da API com o cabeçalho Intercom-Version |
Modo de depuração
Habilite logs detalhados:
connectors: intercom: debug: true log_level: verbose log_webhooks: trueTestar conexão
tajo connectors test intercom# ✓ API connection successful# ✓ Contacts readable# ✓ Conversations readable# ✓ Companies readable# ✓ Webhooks registeredMelhores práticas
- Fixe a versão da API - Sempre especifique
Intercom-Versionpara evitar mudanças que quebram compatibilidade - Use a API de busca com eficiência - Use filtros e paginação para reduzir a transferência de dados
- Sincronize usuários e leads - Capture o funil completo no Brevo
- Mapeie tags de conversa - Use tags de conversa para segmentos de marketing pós-suporte
- Rastreie eventos personalizados - Envie eventos-chave de produto para o Intercom para segmentação comportamental
- Trate mesclagens de contato - Implemente lógica de mesclagem para contatos duplicados
Segurança
- Token de acesso - Autenticação Bearer token para apps privados
- OAuth 2.0 - Autorização delegada para apps públicos com client secret
- Verificação de webhook - Validação de assinatura HMAC SHA-1 via
X-Hub-Signature - Criptografia TLS - Toda comunicação com a API é criptografada via HTTPS
- Controles de acesso a dados - Acesso granular a dados por configuração de app