Zendesk Connector
Verbinde deine Zendesk-Support-Instanz über Tajo mit Brevo für einheitliche Kund:innen-Supportdaten, ticketbasierte Segmentierung, Zufriedenheitsbewertung und support-getriggerte Marketing-Automatisierung.
Überblick
| Eigenschaft | Wert |
|---|---|
| Plattform | Zendesk |
| Kategorie | Support |
| Einrichtungsaufwand | Mittel |
| Offizielle Integration | Ja |
| Synchronisierte Daten | Tickets, Nutzer:innen, Organisationen, Events |
| API-Basis-URL | https://{subdomain}.zendesk.com/api/v2 |
Funktionen
- Nutzer:innen-Synchronisierung - Synchronisiere Zendesk-Endkund:innen und -Agent:innen mit Brevo-Kontakten
- Ticket-Tracking - Synchronisiere Ticket-Daten für support-bewusste Marketing-Segmentierung
- Organisations-Zuordnung - Verknüpfe Kontakte mit Organisationen für B2B-Workflows
- Zufriedenheitswerte - Synchronisiere CSAT- und NPS-Daten als Brevo-Attribute
- Ticket-Events - Verfolge Ticket-Erstellung, -Lösung und Eskalation als Automatisierungstrigger
- Help-Center-Integration - Verfolge Artikelaufrufe und Suchverhalten
- Multi-Channel-Support - Synchronisiere Daten aus E-Mail-, Chat-, Voice- und Messaging-Kanälen
- Benutzerdefinierte Felder - Ordne benutzerdefinierte Zendesk-Ticket- und Nutzer:innen-Felder Brevo zu
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du Folgendes hast:
- Ein Zendesk-Support-Konto (Team, Professional oder Enterprise)
- Admin-Zugriff auf deine Zendesk-Instanz
- Ein konfiguriertes API Token oder eine OAuth-App
- Ein Brevo-Konto mit API-Zugriff
- Ein Tajo-Konto
Authentifizierung
API-Token-Authentifizierung
Nutze E-Mail-/Token-Authentifizierung für eine schnelle Einrichtung.
curl https://{subdomain}.zendesk.com/api/v2/users.json \ -u {email}/token:{api_token} \ -H "Content-Type: application/json"Erzeuge ein API Token unter Zendesk Admin > Apps and Integrations > APIs > Zendesk API.
OAuth 2.0
Nutze OAuth für Integrationen mit mehreren Instanzen und delegiertem Nutzer:innen-Zugriff.
# Authorization URLhttps://{subdomain}.zendesk.com/oauth/authorizations/new? response_type=code& client_id={client_id}& redirect_uri={redirect_uri}& scope=read%20writeErforderliche Scopes
read # Read access to all resourceswrite # Write access to all resourcestickets:read # Read tickets (granular)users:read # Read users (granular)organizations:read # Read organizations (granular)Konfiguration
Grundeinrichtung
connectors: zendesk: enabled: true subdomain: "yourcompany" auth: api_token: "${ZENDESK_API_TOKEN}"
# Data sync options sync: users: true tickets: true organizations: true satisfaction_ratings: true
# Brevo list assignment lists: all_customers: 30 active_tickets: 31 satisfied_customers: 32Feldzuordnung
Ordne Zendesk-Nutzer:innen-Felder den Brevo-Kontaktattributen zu:
Standardzuordnungen
| Parameter | Type | Description |
|---|---|---|
email required | string | E-Mail-Adresse des/der Nutzer:in (eindeutige Kennung) |
name optional | string | Vollständiger Name, aufgeteilt in FIRSTNAME/LASTNAME |
phone optional | string | Wird dem SMS-Attribut für WhatsApp/SMS zugeordnet |
organization_id optional | integer | Zugehörige Organisation für B2B-Zuordnung |
role optional | string | Nutzer:innen-Rolle (End-User, Agent, Admin) |
tags optional | array | Nutzer:innen-Tags aus Zendesk |
ticket_restriction optional | string | Ticket-Zugriffsebene |
custom_fields optional | object | Werte benutzerdefinierter Nutzer:innen-Felder |
Zuordnung benutzerdefinierter Felder
field_mapping: # Standard fields email: email name: FULLNAME phone: SMS
# Support metrics open_tickets: OPEN_TICKETS total_tickets: TOTAL_TICKETS avg_satisfaction: CSAT_SCORE last_ticket_date: LAST_SUPPORT_DATE
# Organization fields organization.name: COMPANY_NAME organization.tags: COMPANY_TAGS
# Custom fields user_fields.customer_type: CUSTOMER_TYPE user_fields.account_tier: ACCOUNT_TIERAPI-Endpoints
Ticketing API
| Methode | Endpoint | Beschreibung |
|---|---|---|
GET | /api/v2/tickets | Tickets auflisten |
POST | /api/v2/tickets | Ticket erstellen |
PUT | /api/v2/tickets/{id} | Ticket aktualisieren |
GET | /api/v2/tickets/{id} | Ticket anzeigen |
GET | /api/v2/search.json?query={query} | Tickets durchsuchen |
Users API
| Methode | Endpoint | Beschreibung |
|---|---|---|
GET | /api/v2/users | Nutzer:innen auflisten |
POST | /api/v2/users | Nutzer:in erstellen |
PUT | /api/v2/users/{id} | Nutzer:in aktualisieren |
GET | /api/v2/users/{id} | Nutzer:in anzeigen |
GET | /api/v2/users/search.json?query={query} | Nutzer:innen durchsuchen |
Organizations API
| Methode | Endpoint | Beschreibung |
|---|---|---|
GET | /api/v2/organizations | Organisationen auflisten |
POST | /api/v2/organizations | Organisation erstellen |
GET | /api/v2/organizations/{id}/users | Mitglieder einer Organisation auflisten |
Satisfaction Ratings API
| Methode | Endpoint | Beschreibung |
|---|---|---|
GET | /api/v2/satisfaction_ratings | Zufriedenheitsbewertungen auflisten |
GET | /api/v2/satisfaction_ratings/{id} | Bewertung anzeigen |
Events
Ticket-Events
| Event | Auslöser | Anwendungsfall |
|---|---|---|
ticket.created | Neues Ticket eingereicht | Support-Bestätigung |
ticket.updated | Ticket-Status geändert | Status-Benachrichtigung |
ticket.solved | Ticket als gelöst markiert | CSAT-Umfrage-Trigger |
ticket.reopened | Gelöstes Ticket wiedereröffnet | Eskalations-Alarm |
Nutzer:innen-Events
| Event | Auslöser | Anwendungsfall |
|---|---|---|
user.created | Neue:r Nutzer:in registriert | Willkommen im Support |
user.updated | Nutzer:innen-Profil geändert | Attribut-Synchronisierung |
user.merged | Nutzer:innen zusammengeführt | Deduplizierung |
Zufriedenheits-Events
| Event | Auslöser | Anwendungsfall |
|---|---|---|
satisfaction_rating.created | CSAT eingereicht | Feedback-Verarbeitung |
satisfaction_rating.bad | Negative Bewertung | Recovery-Outreach |
satisfaction_rating.good | Positive Bewertung | Advocacy-Kampagnen |
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 Zendeskawait tajo.connectors.connect('zendesk', { subdomain: 'yourcompany', apiToken: process.env.ZENDESK_API_TOKEN});Nutzer:innen und Tickets synchronisieren
// Full sync of users and ticket dataawait tajo.connectors.sync('zendesk', { type: 'full', resources: ['users', 'tickets', 'organizations'], since: '2023-01-01'});
// Check sync statusconst status = await tajo.connectors.status('zendesk');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// usersSynced: 8400,// ticketsSynced: 34200,// organizationsSynced: 1200// }Zendesk-Webhooks verarbeiten
app.post('/webhooks/zendesk', async (req, res) => { const signature = req.get('X-Zendesk-Webhook-Signature');
// Verify webhook signature if (!verifyZendeskSignature(req.body, signature)) { return res.status(401).send('Unauthorized'); }
await tajo.connectors.handleWebhook('zendesk', { type: req.body.type, ticketId: req.body.ticket_id, userId: req.body.user_id, payload: req.body });
res.status(200).send('OK');});Rate Limits
Zendesk-Rate-Limits variieren je nach Plan:
| Plan | Rate Limit | Details |
|---|---|---|
| Team | 200 Anfragen/Minute | Pro API Token |
| Professional | 400 Anfragen/Minute | Pro API Token |
| Enterprise | 700 Anfragen/Minute | Pro API Token |
| High Volume Add-on | 2.500 Anfragen/Minute | Pro API Token |
Weitere Begrenzungen:
- Such-API: 6 Anfragen/Minute anonym, 100/Minute authentifiziert
- Inkrementelle Exporte: 10 Anfragen/Minute
- Batch-API: 100 Datensätze pro Batch-Anfrage
- Webhook-Zustellung: Automatische Wiederholung mit exponentiellem Backoff
Rate-Limit-Header
Überwache die Header X-Rate-Limit-Remaining und Retry-After, um deinen API-Verbrauch zu steuern.
Fehlerbehebung
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| 401 Unauthorized | Ungültiges API Token | Token im Zendesk-Admin neu erzeugen |
| 403 Forbidden | Unzureichende Berechtigungen | Anforderungen der Agent- oder Admin-Rolle prüfen |
| Nutzer:in nicht synchronisiert | Nutzer:in ist Agent:in, nicht Endkund:in | In der Sync-Konfiguration nach Rolle filtern |
| Webhook nicht empfangen | Trigger/Target nicht konfiguriert | Webhook-Target im Zendesk-Admin einrichten |
| Suche liefert leeres Ergebnis | Verzögerung bei der Indexierung | 1–2 Minuten auf Update des Suchindex warten |
Debug-Modus
Ausführliches Logging aktivieren:
connectors: zendesk: debug: true log_level: verbose log_webhooks: trueVerbindung testen
tajo connectors test zendesk# ✓ API connection successful# ✓ Users readable# ✓ Tickets readable# ✓ Organizations readable# ✓ Webhooks configuredBest Practices
- Inkrementelle Exporte nutzen - Setze die Incremental API für umfangreiche Datensynchronisierung ein
- Nur Endkund:innen filtern - Schließe Agent:innen und Admins aus dem Brevo-Kontakt-Sync aus
- CSAT-Daten synchronisieren - Nutze Zufriedenheitswerte für die Segmentierung nach Customer Health
- Organisationen zuordnen - Nutze Organisationsdaten für B2B-Marketing-Kampagnen
- Webhook-Retries implementieren - Handle temporäre Fehler gelassen
- Side-Loading verwenden - Füge verwandte Datensätze in API-Antworten ein, um die Anzahl der Anfragen zu reduzieren
Sicherheit
- API-Token-Authentifizierung - Tokenbasierter Zugriff, gebunden an die Admin-E-Mail
- OAuth 2.0 - Tokenbasierter delegierter Zugriff mit Scope-Kontrollen
- Webhook-Signierung - HMAC-Signaturprüfung für Webhook-Payloads
- TLS-Verschlüsselung - Die gesamte API-Kommunikation ist per HTTPS verschlüsselt
- IP-Whitelisting - API-Zugriff nach IP-Bereich beschränken