U
Utilia AI

Site en construction

Lancement officiel bientot !

Questions ? hello@utilia-ai.com

Retour au workflow
Documentation technique

Analyse de Sentiment des Retours Clients Zendesk

Documentation Technique - Analyse de Sentiment des Retours Clients Zendesk

Version : 1.0 Date : Janvier 2026 Auteur : Utilia AI Compatibilité : n8n v1.0+


Vue d’ensemble

Objectif du workflow

Ce workflow automatise l’analyse de sentiment des tickets Zendesk en utilisant l’intelligence artificielle d’OpenAI. Il permet aux équipes support de comprendre rapidement la tonalité globale des retours clients sans lecture manuelle de chaque ticket.

Le processus récupère les tickets d’une période configurable, analyse le sentiment de chaque message via GPT-4o-mini, puis exporte les résultats dans Google Sheets avec des statistiques agrégées.

Cas d’usage

Équipes Support Client

  • Identifier rapidement les tickets négatifs prioritaires
  • Suivre l’évolution de la satisfaction client dans le temps
  • Détecter les pics de mécontentement après des incidents

Customer Success Managers

  • Générer des rapports hebdomadaires de sentiment
  • Préparer les revues de compte avec des données quantifiées
  • Mesurer l’impact des actions d’amélioration

Direction et Management

  • Obtenir une vue d’ensemble de la satisfaction client
  • Comparer les tendances mois par mois
  • Justifier les investissements en support client

Prérequis techniques

Compte n8n

  • Version Cloud (cloud.n8n.io) ou self-hosted v1.0+
  • Plan gratuit suffisant pour ce workflow

Zendesk

  • Compte avec accès API activé
  • Permissions de lecture sur les tickets
  • Token d’API ou OAuth configuré

OpenAI

  • Compte avec crédits disponibles
  • Clé API générée
  • Modèle GPT-4o-mini recommandé (coût optimisé)

Google Sheets

  • Compte Google avec accès API
  • OAuth2 configuré dans n8n
  • Spreadsheet créé avec deux feuilles : « Ticket Analysis » et « Summary »

Connaissances recommandées

  • Bases n8n (nodes, connections, executions)
  • Notions de base sur les APIs REST
  • Compréhension du format JSON

Architecture du workflow

Schéma de flux

┌─────────────────────────────────────────┐
│         Start Analysis (Trigger)        │
└────────────────────┬────────────────────┘


┌─────────────────────────────────────────┐
│    Set Parameters (daysBack, dates)     │
└────────────────────┬────────────────────┘

         ┌───────────┴───────────┐
         │                       │
         ▼                       ▼
┌─────────────────┐    ┌─────────────────┐
│  Get Zendesk    │    │  Mock Zendesk   │
│    Tickets      │    │     Data        │
│   (disabled)    │    │   (testing)     │
└────────┬────────┘    └────────┬────────┘
         │                       │
         └───────────┬───────────┘


┌─────────────────────────────────────────┐
│      Filter Recent Tickets (date)       │
└────────────────────┬────────────────────┘


┌─────────────────────────────────────────┐
│    Sanitize Input (remove HTML/XSS)     │
└────────────────────┬────────────────────┘


┌─────────────────────────────────────────┐
│   Split In Batches (50 tickets/batch)   │
└────────────────────┬────────────────────┘


┌─────────────────────────────────────────┐
│      OpenAI GPT-4o (LLM provider)       │
│               ↓ ai_languageModel        │
│         Analyze Sentiment               │
└────────────────────┬────────────────────┘


┌─────────────────────────────────────────┐
│    Format Results (structure output)    │
└────────────────────┬────────────────────┘

         ┌───────────┴───────────┐
         │                       │
         ▼                       ▼
┌─────────────────┐    ┌─────────────────┐
│  Append Ticket  │    │   Aggregate     │
│  Analysis       │    │   All Results   │
│  (Sheets)       │    │                 │
└─────────────────┘    └────────┬────────┘


                     ┌─────────────────────┐
                     │  Generate Summary   │
                     │      Stats          │
                     └──────────┬──────────┘


                     ┌─────────────────────┐
                     │   Append Summary    │
                     │      (Sheets)       │
                     └─────────────────────┘

Nodes principaux et leur rôle

Phase 1 : Entrée et Configuration

