Connettore Intercom
Collega il tuo workspace Intercom a Brevo tramite Tajo per messaggistica cliente unificata, tracciamento delle conversazioni e marketing automation guidata dall’engagement, alimentata dai tuoi dati di supporto e di prodotto.
Panoramica
| Proprietà | Valore |
|---|---|
| Piattaforma | Intercom |
| Categoria | Supporto |
| Complessità di setup | Media |
| Integrazione ufficiale | Sì |
| Dati sincronizzati | Contatti, Conversazioni, Aziende, Eventi |
| API Base URL | https://api.intercom.io |
Funzionalità
- Sync dei contatti - Sync bidirezionale di utenti e lead Intercom con i contatti Brevo
- Tracciamento conversazioni - Sincronizza i dati delle conversazioni per la segmentazione guidata dal supporto
- Mappatura aziende - Associa i contatti alle aziende per workflow account-based
- Attributi personalizzati - Mappa gli attributi personalizzati Intercom ai campi di contatto Brevo
- Tracciamento eventi - Sincronizza eventi personalizzati e attività utente per il targeting comportamentale
- Sync dei tag - Mappa i tag Intercom ad appartenenze a liste o attributi Brevo
- Dati Messenger - Traccia l’engagement della messaggistica in-app e le interazioni chat
- Integrazione AI agent - Sincronizza gli esiti delle conversazioni dell’AI agent con Brevo
Prerequisiti
Prima di iniziare, assicurati di avere:
- Un workspace Intercom (piano Starter, Pro o Premium)
- Un’app Intercom con access token (private app) o OAuth configurato (public app)
- Un account Brevo con accesso API
- Un account Tajo
Autenticazione
Access Token (Private App)
Per integrazioni private che accedono ai dati del tuo workspace.
- Vai in Developer Hub > Your Apps > Create new app
- Associa con il tuo workspace Intercom
- Copia l’access token
curl https://api.intercom.io/contacts \ -H "Authorization: Bearer {access_token}" \ -H "Content-Type: application/json" \ -H "Intercom-Version: 2.11"OAuth 2.0 (Public App)
Per integrazioni che accedono ai dati Intercom di altri clienti.
# 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 API
Includi sempre l’header Intercom-Version nelle tue richieste. Tajo usa la versione API 2.11 di default. Controlla il changelog Intercom per le breaking change.
Configurazione
Setup di base
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: 37Mappatura dei campi
Mappa i dati di contatto Intercom agli attributi di contatto Brevo:
Mappature predefinite
| Parameter | Type | Description |
|---|---|---|
email required | string | Indirizzo email del contatto (identificatore univoco) |
name optional | string | Nome completo, suddiviso in FIRSTNAME/LASTNAME |
phone optional | string | Mappato all'attributo SMS per WhatsApp/SMS |
role optional | string | Tipo di contatto: user o lead |
company.name optional | string | Nome dell'azienda associata |
signed_up_at optional | timestamp | Data di registrazione dell'utente |
last_seen_at optional | timestamp | Timestamp dell'ultima attività |
custom_attributes optional | object | Coppie chiave-valore degli attributi personalizzati |
Mappatura attributi personalizzati
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_USAGEEndpoint API
API Contatti
| Metodo | Endpoint | Descrizione |
|---|---|---|
GET | /contacts | Elenca tutti i contatti |
POST | /contacts | Crea un contatto |
PUT | /contacts/{id} | Aggiorna un contatto |
GET | /contacts/{id} | Recupera un contatto |
POST | /contacts/search | Cerca contatti |
DELETE | /contacts/{id} | Archivia un contatto |
API Conversazioni
| Metodo | Endpoint | Descrizione |
|---|---|---|
GET | /conversations | Elenca le conversazioni |
GET | /conversations/{id} | Recupera una conversazione |
POST | /conversations | Crea una conversazione |
POST | /conversations/{id}/reply | Rispondi a una conversazione |
POST | /conversations/{id}/parts | Aggiungi parte di conversazione |
API Aziende
| Metodo | Endpoint | Descrizione |
|---|---|---|
GET | /companies | Elenca le aziende |
POST | /companies | Crea o aggiorna un’azienda |
GET | /companies/{id} | Recupera un’azienda |
GET | /companies/{id}/contacts | Elenca i contatti dell’azienda |
API Eventi
| Metodo | Endpoint | Descrizione |
|---|---|---|
POST | /events | Invia un evento |
GET | /events?type=user&intercom_user_id={id} | Elenca gli eventi utente |
Eventi
Eventi conversazione
| Evento | Trigger | Caso d’uso |
|---|---|---|
conversation.created | Nuova conversazione iniziata | Avviso ticket di supporto |
conversation.closed | Conversazione risolta | Trigger sondaggio CSAT |
conversation.rating.added | Rating inviato | Tracciamento soddisfazione |
conversation.snoozed | Conversazione in snooze | Pianificazione follow-up |
Eventi contatto
| Evento | Trigger | Caso d’uso |
|---|---|---|
contact.created | Nuovo contatto aggiunto | Sequenza di benvenuto |
contact.updated | Dati contatto modificati | Sync attributi |
contact.deleted | Contatto archiviato | Pulizia |
contact.tag.created | Tag aggiunto al contatto | Aggiornamento segmento |
Eventi utente
| Evento | Trigger | Caso d’uso |
|---|---|---|
user.created | Nuovo utente registrato | Flusso di onboarding |
user.email.updated | Email modificata | Merge contatto |
user.unsubscribed | Disiscritto dalle email | Aggiornamento preferenze |
Esempi di codice
Inizializza il connettore
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'});Sincronizza contatti e conversazioni
// 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// }Gestisci i webhook 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');});Limiti di velocità
Intercom applica limiti di velocità in base al tuo piano:
| Piano | Limite | Dettagli |
|---|---|---|
| Starter | 20 richieste/10 secondi | Per app |
| Pro | 50 richieste/10 secondi | Per app |
| Premium | 100 richieste/10 secondi | Per app |
| Endpoint search | 1 richiesta/secondo | Per app |
| Endpoint scroll | 1 richiesta/minuto | Per app |
Limiti aggiuntivi:
- Operazioni bulk: 15 contatti per richiesta bulk
- Invio eventi: 500 eventi/secondo per workspace
- Consegna webhook: Retry automatico per 24 ore
- Esportazione dati: 1 esportazione concorrente
Risposta limite di velocità
Intercom restituisce 429 Too Many Requests con un header Retry-After. Implementa il backoff esponenziale e rispetta la finestra di retry.
Risoluzione dei problemi
Problemi comuni
| Problema | Causa | Soluzione |
|---|---|---|
| 401 Unauthorized | Token non valido o scaduto | Rigenera l’access token nel Developer Hub |
| Contatto non sincronizzato | Campo email mancante | I lead Intercom potrebbero non avere email; filtra per ruolo |
| Dati conversazione vuoti | L’app non ha lo scope per le conversazioni | Riautorizza con i permessi di lettura conversazioni |
| Webhook non ricevuto | Webhook non registrato | Configura i webhook nelle impostazioni del Developer Hub |
| Mismatch versione API | Breaking change in nuova versione | Fissa la versione API con l’header Intercom-Version |
Modalità debug
Abilita il logging dettagliato:
connectors: intercom: debug: true log_level: verbose log_webhooks: trueTesta la connessione
tajo connectors test intercom# ✓ API connection successful# ✓ Contacts readable# ✓ Conversations readable# ✓ Companies readable# ✓ Webhooks registeredBest practice
- Fissa la versione API - Specifica sempre
Intercom-Versionper evitare breaking change - Usa la search API in modo efficiente - Usa filtri e paginazione per ridurre il trasferimento dati
- Sincronizza sia utenti che lead - Cattura l’intero funnel in Brevo
- Mappa i tag delle conversazioni - Usa i tag delle conversazioni per segmenti marketing post-supporto
- Traccia eventi personalizzati - Invia eventi prodotto chiave a Intercom per il targeting comportamentale
- Gestisci il merge dei contatti - Implementa logica di merge per contatti duplicati
Sicurezza
- Access Token - Autenticazione bearer token per private app
- OAuth 2.0 - Autorizzazione delegata per public app con client secret
- Verifica webhook - Convalida firma HMAC SHA-1 tramite
X-Hub-Signature - Cifratura TLS - Tutte le comunicazioni API cifrate via HTTPS
- Controlli accesso ai dati - Accesso ai dati granulare per configurazione app