Connettore Zendesk
Collega la tua istanza Zendesk Support a Brevo tramite Tajo per dati di supporto cliente unificati, segmentazione basata sui ticket, scoring di soddisfazione e marketing automation attivata dal supporto.
Panoramica
| Proprietà | Valore |
|---|---|
| Piattaforma | Zendesk |
| Categoria | Supporto |
| Complessità di setup | Media |
| Integrazione ufficiale | Sì |
| Dati sincronizzati | Ticket, Utenti, Organizzazioni, Eventi |
| API Base URL | https://{subdomain}.zendesk.com/api/v2 |
Funzionalità
- Sync degli utenti - Sincronizza utenti finali e agent Zendesk con i contatti Brevo
- Tracciamento ticket - Sincronizza i dati dei ticket per la segmentazione marketing consapevole del supporto
- Mappatura organizzazioni - Associa i contatti alle organizzazioni per workflow B2B
- Punteggi di soddisfazione - Sincronizza i dati CSAT e NPS agli attributi Brevo
- Eventi ticket - Traccia creazione, risoluzione ed escalation dei ticket per i trigger di automazione
- Integrazione help center - Traccia le visualizzazioni degli articoli e il comportamento di ricerca
- Supporto multi-canale - Sincronizza dati da canali email, chat, voice e messaggistica
- Campi personalizzati - Mappa campi personalizzati di ticket e utente Zendesk a Brevo
Prerequisiti
Prima di iniziare, assicurati di avere:
- Un account Zendesk Support (Team, Professional o Enterprise)
- Accesso admin alla tua istanza Zendesk
- Un API token o un’app OAuth configurata
- Un account Brevo con accesso API
- Un account Tajo
Autenticazione
Autenticazione con API token
Usa l’autenticazione email/token per un setup rapido.
curl https://{subdomain}.zendesk.com/api/v2/users.json \ -u {email}/token:{api_token} \ -H "Content-Type: application/json"Genera un API token da Zendesk Admin > Apps and Integrations > APIs > Zendesk API.
OAuth 2.0
Usa OAuth per integrazioni multi-istanza con accesso utente delegato.
# Authorization URLhttps://{subdomain}.zendesk.com/oauth/authorizations/new? response_type=code& client_id={client_id}& redirect_uri={redirect_uri}& scope=read%20writeScope richiesti
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)Configurazione
Setup di base
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: 32Mappatura dei campi
Mappa i campi utente Zendesk agli attributi di contatto Brevo:
Mappature predefinite
| Parameter | Type | Description |
|---|---|---|
email required | string | Indirizzo email dell'utente (identificatore univoco) |
name optional | string | Nome completo, suddiviso in FIRSTNAME/LASTNAME |
phone optional | string | Mappato all'attributo SMS per WhatsApp/SMS |
organization_id optional | integer | Organizzazione associata per la mappatura B2B |
role optional | string | Ruolo utente (end-user, agent, admin) |
tags optional | array | Tag utente da Zendesk |
ticket_restriction optional | string | Livello di accesso ai ticket |
custom_fields optional | object | Valori dei campi utente personalizzati |
Mappatura dei campi personalizzati
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_TIEREndpoint API
API Ticketing
| Metodo | Endpoint | Descrizione |
|---|---|---|
GET | /api/v2/tickets | Elenca i ticket |
POST | /api/v2/tickets | Crea un ticket |
PUT | /api/v2/tickets/{id} | Aggiorna un ticket |
GET | /api/v2/tickets/{id} | Mostra un ticket |
GET | /api/v2/search.json?query={query} | Cerca ticket |
API Utenti
| Metodo | Endpoint | Descrizione |
|---|---|---|
GET | /api/v2/users | Elenca gli utenti |
POST | /api/v2/users | Crea un utente |
PUT | /api/v2/users/{id} | Aggiorna un utente |
GET | /api/v2/users/{id} | Mostra un utente |
GET | /api/v2/users/search.json?query={query} | Cerca utenti |
API Organizzazioni
| Metodo | Endpoint | Descrizione |
|---|---|---|
GET | /api/v2/organizations | Elenca le organizzazioni |
POST | /api/v2/organizations | Crea un’organizzazione |
GET | /api/v2/organizations/{id}/users | Elenca i membri dell’organizzazione |
API Satisfaction Rating
| Metodo | Endpoint | Descrizione |
|---|---|---|
GET | /api/v2/satisfaction_ratings | Elenca i rating di soddisfazione |
GET | /api/v2/satisfaction_ratings/{id} | Mostra un rating |
Eventi
Eventi ticket
| Evento | Trigger | Caso d’uso |
|---|---|---|
ticket.created | Nuovo ticket inviato | Conferma di supporto |
ticket.updated | Stato del ticket modificato | Notifica di stato |
ticket.solved | Ticket marcato come risolto | Trigger sondaggio CSAT |
ticket.reopened | Ticket risolto riaperto | Avviso di escalation |
Eventi utente
| Evento | Trigger | Caso d’uso |
|---|---|---|
user.created | Nuovo utente registrato | Benvenuto al supporto |
user.updated | Profilo utente modificato | Sync attributi |
user.merged | Utenti uniti | Deduplicazione |
Eventi di soddisfazione
| Evento | Trigger | Caso d’uso |
|---|---|---|
satisfaction_rating.created | CSAT inviato | Elaborazione feedback |
satisfaction_rating.bad | Rating negativo | Outreach di recupero |
satisfaction_rating.good | Rating positivo | Campagne di advocacy |
Esempi di codice
Inizializza il connettore
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});Sincronizza utenti e ticket
// 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// }Gestisci i webhook Zendesk
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');});Limiti di velocità
I limiti di velocità Zendesk variano in base al piano:
| Piano | Limite | Dettagli |
|---|---|---|
| Team | 200 richieste/minuto | Per API token |
| Professional | 400 richieste/minuto | Per API token |
| Enterprise | 700 richieste/minuto | Per API token |
| High Volume Add-on | 2.500 richieste/minuto | Per API token |
Limiti aggiuntivi:
- Search API: 6 richieste/minuto per anonimi, 100/minuto per autenticati
- Esportazioni incrementali: 10 richieste/minuto
- Batch API: 100 record per richiesta batch
- Consegna webhook: Retry automatico con backoff esponenziale
Header dei limiti di velocità
Monitora gli header X-Rate-Limit-Remaining e Retry-After per gestire il tuo utilizzo dell’API.
Risoluzione dei problemi
Problemi comuni
| Problema | Causa | Soluzione |
|---|---|---|
| 401 Unauthorized | API token non valido | Rigenera il token in Zendesk Admin |
| 403 Forbidden | Permessi insufficienti | Controlla i requisiti del ruolo agent o admin |
| Utente non sincronizzato | L’utente è un agent, non un end-user | Filtra per ruolo nella configurazione di sync |
| Webhook non ricevuto | Trigger/target non configurato | Configura il target webhook in Zendesk Admin |
| La ricerca restituisce vuoto | Ritardo di indicizzazione | Attendi 1-2 minuti per l’aggiornamento dell’indice di ricerca |
Modalità debug
Abilita il logging dettagliato:
connectors: zendesk: debug: true log_level: verbose log_webhooks: trueTesta la connessione
tajo connectors test zendesk# ✓ API connection successful# ✓ Users readable# ✓ Tickets readable# ✓ Organizations readable# ✓ Webhooks configuredBest practice
- Usa le esportazioni incrementali - Usa l’Incremental API per la sync di dati su larga scala
- Filtra solo gli end-user - Escludi agent e admin dalla sync dei contatti Brevo
- Sincronizza i dati CSAT - Usa i punteggi di soddisfazione per la segmentazione customer health
- Mappa le organizzazioni - Sfrutta i dati delle organizzazioni per campagne marketing B2B
- Implementa retry sui webhook - Gestisci i fallimenti temporanei in modo elegante
- Usa il side-loading - Includi record correlati nelle risposte API per ridurre il numero di richieste
Sicurezza
- Autenticazione con API token - Accesso basato su token legato all’email admin
- OAuth 2.0 - Accesso delegato basato su token con controlli scope
- Firma webhook - Verifica della firma HMAC per i payload webhook
- Cifratura TLS - Tutte le comunicazioni API cifrate via HTTPS
- IP whitelisting - Limita l’accesso API per intervallo IP