Start Analysis (Manual Trigger)

  • Fonction : Déclenche l’exécution du workflow à la demande
  • Paramètres : Aucun
  • Note : Peut être remplacé par un Schedule Trigger pour automatisation

Set Parameters (Set)

  • Fonction : Configure les variables globales
  • Paramètres clés :
    • daysBack : Nombre de jours à analyser (défaut : 7)
    • startDate : Date de début calculée automatiquement
    • analysisDate : Timestamp de l’analyse

Phase 2 : Récupération des Données

Get Zendesk Tickets (Zendesk)

  • Fonction : Récupère tous les tickets depuis l’API Zendesk
  • Paramètres :
    • Operation : Get All
    • Limit : 500
    • Sort By : created_at (DESC)
  • Note : Désactivé par défaut, activer après configuration credentials

Mock Zendesk Data (Code)

  • Fonction : Fournit des données de test
  • Usage : Permet de tester le workflow sans credentials Zendesk

Filter Recent Tickets (Filter)

  • Fonction : Ne conserve que les tickets de la période configurée
  • Condition : created_at > startDate

Sanitize Input (Code)

  • Fonction : Nettoie les données entrantes
  • Sécurité : Supprime les balises HTML et scripts potentiellement dangereux

Phase 3 : Analyse IA

Split In Batches (Split In Batches)

  • Fonction : Divise les tickets en lots de 50
  • Optimisation : Évite les timeouts et OOM sur grands volumes

OpenAI GPT-4o (LM Chat OpenAI)

  • Fonction : Fournit le modèle de langage
  • Paramètres :
    • Model : gpt-4o-mini
    • Temperature : 0 (résultats déterministes)
  • Connexion : ai_languageModel vers Analyze Sentiment

Analyze Sentiment (Sentiment Analysis)

  • Fonction : Catégorise le sentiment de chaque ticket
  • Input : description ou subject du ticket
  • Output : sentiment, sentimentConfidence, detailedResults
  • Catégories : Very Positive, Positive, Neutral, Negative, Very Negative

Phase 4 : Formatage et Export

Format Results (Set)

  • Fonction : Structure les données pour l’export
  • Mapping : Combine données Zendesk + résultat sentiment

Aggregate All Results (Aggregate)

  • Fonction : Regroupe tous les tickets en un seul item
  • Usage : Prépare les données pour le calcul des statistiques

Generate Summary Stats (Code)

  • Fonction : Calcule les métriques globales
  • Output : total_tickets, compteurs par catégorie, positive_rate, negative_rate

Append to Sentiment Report (Google Sheets)

  • Fonction : Ajoute chaque ticket dans la feuille « Ticket Analysis »
  • Mode : Append (ajoute à la suite)

Append Summary Stats (Google Sheets)

  • Fonction : Ajoute les statistiques dans la feuille « Summary »
  • Usage : Crée un historique des analyses

Configuration technique

Paramètres à ajuster

1. Période d’analyse (Node « Set Parameters »)

{
  "daysBack": 7
}

Modifiez daysBack pour analyser une période différente :

  • 1 : Dernier jour uniquement
  • 7 : Dernière semaine (défaut)
  • 30 : Dernier mois

2. Limite de tickets (Node « Get Zendesk Tickets »)

ParamètreDéfautRecommandéDescription
limit500500-1000Nombre max de tickets récupérés

Conseil : Augmentez progressivement si vous avez beaucoup de tickets.

3. Taille des lots (Node « Split In Batches »)

ParamètreDéfautRecommandéDescription
batchSize5030-50Tickets par lot pour l’analyse IA

Conseil : Réduisez si vous rencontrez des erreurs de rate limit OpenAI.

Credentials requises

Zendesk API

  1. Créer une credential de type « Zendesk API »
  2. Configurer :
    • Subdomain : votre-entreprise.zendesk.com
    • Email : votre email Zendesk
    • API Token : généré dans Admin > Channels > API
  3. Assigner au node « Get Zendesk Tickets »

OpenAI API

  1. Créer une credential de type « OpenAI API »
  2. Configurer :
    • API Key : clé générée sur platform.openai.com
  3. Assigner au node « OpenAI GPT-4o »

Google Sheets OAuth2

  1. Créer une credential de type « Google Sheets OAuth2 »
  2. Autoriser les scopes : spreadsheets (lecture/écriture)
  3. Configurer le Document ID dans les nodes Google Sheets
  4. Assigner aux nodes « Append to Sentiment Report » et « Append Summary Stats »

