Connecteur Zendesk
Connectez votre instance Zendesk Support à Brevo via Tajo pour des données de support client unifiées, une segmentation basée sur les tickets, un scoring de satisfaction, et une automatisation marketing déclenchée par le support.
Vue d’ensemble
| Propriété | Valeur |
|---|---|
| Plateforme | Zendesk |
| Catégorie | Support |
| Complexité de configuration | Moyenne |
| Intégration officielle | Oui |
| Données synchronisées | Tickets, Utilisateurs, Organisations, Événements |
| URL de base API | https://{subdomain}.zendesk.com/api/v2 |
Fonctionnalités
- Synchronisation des utilisateurs - Synchronisation des end-users et agents Zendesk avec les contacts Brevo
- Suivi des tickets - Synchronisation des données de tickets pour une segmentation marketing consciente du support
- Mappage d’organisations - Association de contacts aux organisations pour les workflows B2B
- Scores de satisfaction - Synchronisation des données CSAT et NPS vers les attributs Brevo
- Événements de tickets - Suivi de la création, résolution et escalade de tickets pour les déclencheurs d’automatisation
- Intégration du centre d’aide - Suivi des vues d’articles et du comportement de recherche
- Support multicanal - Synchronisation des données depuis les canaux email, chat, voix et messagerie
- Champs personnalisés - Mappage des champs personnalisés de tickets et utilisateurs Zendesk vers Brevo
Prérequis
Avant de commencer, assurez-vous d’avoir :
- Un compte Zendesk Support (Team, Professional ou Enterprise)
- Un accès admin à votre instance Zendesk
- Un token API ou une application OAuth configurée
- Un compte Brevo avec accès API
- Un compte Tajo
Authentification
Authentification par token API
Utilisez l’authentification email/token pour une configuration rapide.
curl https://{subdomain}.zendesk.com/api/v2/users.json \ -u {email}/token:{api_token} \ -H "Content-Type: application/json"Générez un token API depuis Zendesk Admin > Apps and Integrations > APIs > Zendesk API.
OAuth 2.0
Utilisez OAuth pour les intégrations multi-instances avec accès utilisateur délégué.
# URL d'autorisationhttps://{subdomain}.zendesk.com/oauth/authorizations/new? response_type=code& client_id={client_id}& redirect_uri={redirect_uri}& scope=read%20writePérimètres requis
read # Accès en lecture à toutes les ressourceswrite # Accès en écriture à toutes les ressourcestickets:read # Lecture des tickets (granulaire)users:read # Lecture des utilisateurs (granulaire)organizations:read # Lecture des organisations (granulaire)Configuration
Configuration de base
connectors: zendesk: enabled: true subdomain: "yourcompany" auth: api_token: "${ZENDESK_API_TOKEN}"
# Options de synchronisation des données sync: users: true tickets: true organizations: true satisfaction_ratings: true
# Assignation de listes Brevo lists: all_customers: 30 active_tickets: 31 satisfied_customers: 32Mappage de champs
Mappez les champs utilisateurs Zendesk aux attributs de contact Brevo :
Mappages par défaut
| Parameter | Type | Description |
|---|---|---|
email required | string | Adresse email de l'utilisateur (identifiant unique) |
name optional | string | Nom complet, divisé en FIRSTNAME/LASTNAME |
phone optional | string | Mappé vers l'attribut SMS pour WhatsApp/SMS |
organization_id optional | integer | Organisation associée pour le mappage B2B |
role optional | string | Rôle de l'utilisateur (end-user, agent, admin) |
tags optional | array | Tags utilisateur de Zendesk |
ticket_restriction optional | string | Niveau d'accès aux tickets |
custom_fields optional | object | Valeurs des champs personnalisés utilisateur |
Mappage de champs personnalisés
field_mapping: # Champs standards email: email name: FULLNAME phone: SMS
# Métriques de support open_tickets: OPEN_TICKETS total_tickets: TOTAL_TICKETS avg_satisfaction: CSAT_SCORE last_ticket_date: LAST_SUPPORT_DATE
# Champs d'organisation organization.name: COMPANY_NAME organization.tags: COMPANY_TAGS
# Champs personnalisés user_fields.customer_type: CUSTOMER_TYPE user_fields.account_tier: ACCOUNT_TIEREndpoints API
API Ticketing
| Méthode | Endpoint | Description |
|---|---|---|
GET | /api/v2/tickets | Lister les tickets |
POST | /api/v2/tickets | Créer un ticket |
PUT | /api/v2/tickets/{id} | Mettre à jour un ticket |
GET | /api/v2/tickets/{id} | Afficher un ticket |
GET | /api/v2/search.json?query={query} | Rechercher des tickets |
API Users
| Méthode | Endpoint | Description |
|---|---|---|
GET | /api/v2/users | Lister les utilisateurs |
POST | /api/v2/users | Créer un utilisateur |
PUT | /api/v2/users/{id} | Mettre à jour un utilisateur |
GET | /api/v2/users/{id} | Afficher un utilisateur |
GET | /api/v2/users/search.json?query={query} | Rechercher des utilisateurs |
API Organizations
| Méthode | Endpoint | Description |
|---|---|---|
GET | /api/v2/organizations | Lister les organisations |
POST | /api/v2/organizations | Créer une organisation |
GET | /api/v2/organizations/{id}/users | Lister les membres d’une organisation |
API Satisfaction Ratings
| Méthode | Endpoint | Description |
|---|---|---|
GET | /api/v2/satisfaction_ratings | Lister les évaluations de satisfaction |
GET | /api/v2/satisfaction_ratings/{id} | Afficher une évaluation |
Événements
Événements de ticket
| Événement | Déclencheur | Cas d’usage |
|---|---|---|
ticket.created | Nouveau ticket soumis | Accusé de réception support |
ticket.updated | Statut du ticket modifié | Notification de statut |
ticket.solved | Ticket marqué comme résolu | Déclencheur d’enquête CSAT |
ticket.reopened | Ticket résolu rouvert | Alerte d’escalade |
Événements utilisateur
| Événement | Déclencheur | Cas d’usage |
|---|---|---|
user.created | Nouvel utilisateur enregistré | Bienvenue au support |
user.updated | Profil utilisateur modifié | Synchronisation d’attributs |
user.merged | Utilisateurs fusionnés | Déduplication |
Événements de satisfaction
| Événement | Déclencheur | Cas d’usage |
|---|---|---|
satisfaction_rating.created | CSAT soumis | Traitement de feedback |
satisfaction_rating.bad | Évaluation négative | Actions de récupération |
satisfaction_rating.good | Évaluation positive | Campagnes de recommandation |
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 Zendeskawait tajo.connectors.connect('zendesk', { subdomain: 'yourcompany', apiToken: process.env.ZENDESK_API_TOKEN});Synchroniser utilisateurs et tickets
// Synchronisation complète des utilisateurs et données de ticketsawait tajo.connectors.sync('zendesk', { type: 'full', resources: ['users', 'tickets', 'organizations'], since: '2023-01-01'});
// Vérifier le statut de synchronisationconst status = await tajo.connectors.status('zendesk');console.log(status);// {// connected: true,// lastSync: '2024-01-15T10:30:00Z',// usersSynced: 8400,// ticketsSynced: 34200,// organizationsSynced: 1200// }Gérer les webhooks Zendesk
app.post('/webhooks/zendesk', async (req, res) => { const signature = req.get('X-Zendesk-Webhook-Signature');
// Vérifier la signature du webhook 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');});Limites de taux
Les limites de taux Zendesk varient selon le plan :
| Plan | Limite de taux | Détails |
|---|---|---|
| Team | 200 requêtes/minute | Par token API |
| Professional | 400 requêtes/minute | Par token API |
| Enterprise | 700 requêtes/minute | Par token API |
| High Volume Add-on | 2 500 requêtes/minute | Par token API |
Limites supplémentaires :
- API Search : 6 requêtes/minute pour anonymes, 100/minute pour authentifiés
- Exports incrémentiels : 10 requêtes/minute
- API Batch : 100 enregistrements par requête batch
- Livraison de webhooks : Retry automatique avec backoff exponentiel
En-têtes de limite de taux
Surveillez les en-têtes X-Rate-Limit-Remaining et Retry-After pour gérer votre utilisation de l’API.
Dépannage
Problèmes courants
| Problème | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Token API invalide | Régénérez le token dans Zendesk Admin |
| 403 Forbidden | Permissions insuffisantes | Vérifiez les exigences de rôle agent ou admin |
| Utilisateur non synchronisé | L’utilisateur est un agent, pas un end-user | Filtrez par rôle dans la configuration de synchronisation |
| Webhook non reçu | Trigger/target non configuré | Configurez la cible webhook dans Zendesk Admin |
| Recherche retourne vide | Délai d’indexation | Attendez 1-2 minutes pour la mise à jour de l’index de recherche |
Mode debug
Activer la journalisation détaillée :
connectors: zendesk: debug: true log_level: verbose log_webhooks: trueTester la connexion
tajo connectors test zendesk# ✓ API connection successful# ✓ Users readable# ✓ Tickets readable# ✓ Organizations readable# ✓ Webhooks configuredBonnes pratiques
- Utilisez les exports incrémentiels - Utilisez l’API Incremental pour la synchronisation de données à grande échelle
- Filtrez uniquement les end-users - Excluez les agents et admins de la synchronisation de contacts Brevo
- Synchronisez les données CSAT - Utilisez les scores de satisfaction pour la segmentation de santé client
- Mappez les organisations - Exploitez les données d’organisation pour les campagnes marketing B2B
- Implémentez les retries webhook - Gérez les échecs temporaires avec grâce
- Utilisez le side-loading - Incluez les enregistrements liés dans les réponses API pour réduire le nombre de requêtes
Sécurité
- Authentification par token API - Accès basé sur token lié à l’email admin
- OAuth 2.0 - Accès délégué basé sur token avec contrôles de périmètre
- Signature de webhook - Vérification de signature HMAC pour les payloads de webhook
- Chiffrement TLS - Toutes les communications API chiffrées via HTTPS
- Liste blanche d’IP - Restreindre l’accès API par plage d’IP