---
title: "Zendesk Connector"
description: "Vollständiger Leitfaden zur Zendesk-Integration zum Synchronisieren von Tickets, Nutzer:innen, Organisationen und Support-Events mit Brevo über Tajo."
url: https://tajo.io/de/docs/connectors/support/zendesk/
markdown: https://tajo.io/de/docs/connectors/support/zendesk.md
lang: de-DE
robots: noindex
---

Beantrage frühzeitigen Zugang

Gib deinen Vornamen und deine geschäftliche E-Mail-Adresse ein. Wir senden dir einen Link, mit dem du deine Anfrage für den Tajo-Zugang bestätigst.

# Zendesk Connector

Connector-Status: Geplant Noch nicht gebaut. Tajo betreibt diesen Connector heute nicht.

| Quellfeld | Zielfeld | Beispielwert |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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** | Nein |
| **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:

1. Ein Zendesk-Support-Konto (Team, Professional oder Enterprise)
2. Admin-Zugriff auf deine Zendesk-Instanz
3. Ein konfiguriertes API Token oder eine OAuth-App
4. Ein Brevo-Konto mit API-Zugriff
5. Ein Tajo-Konto

## Authentifizierung

### API-Token-Authentifizierung

Nutze E-Mail-/Token-Authentifizierung für eine schnelle Einrichtung.

```bash
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.

```bash
# Authorization URL
https://{subdomain}.zendesk.com/oauth/authorizations/new?
  response_type=code&
  client_id={client_id}&
  redirect_uri={redirect_uri}&
  scope=read%20write
```

#### Erforderliche Scopes

```
read          # Read access to all resources
write         # Write access to all resources
tickets:read  # Read tickets (granular)
users:read    # Read users (granular)
organizations:read  # Read organizations (granular)
```

## Konfiguration

### Grundeinrichtung

```yaml
connectors:
  zendesk:
    enabled: true
    subdomain: "yourcompany"
    auth:
      email: "admin@yourcompany.com"
      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: 32
```

### Feldzuordnung

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

```yaml
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_TIER
```

## API-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

```javascript
import { TajoClient } from '@tajo/sdk';

const tajo = new TajoClient({
  apiKey: process.env.TAJO_API_KEY,
  brevoApiKey: process.env.BREVO_API_KEY
});

// Connect Zendesk
await tajo.connectors.connect('zendesk', {
  subdomain: 'yourcompany',
  email: 'admin@yourcompany.com',
  apiToken: process.env.ZENDESK_API_TOKEN
});
```

### Nutzer:innen und Tickets synchronisieren

```javascript
// Full sync of users and ticket data
await tajo.connectors.sync('zendesk', {
  type: 'full',
  resources: ['users', 'tickets', 'organizations'],
  since: '2023-01-01'
});

// Check sync status
const 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

```javascript
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:

```yaml
connectors:
  zendesk:
    debug: true
    log_level: verbose
    log_webhooks: true
```

### Verbindung testen

```bash
tajo connectors test zendesk
# ✓ API connection successful
# ✓ Users readable
# ✓ Tickets readable
# ✓ Organizations readable
# ✓ Webhooks configured
```

## Best Practices

1. **Inkrementelle Exporte nutzen** - Setze die Incremental API für umfangreiche Datensynchronisierung ein
2. **Nur Endkund:innen filtern** - Schließe Agent:innen und Admins aus dem Brevo-Kontakt-Sync aus
3. **CSAT-Daten synchronisieren** - Nutze Zufriedenheitswerte für die Segmentierung nach Customer Health
4. **Organisationen zuordnen** - Nutze Organisationsdaten für B2B-Marketing-Kampagnen
5. **Webhook-Retries implementieren** - Handle temporäre Fehler gelassen
6. **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

## Verwandte Ressourcen

- [Zendesk API Documentation](https://developer.zendesk.com/api-reference)
- [Zendesk Webhooks Guide](https://developer.zendesk.com/api-reference/webhooks/introduction/)
- [Intercom Connector](https://tajo.io/de/docs/connectors/support/intercom)
- [Customer-Sync-Skill](https://tajo.io/de/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/de/docs/contact-management)
