Zendesk-connector
Verbind je Zendesk Support-instantie met Brevo via Tajo voor geünificeerde klantsupportdata, ticketgebaseerde segmentatie, tevredenheidsscores en supportgetriggerde marketingautomatisering.
Overzicht
| Eigenschap | Waarde |
|---|---|
| Platform | Zendesk |
| Categorie | Support |
| Setupcomplexiteit | Gemiddeld |
| Officiële integratie | Ja |
| Gesynchroniseerde data | Tickets, Gebruikers, Organisaties, Events |
| API base URL | https://{subdomain}.zendesk.com/api/v2 |
Functies
- Gebruikerssynchronisatie - Synchroniseer Zendesk-eindgebruikers en -agents met Brevo-contacten
- Tickettracking - Synchroniseer ticketdata voor support-bewuste marketingsegmentatie
- Organisatiekoppeling - Koppel contacten aan organisaties voor B2B-workflows
- Tevredenheidsscores - Synchroniseer CSAT- en NPS-data naar Brevo-attributen
- Ticket-events - Volg ticket-aanmaak, -oplossing en -escalatie voor automation-triggers
- Helpcenterintegratie - Volg artikelweergaven en zoekgedrag
- Multi-channel-support - Synchroniseer data uit e-mail-, chat-, voice- en messagingkanalen
- Custom velden - Koppel Zendesk-customticket- en gebruikersvelden aan Brevo
Vereisten
Voordat je begint, zorg dat je beschikt over:
- Een Zendesk Support-account (Team, Professional of Enterprise)
- Admin-toegang tot je Zendesk-instantie
- API-token of OAuth-app geconfigureerd
- Een Brevo-account met API-toegang
- Een Tajo-account
Authenticatie
API-token-authenticatie
Gebruik e-mail/token-authenticatie voor een snelle setup.
curl https://{subdomain}.zendesk.com/api/v2/users.json \ -u {email}/token:{api_token} \ -H "Content-Type: application/json"Genereer een API-token via Zendesk Admin > Apps and Integrations > APIs > Zendesk API.
OAuth 2.0
Gebruik OAuth voor multi-instantie-integraties met gedelegeerde gebruikerstoegang.
# Authorization URLhttps://{subdomain}.zendesk.com/oauth/authorizations/new? response_type=code& client_id={client_id}& redirect_uri={redirect_uri}& scope=read%20writeVereiste 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)Configuratie
Basisopzet
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: 32Veldmapping
Koppel Zendesk-gebruikersvelden aan Brevo-contactattributen:
Standaard-mappings
| Parameter | Type | Description |
|---|---|---|
email required | string | E-mailadres gebruiker (unieke identifier) |
name optional | string | Volledige naam, opgesplitst in FIRSTNAME/LASTNAME |
phone optional | string | Koppelt aan SMS-attribuut voor WhatsApp/sms |
organization_id optional | integer | Gekoppelde organisatie voor B2B-mapping |
role optional | string | Gebruikersrol (end-user, agent, admin) |
tags optional | array | Gebruikerstags uit Zendesk |
ticket_restriction optional | string | Toegangsniveau tickets |
custom_fields optional | object | Waarden van custom user fields |
Custom veldmapping
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 | Beschrijving |
|---|---|---|
GET | /api/v2/tickets | Tickets opvragen |
POST | /api/v2/tickets | Ticket aanmaken |
PUT | /api/v2/tickets/{id} | Ticket bijwerken |
GET | /api/v2/tickets/{id} | Ticket tonen |
GET | /api/v2/search.json?query={query} | Tickets zoeken |
Users API
| Methode | Endpoint | Beschrijving |
|---|---|---|
GET | /api/v2/users | Gebruikers opvragen |
POST | /api/v2/users | Gebruiker aanmaken |
PUT | /api/v2/users/{id} | Gebruiker bijwerken |
GET | /api/v2/users/{id} | Gebruiker tonen |
GET | /api/v2/users/search.json?query={query} | Gebruikers zoeken |
Organizations API
| Methode | Endpoint | Beschrijving |
|---|---|---|
GET | /api/v2/organizations | Organisaties opvragen |
POST | /api/v2/organizations | Organisatie aanmaken |
GET | /api/v2/organizations/{id}/users | Organisatieleden opvragen |
Satisfaction Ratings API
| Methode | Endpoint | Beschrijving |
|---|---|---|
GET | /api/v2/satisfaction_ratings | Tevredenheidsratings opvragen |
GET | /api/v2/satisfaction_ratings/{id} | Rating tonen |
Events
Ticket-events
| Event | Trigger | Use case |
|---|---|---|
ticket.created | Nieuwe ticket ingediend | Support-bevestiging |
ticket.updated | Ticketstatus gewijzigd | Statusnotificatie |
ticket.solved | Ticket gemarkeerd als opgelost | CSAT-survey-trigger |
ticket.reopened | Opgeloste ticket heropend | Escalatiealert |
User-events
| Event | Trigger | Use case |
|---|---|---|
user.created | Nieuwe gebruiker geregistreerd | Welcome-to-support |
user.updated | Gebruikersprofiel gewijzigd | Attribuutsync |
user.merged | Gebruikers samengevoegd | Deduplicatie |
Satisfaction-events
| Event | Trigger | Use case |
|---|---|---|
satisfaction_rating.created | CSAT ingediend | Feedbackverwerking |
satisfaction_rating.bad | Negatieve rating | Recovery-outreach |
satisfaction_rating.good | Positieve rating | Advocacy-campagnes |
Codevoorbeelden
Connector initialiseren
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});Gebruikers en tickets synchroniseren
// 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 afhandelen
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');});Ratelimits
Zendesk-ratelimits variëren per plan:
| Plan | Ratelimit | Details |
|---|---|---|
| Team | 200 requests/minuut | Per API-token |
| Professional | 400 requests/minuut | Per API-token |
| Enterprise | 700 requests/minuut | Per API-token |
| High Volume Add-on | 2.500 requests/minuut | Per API-token |
Aanvullende limieten:
- Search API: 6 requests/minuut voor anoniem, 100/minuut voor geauthenticeerd
- Incremental exports: 10 requests/minuut
- Batch API: 100 records per batch-request
- Webhook-levering: Automatische retry met exponentiële backoff
Ratelimit-headers
Monitor de X-Rate-Limit-Remaining- en Retry-After-headers om je API-gebruik te beheren.
Probleemoplossing
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
| 401 Unauthorized | Ongeldig API-token | Genereer token opnieuw in Zendesk-admin |
| 403 Forbidden | Onvoldoende rechten | Controleer de vereiste agent- of adminrol |
| Gebruiker niet gesynchroniseerd | Gebruiker is agent, geen end-user | Filter op rol in sync-configuratie |
| Webhook niet ontvangen | Trigger/target niet geconfigureerd | Stel een webhook-target in binnen Zendesk-admin |
| Search geeft leeg resultaat | Indexering-vertraging | Wacht 1-2 minuten op update van de zoekindex |
Debugmodus
Activeer uitgebreide logging:
connectors: zendesk: debug: true log_level: verbose log_webhooks: trueVerbinding testen
tajo connectors test zendesk# ✓ API connection successful# ✓ Users readable# ✓ Tickets readable# ✓ Organizations readable# ✓ Webhooks configuredBest practices
- Gebruik incremental exports - Gebruik de Incremental API voor grootschalige datasync
- Filter alleen op end-users - Sluit agents en admins uit van Brevo-contactsync
- Synchroniseer CSAT-data - Gebruik tevredenheidsscores voor klant-health-segmentatie
- Koppel organisaties - Benut organisatiedata voor B2B-marketingcampagnes
- Implementeer webhook-retries - Verwerk tijdelijke storingen netjes
- Gebruik side-loading - Neem gerelateerde records op in API-responses om het aantal requests te beperken
Beveiliging
- API-token-authenticatie - Tokengebaseerde toegang gekoppeld aan admin-e-mail
- OAuth 2.0 - Tokengebaseerde gedelegeerde toegang met scope-controls
- Webhook-signing - HMAC-signatureverificatie voor webhook-payloads
- TLS-encryptie - Alle API-communicatie versleuteld via HTTPS
- IP-whitelisting - Beperk API-toegang op IP-range