Logique de traitement détaillée

Étape 1 : Configuration des paramètres

Input : Aucun (déclenchement manuel)

Action :

  • Calcul de startDate : date actuelle moins daysBack jours
  • Génération de analysisDate : timestamp formaté

Output :

{
  "daysBack": 7,
  "startDate": "2026-01-18T00:00:00.000Z",
  "analysisDate": "2026-01-25 14:30"
}

Étape 2 : Récupération et filtrage des tickets

Input : Paramètres de la période

Action :

  1. Appel API Zendesk (GET /api/v2/tickets)
  2. Tri par date de création décroissante
  3. Filtrage : conservation uniquement des tickets avec created_at > startDate

Output : Liste de tickets filtrés avec id, subject, description, created_at, status, priority

Étape 3 : Nettoyage des données

Input : Tickets bruts de Zendesk

Action :

  • Suppression des balises <script> et leur contenu
  • Suppression de toutes les balises HTML
  • Décodage des entités HTML ( , &, etc.)
  • Trim des espaces

Code JavaScript :

const sanitize = (str) => {
  if (!str) return '';
  return String(str)
    .replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '')
    .replace(/<[^>]*>/g, '')
    .replace(/&nbsp;/g, ' ')
    .replace(/&amp;/g, '&')
    .replace(/&lt;/g, '<')
    .replace(/&gt;/g, '>')
    .trim();
};

Output : Tickets avec subject et description nettoyés

Étape 4 : Analyse du sentiment

Input : Texte nettoyé (description ou subject)

Action :

  1. Envoi au modèle GPT-4o-mini via le node Sentiment Analysis
  2. Le modèle analyse le ton et l’émotion du texte
  3. Classification en 5 catégories

Catégories de sentiment :

  • Very Positive : Client très satisfait, remerciements
  • Positive : Feedback positif, satisfaction
  • Neutral : Question technique, demande d’information
  • Negative : Insatisfaction, plainte modérée
  • Very Negative : Colère, menace, urgence critique

Output :

{
  "sentiment": "Negative",
  "sentimentConfidence": "0.85"
}

Étape 5 : Calcul des statistiques

Input : Tableau de tous les résultats d’analyse

Action :

  1. Comptage par catégorie de sentiment
  2. Calcul des pourcentages positif/négatif

Code JavaScript :

const stats = {
  total_tickets: allData.length,
  very_positive: 0,
  positive: 0,
  neutral: 0,
  negative: 0,
  very_negative: 0
};

allData.forEach(item => {
  const sentiment = (item.sentiment || '').toLowerCase();
  if (sentiment.includes('very positive')) stats.very_positive++;
  else if (sentiment.includes('positive')) stats.positive++;
  else if (sentiment.includes('very negative')) stats.very_negative++;
  else if (sentiment.includes('negative')) stats.negative++;
  else stats.neutral++;
});

stats.positive_rate = Math.round(
  ((stats.very_positive + stats.positive) / stats.total_tickets) * 100
) + '%';

Output : Statistiques agrégées avec compteurs et pourcentages


Optimisations possibles

Performance

Batch size adaptatif

// Dans Set Parameters, ajuster selon le volume
const ticketCount = $input.first().json.estimatedCount;
const batchSize = ticketCount > 500 ? 30 : 50;

Cache des résultats

  • Paramètre : Settings > Save Data Success Execution
  • Défaut : All
  • Permet de rejouer les données sans rappeler les APIs

Gestion des erreurs

Retry automatique (Node « OpenAI GPT-4o »)

  • Settings > Retry On Fail : Activé
  • Max Tries : 3
  • Wait Between Tries : 2000 ms

Continue on Error (Node « Analyze Sentiment »)

  • onError : continueRegularOutput
  • Évite l’arrêt du workflow si un ticket échoue

Scalabilité

Pour les grands volumes (> 1000 tickets/analyse) :

  1. Réduire le batch size à 20-30
  2. Ajouter un node Wait (1000ms) entre les batches
  3. Envisager une exécution planifiée par tranches horaires

Limitations et considérations

Limitations techniques

AspectLimiteContournement
Tickets/exécution~500-1000Exécutions multiples par période
Rate limit Zendesk400 req/minRespecté par défaut
Rate limit OpenAIVariable selon planRéduire batch size
Coût OpenAI~$0.0002/ticketSurveiller la consommation

