Intercom Connector
Verbinde deinen Intercom-Workspace über Tajo mit Brevo für einheitliche Kund:innen-Kommunikation, Conversation-Tracking und engagement-gesteuerte Marketing-Automatisierung – getrieben durch deine Support- und Produktdaten.
Überblick
| Eigenschaft | Wert |
|---|---|
| Plattform | Intercom |
| Kategorie | Support |
| Einrichtungsaufwand | Mittel |
| Offizielle Integration | Ja |
| Synchronisierte Daten | Kontakte, Conversations, Unternehmen, Events |
| API-Basis-URL | https://api.intercom.io |
Funktionen
- Kontaktsynchronisierung - Bidirektionale Synchronisierung von Intercom-Users und -Leads mit Brevo-Kontakten
- Conversation-Tracking - Synchronisiere Conversation-Daten für support-getriebene Segmentierung
- Unternehmens-Zuordnung - Verknüpfe Kontakte mit Unternehmen für account-basierte Workflows
- Benutzerdefinierte Attribute - Ordne benutzerdefinierte Intercom-Attribute Brevo-Kontaktfeldern zu
- Event-Tracking - Synchronisiere benutzerdefinierte Events und Nutzer:innen-Aktivitäten für verhaltensbasiertes Targeting
- Tag-Synchronisierung - Ordne Intercom-Tags Brevo-Listenmitgliedschaften oder -Attributen zu
- Messenger-Daten - Verfolge Engagement in In-App-Messaging und Chat-Interaktionen
- KI-Agent-Integration - Synchronisiere Ergebnisse von KI-Agent-Conversations mit Brevo
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du Folgendes hast:
- Einen Intercom-Workspace (Starter-, Pro- oder Premium-Plan)
- Eine Intercom-App mit Access Token (Private App) oder konfiguriertem OAuth (Public App)
- Ein Brevo-Konto mit API-Zugriff
- Ein Tajo-Konto
Authentifizierung
Access Token (Private App)
Für private Integrationen, die auf Daten deines eigenen Workspaces zugreifen.
- Gehe zu Developer Hub > Your Apps > Create new app
- Verknüpfe sie mit deinem Intercom-Workspace
- Kopiere das 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)
Für Integrationen, die auf Intercom-Daten anderer Kund:innen zugreifen.
# 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}"API-Versionierung
Füge deinen Anfragen immer den Header Intercom-Version hinzu. Tajo verwendet standardmäßig die API-Version 2.11. Prüfe das Intercom-Changelog auf Breaking Changes.
Konfiguration
Grundeinrichtung
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: 37Feldzuordnung
Ordne Intercom-Kontaktdaten den Brevo-Kontaktattributen zu:
Standardzuordnungen
| Parameter | Type | Description |
|---|---|---|
email required | string | E-Mail-Adresse des Kontakts (eindeutige Kennung) |
name optional | string | Vollständiger Name, aufgeteilt in FIRSTNAME/LASTNAME |
phone optional | string | Wird dem SMS-Attribut für WhatsApp/SMS zugeordnet |
role optional | string | Kontakttyp: User oder Lead |
company.name optional | string | Name des zugehörigen Unternehmens |
signed_up_at optional | timestamp | Anmeldedatum des/der Nutzer:in |
last_seen_at optional | timestamp | Zeitstempel der letzten Aktivität |
custom_attributes optional | object | Schlüssel-Wert-Paare benutzerdefinierter Attribute |
Zuordnung benutzerdefinierter Attribute
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_USAGEAPI-Endpoints
Contacts API
| Methode | Endpoint | Beschreibung |
|---|---|---|
GET | /contacts | Alle Kontakte auflisten |
POST | /contacts | Kontakt erstellen |
PUT | /contacts/{id} | Kontakt aktualisieren |
GET | /contacts/{id} | Kontakt abrufen |
POST | /contacts/search | Kontakte durchsuchen |
DELETE | /contacts/{id} | Kontakt archivieren |
Conversations API
| Methode | Endpoint | Beschreibung |
|---|---|---|
GET | /conversations | Conversations auflisten |
GET | /conversations/{id} | Conversation abrufen |
POST | /conversations | Conversation erstellen |
POST | /conversations/{id}/reply | Auf eine Conversation antworten |
POST | /conversations/{id}/parts | Conversation-Teil hinzufügen |
Companies API
| Methode | Endpoint | Beschreibung |
|---|---|---|
GET | /companies | Unternehmen auflisten |
POST | /companies | Unternehmen erstellen oder aktualisieren |
GET | /companies/{id} | Unternehmen abrufen |
GET | /companies/{id}/contacts | Kontakte eines Unternehmens auflisten |
Events API
| Methode | Endpoint | Beschreibung |
|---|---|---|
POST | /events | Event senden |
GET | /events?type=user&intercom_user_id={id} | Nutzer:innen-Events auflisten |
Events
Conversation-Events
| Event | Auslöser | Anwendungsfall |
|---|---|---|
conversation.created | Neue Conversation begonnen | Support-Ticket-Alarm |
conversation.closed | Conversation gelöst | CSAT-Umfrage-Trigger |
conversation.rating.added | Bewertung abgegeben | Zufriedenheits-Tracking |
conversation.snoozed | Conversation pausiert | Follow-up-Planung |
Kontakt-Events
| Event | Auslöser | Anwendungsfall |
|---|---|---|
contact.created | Neuer Kontakt hinzugefügt | Willkommensserie |
contact.updated | Kontaktdaten geändert | Attribut-Synchronisierung |
contact.deleted | Kontakt archiviert | Bereinigung |
contact.tag.created | Tag zu Kontakt hinzugefügt | Segment-Update |
Nutzer:innen-Events
| Event | Auslöser | Anwendungsfall |
|---|---|---|
user.created | Neue:r Nutzer:in registriert | Onboarding-Flow |
user.email.updated | E-Mail geändert | Kontakt-Merge |
user.unsubscribed | Abmeldung vom E-Mail-Versand | Präferenz-Update |
Code-Beispiele
Connector initialisieren
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'});Kontakte und Conversations synchronisieren
// 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// }Intercom-Webhooks verarbeiten
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');});Rate Limits
Intercom wendet Rate Limits abhängig von deinem Plan an:
| Plan | Rate Limit | Details |
|---|---|---|
| Starter | 20 Anfragen/10 Sekunden | Pro App |
| Pro | 50 Anfragen/10 Sekunden | Pro App |
| Premium | 100 Anfragen/10 Sekunden | Pro App |
| Such-Endpoint | 1 Anfrage/Sekunde | Pro App |
| Scroll-Endpoint | 1 Anfrage/Minute | Pro App |
Weitere Begrenzungen:
- Bulk-Operationen: 15 Kontakte pro Bulk-Anfrage
- Event-Übermittlungen: 500 Events/Sekunde pro Workspace
- Webhook-Zustellung: Automatische Wiederholung für 24 Stunden
- Datenexport: 1 gleichzeitiger Export
Rate-Limit-Antwort
Intercom gibt 429 Too Many Requests mit einem Retry-After-Header zurück. Setze exponentielles Backoff ein und respektiere das Retry-Fenster.
Fehlerbehebung
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| 401 Unauthorized | Ungültiges oder abgelaufenes Token | Access Token im Developer Hub neu erzeugen |
| Kontakt nicht synchronisiert | Fehlendes E-Mail-Feld | Intercom-Leads haben evtl. keine E-Mail; nach Rolle filtern |
| Conversation-Daten leer | App fehlt der Conversation-Scope | Mit Conversation-Leseberechtigung neu autorisieren |
| Webhook nicht empfangen | Webhook nicht registriert | Webhooks in den Developer-Hub-Einstellungen konfigurieren |
| API-Versions-Mismatch | Breaking Changes in neuer Version | API-Version mit Header Intercom-Version festsetzen |
Debug-Modus
Ausführliches Logging aktivieren:
connectors: intercom: debug: true log_level: verbose log_webhooks: trueVerbindung testen
tajo connectors test intercom# ✓ API connection successful# ✓ Contacts readable# ✓ Conversations readable# ✓ Companies readable# ✓ Webhooks registeredBest Practices
- API-Version fixieren - Gib immer
Intercom-Versionan, um Breaking Changes zu vermeiden - Such-API effizient nutzen - Verwende Filter und Pagination, um die Datenübertragung zu reduzieren
- Users und Leads synchronisieren - Bilde den kompletten Funnel in Brevo ab
- Conversation-Tags zuordnen - Nutze Conversation-Tags für Post-Support-Marketing-Segmente
- Benutzerdefinierte Events verfolgen - Schicke wichtige Produkt-Events an Intercom für verhaltensbasiertes Targeting
- Kontakt-Merges handhaben - Implementiere Merge-Logik für doppelte Kontakte
Sicherheit
- Access Token - Bearer-Token-Authentifizierung für Private Apps
- OAuth 2.0 - Delegierte Autorisierung für Public Apps mit Client Secret
- Webhook-Verifizierung - HMAC-SHA-1-Signaturprüfung über
X-Hub-Signature - TLS-Verschlüsselung - Die gesamte API-Kommunikation erfolgt verschlüsselt über HTTPS
- Datenzugriffskontrollen - Granularer Datenzugriff pro App-Konfiguration