Connecteur Intercom
Connectez votre espace de travail Intercom à Brevo via Tajo pour une messagerie client unifiée, un suivi des conversations, et une automatisation marketing guidée par l’engagement alimentée par vos données de support et produit.
Vue d’ensemble
| Propriété | Valeur |
|---|---|
| Plateforme | Intercom |
| Catégorie | Support |
| Complexité de configuration | Moyenne |
| Intégration officielle | Oui |
| Données synchronisées | Contacts, Conversations, Entreprises, Événements |
| URL de base API | https://api.intercom.io |
Fonctionnalités
- Synchronisation des contacts - Synchronisation bidirectionnelle des utilisateurs et leads Intercom avec les contacts Brevo
- Suivi des conversations - Synchronisation des données de conversation pour la segmentation guidée par le support
- Mappage d’entreprises - Association des contacts aux entreprises pour les workflows basés sur les comptes
- Attributs personnalisés - Mappage des attributs personnalisés Intercom aux champs de contact Brevo
- Suivi d’événements - Synchronisation des événements personnalisés et activités utilisateur pour le ciblage comportemental
- Synchronisation des tags - Mappage des tags Intercom vers l’appartenance à des listes ou attributs Brevo
- Données Messenger - Suivi de l’engagement de messagerie in-app et des interactions de chat
- Intégration agent IA - Synchronisation des résultats de conversations d’agents IA avec Brevo
Prérequis
Avant de commencer, assurez-vous d’avoir :
- Un espace de travail Intercom (plan Starter, Pro ou Premium)
- Une application Intercom avec jeton d’accès (application privée) ou OAuth configuré (application publique)
- Un compte Brevo avec accès API
- Un compte Tajo
Authentification
Jeton d’accès (Application privée)
Pour les intégrations privées qui accèdent aux données de votre propre espace de travail.
- Allez dans Developer Hub > Your Apps > Create new app
- Associez à votre espace de travail Intercom
- Copiez le jeton d’accès
curl https://api.intercom.io/contacts \ -H "Authorization: Bearer {access_token}" \ -H "Content-Type: application/json" \ -H "Intercom-Version: 2.11"OAuth 2.0 (Application publique)
Pour les intégrations qui accèdent aux données Intercom d’autres clients.
# URL d'autorisationhttps://app.intercom.com/oauth?client_id={client_id}&state={state}
# Échange de jetoncurl -X POST https://api.intercom.io/auth/eagle/token \ -d "client_id={client_id}" \ -d "client_secret={client_secret}" \ -d "code={auth_code}"Versioning de l'API
Incluez toujours l’en-tête Intercom-Version dans vos requêtes. Tajo utilise la version API 2.11 par défaut. Consultez le changelog Intercom pour les changements majeurs.
Configuration
Configuration de base
connectors: intercom: enabled: true access_token: "${INTERCOM_ACCESS_TOKEN}" api_version: "2.11"
# Options de synchronisation des données sync: contacts: true conversations: true companies: true events: true tags: true
# Direction de synchronisation direction: intercom_to_brevo
# Assignation de listes Brevo lists: all_users: 35 active_conversations: 36 leads: 37Mappage de champs
Mappez les données de contact Intercom aux attributs de contact Brevo :
Mappages par défaut
| Parameter | Type | Description |
|---|---|---|
email required | string | Adresse email du contact (identifiant unique) |
name optional | string | Nom complet, divisé en FIRSTNAME/LASTNAME |
phone optional | string | Mappé vers l'attribut SMS pour WhatsApp/SMS |
role optional | string | Type de contact : user ou lead |
company.name optional | string | Nom de l'entreprise associée |
signed_up_at optional | timestamp | Date d'inscription de l'utilisateur |
last_seen_at optional | timestamp | Timestamp de dernière activité |
custom_attributes optional | object | Paires clé-valeur des attributs personnalisés |
Mappage d’attributs personnalisés
field_mapping: # Champs standards email: email name: FULLNAME phone: SMS
# Champs d'engagement signed_up_at: SIGNUP_DATE last_seen_at: LAST_ACTIVE session_count: SESSION_COUNT unsubscribed_from_emails: UNSUBSCRIBED
# Champs d'entreprise company.name: COMPANY_NAME company.plan: COMPANY_PLAN company.size: COMPANY_SIZE
# Attributs personnalisés custom_attributes.plan_tier: PLAN_TIER custom_attributes.feature_usage: FEATURE_USAGEEndpoints API
API Contacts
| Méthode | Endpoint | Description |
|---|---|---|
GET | /contacts | Lister tous les contacts |
POST | /contacts | Créer un contact |
PUT | /contacts/{id} | Mettre à jour un contact |
GET | /contacts/{id} | Récupérer un contact |
POST | /contacts/search | Rechercher des contacts |
DELETE | /contacts/{id} | Archiver un contact |
API Conversations
| Méthode | Endpoint | Description |
|---|---|---|
GET | /conversations | Lister les conversations |
GET | /conversations/{id} | Récupérer une conversation |
POST | /conversations | Créer une conversation |
POST | /conversations/{id}/reply | Répondre à une conversation |
POST | /conversations/{id}/parts | Ajouter une partie de conversation |
API Companies
| Méthode | Endpoint | Description |
|---|---|---|
GET | /companies | Lister les entreprises |
POST | /companies | Créer ou mettre à jour une entreprise |
GET | /companies/{id} | Récupérer une entreprise |
GET | /companies/{id}/contacts | Lister les contacts d’une entreprise |
API Events
| Méthode | Endpoint | Description |
|---|---|---|
POST | /events | Soumettre un événement |
GET | /events?type=user&intercom_user_id={id} | Lister les événements d’un utilisateur |
Événements
Événements de conversation
| Événement | Déclencheur | Cas d’usage |
|---|---|---|
conversation.created | Nouvelle conversation démarrée | Alerte de ticket de support |
conversation.closed | Conversation résolue | Déclencheur d’enquête CSAT |
conversation.rating.added | Évaluation soumise | Suivi de satisfaction |
conversation.snoozed | Conversation mise en attente | Planification de suivi |
Événements de contact
| Événement | Déclencheur | Cas d’usage |
|---|---|---|
contact.created | Nouveau contact ajouté | Séquence de bienvenue |
contact.updated | Données de contact modifiées | Synchronisation d’attributs |
contact.deleted | Contact archivé | Nettoyage |
contact.tag.created | Tag ajouté au contact | Mise à jour de segment |
Événements utilisateur
| Événement | Déclencheur | Cas d’usage |
|---|---|---|
user.created | Nouvel utilisateur inscrit | Flow d’onboarding |
user.email.updated | Email modifié | Fusion de contacts |
user.unsubscribed | Désinscrit des emails | Mise à jour de préférences |
Exemples de code
Initialiser le connecteur
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connecter Intercomawait tajo.connectors.connect('intercom', { accessToken: process.env.INTERCOM_ACCESS_TOKEN, apiVersion: '2.11'});Synchroniser contacts et conversations
// Synchronisation complète des contacts et données de conversationawait tajo.connectors.sync('intercom', { type: 'full', resources: ['contacts', 'conversations', 'companies'], since: '2023-01-01'});
// Vérifier le statut de synchronisationconst status = await tajo.connectors.status('intercom');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// contactsSynced: 14200,// conversationsSynced: 28400,// companiesSynced: 2100// }Gérer les webhooks 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 taux
Intercom applique des limites de taux selon votre plan :
| Plan | Limite de taux | Détails |
|---|---|---|
| Starter | 20 requêtes/10 secondes | Par application |
| Pro | 50 requêtes/10 secondes | Par application |
| Premium | 100 requêtes/10 secondes | Par application |
| Endpoint Search | 1 requête/seconde | Par application |
| Endpoint Scroll | 1 requête/minute | Par application |
Limites supplémentaires :
- Opérations bulk : 15 contacts par requête bulk
- Soumissions d’événements : 500 événements/seconde par espace de travail
- Livraison de webhooks : Retry automatique pendant 24 heures
- Export de données : 1 export concurrent
Réponse de limite de taux
Intercom retourne 429 Too Many Requests avec un en-tête Retry-After. Implémentez un backoff exponentiel et respectez la fenêtre de retry.
Dépannage
Problèmes courants
| Problème | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Jeton invalide ou expiré | Régénérez le jeton d’accès dans Developer Hub |
| Contact non synchronisé | Champ email manquant | Les leads Intercom peuvent ne pas avoir d’email ; filtrez par role |
| Données de conversation vides | L’app manque de scope conversation | Réautorisez avec les permissions de lecture de conversation |
| Webhook non reçu | Webhook non enregistré | Configurez les webhooks dans les paramètres Developer Hub |
| Incompatibilité de version API | Changements majeurs dans la nouvelle version | Épinglez la version API avec l’en-tête Intercom-Version |
Mode debug
Activer la journalisation détaillée :
connectors: intercom: debug: true log_level: verbose log_webhooks: trueTester la connexion
tajo connectors test intercom# ✓ API connection successful# ✓ Contacts readable# ✓ Conversations readable# ✓ Companies readable# ✓ Webhooks registeredBonnes pratiques
- Épinglez la version API - Spécifiez toujours
Intercom-Versionpour éviter les changements majeurs - Utilisez l’API Search efficacement - Utilisez des filtres et la pagination pour réduire le transfert de données
- Synchronisez utilisateurs et leads - Capturez tout le funnel dans Brevo
- Mappez les tags de conversation - Utilisez les tags de conversation pour les segments marketing post-support
- Suivez les événements personnalisés - Soumettez les événements produit clés à Intercom pour le ciblage comportemental
- Gérez les fusions de contacts - Implémentez la logique de fusion pour les contacts dupliqués
Sécurité
- Jeton d’accès - Authentification par bearer token pour les applications privées
- OAuth 2.0 - Autorisation déléguée pour les applications publiques avec client secret
- Vérification des webhooks - Validation de signature HMAC SHA-1 via
X-Hub-Signature - Chiffrement TLS - Toutes les communications API chiffrées via HTTPS
- Contrôles d’accès aux données - Accès granulaire aux données par configuration d’application