Considérations légales

RGPD

  • Les tickets peuvent contenir des données personnelles
  • Assurez-vous d’avoir une base légale pour le traitement
  • Les données transitent par OpenAI (vérifier leur politique de confidentialité)

Conditions d’utilisation Zendesk

  • L’API est soumise aux limites de votre plan
  • Respecter les quotas pour éviter la suspension

Best practices

Sécurité

  • Ne jamais exposer les credentials dans le workflow partagé
  • Utiliser des comptes de service avec permissions minimales
  • Activer l’audit log n8n pour traçabilité

Maintenance

  • Vérifier mensuellement les credentials (expiration tokens)
  • Surveiller les coûts OpenAI
  • Archiver les anciens rapports Google Sheets

Métriques de performance

KPIs à suivre

Volume

  • Nombre de tickets analysés par exécution
  • Taux de succès des analyses (tickets traités / tickets récupérés)

Qualité

  • Précision perçue du sentiment (validation manuelle d’échantillons)
  • Taux de sentiment « Neutral » (si trop élevé, ajuster le prompt)

Benchmarks attendus

Par exécution :

  • Tickets traités : 50-200
  • Durée moyenne : 2-5 minutes
  • Coût OpenAI : $0.01-0.05

Par mois (usage standard) :

  • Analyses : 4-8 (hebdomadaires)
  • Tickets totaux : 400-1600
  • Gain de temps : 15-25h
  • ROI estimé : 120-200 %

Dépannage

Problème : Erreur « Zendesk API authentication failed »

Symptômes : Le node Zendesk retourne une erreur 401 ou 403

Causes possibles :

  1. Token API expiré ou révoqué
  2. Mauvais subdomain configuré
  3. Permissions insuffisantes

Solutions :

  1. Régénérer le token dans Admin > Channels > API
  2. Vérifier le format : subdomain sans .zendesk.com
  3. S’assurer que l’utilisateur a accès aux tickets

Problème : Erreur « OpenAI rate limit exceeded »

Symptômes : Erreur 429 après plusieurs analyses

Causes possibles :

  • Trop de requêtes simultanées
  • Quota de tokens atteint

Solutions :

  1. Réduire le batch size à 20-30
  2. Activer Retry On Fail avec délai de 5000ms
  3. Vérifier votre quota sur platform.openai.com/usage

Problème : Résultats de sentiment incohérents

Symptômes : Tickets positifs classés négatifs ou inversement

Causes possibles :

  • Temperature trop élevée
  • Tickets avec du sarcasme ou ironie
  • Texte trop court pour l’analyse

Solutions :

  1. Vérifier que Temperature = 0 dans OpenAI GPT-4o
  2. Ajouter un filtrage des tickets trop courts (< 10 caractères)
  3. Envisager un modèle plus puissant (gpt-4o) pour les cas complexes

Problème : Google Sheets « Spreadsheet not found »

Symptômes : Erreur lors de l’append vers Sheets

Causes possibles :

  • Document ID incorrect
  • Feuille non existante
  • Permissions insuffisantes

Solutions :

  1. Copier l’ID depuis l’URL du spreadsheet (entre /d/ et /edit)
  2. Créer les feuilles « Ticket Analysis » et « Summary »
  3. Partager le document avec le compte de service OAuth

Problème : Workflow timeout sur grands volumes

Symptômes : Exécution interrompue après plusieurs minutes

Causes possibles :

  • Trop de tickets à traiter
  • Batch size trop grand

Solutions :

  1. Réduire la période d’analyse (daysBack)
  2. Augmenter le timeout dans Settings > Execution Timeout
  3. Diviser en plusieurs exécutions planifiées

Ressources

Documentation n8n

Outils complémentaires


Support

Besoin d’aide pour implémenter ce workflow ?

Contactez Utilia AI :

Services proposés :

  • Installation et configuration du workflow
  • Personnalisation avancée (autres helpdesks, langues, catégories)
  • Formation n8n
  • Développement workflows sur-mesure

Document vivant : Cette documentation sera mise à jour selon les évolutions n8n et les retours utilisateurs.

Version actuelle : 1.0 - Janvier 2026

Besoin d'aide avec ce workflow ?

Installation, configuration, personnalisation : on peut vous accompagner.

✓ Gratuit • ✓ Sans engagement • ✓ Réponse sous 24h