Zendesk-connector

Verbind je Zendesk Support-instantie met Brevo via Tajo voor geünificeerde klantsupportdata, ticketgebaseerde segmentatie, tevredenheidsscores en supportgetriggerde marketingautomatisering.

Overzicht

EigenschapWaarde
PlatformZendesk
CategorieSupport
SetupcomplexiteitGemiddeld
Officiële integratieJa
Gesynchroniseerde dataTickets, Gebruikers, Organisaties, Events
API base URLhttps://{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:

  1. Een Zendesk Support-account (Team, Professional of Enterprise)
  2. Admin-toegang tot je Zendesk-instantie
  3. API-token of OAuth-app geconfigureerd
  4. Een Brevo-account met API-toegang
  5. Een Tajo-account

Authenticatie

API-token-authenticatie

Gebruik e-mail/token-authenticatie voor een snelle setup.

Terminal window
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.

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

Vereiste 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)

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: 32

Veldmapping

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_TIER

API-endpoints

Ticketing API

MethodeEndpointBeschrijving
GET/api/v2/ticketsTickets opvragen
POST/api/v2/ticketsTicket 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

MethodeEndpointBeschrijving
GET/api/v2/usersGebruikers opvragen
POST/api/v2/usersGebruiker 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

MethodeEndpointBeschrijving
GET/api/v2/organizationsOrganisaties opvragen
POST/api/v2/organizationsOrganisatie aanmaken
GET/api/v2/organizations/{id}/usersOrganisatieleden opvragen

Satisfaction Ratings API

MethodeEndpointBeschrijving
GET/api/v2/satisfaction_ratingsTevredenheidsratings opvragen
GET/api/v2/satisfaction_ratings/{id}Rating tonen

Events

Ticket-events

EventTriggerUse case
ticket.createdNieuwe ticket ingediendSupport-bevestiging
ticket.updatedTicketstatus gewijzigdStatusnotificatie
ticket.solvedTicket gemarkeerd als opgelostCSAT-survey-trigger
ticket.reopenedOpgeloste ticket heropendEscalatiealert

User-events

EventTriggerUse case
user.createdNieuwe gebruiker geregistreerdWelcome-to-support
user.updatedGebruikersprofiel gewijzigdAttribuutsync
user.mergedGebruikers samengevoegdDeduplicatie

Satisfaction-events

EventTriggerUse case
satisfaction_rating.createdCSAT ingediendFeedbackverwerking
satisfaction_rating.badNegatieve ratingRecovery-outreach
satisfaction_rating.goodPositieve ratingAdvocacy-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 Zendesk
await tajo.connectors.connect('zendesk', {
subdomain: 'yourcompany',
apiToken: process.env.ZENDESK_API_TOKEN
});

Gebruikers en tickets synchroniseren

// 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 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:

PlanRatelimitDetails
Team200 requests/minuutPer API-token
Professional400 requests/minuutPer API-token
Enterprise700 requests/minuutPer API-token
High Volume Add-on2.500 requests/minuutPer 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

ProbleemOorzaakOplossing
401 UnauthorizedOngeldig API-tokenGenereer token opnieuw in Zendesk-admin
403 ForbiddenOnvoldoende rechtenControleer de vereiste agent- of adminrol
Gebruiker niet gesynchroniseerdGebruiker is agent, geen end-userFilter op rol in sync-configuratie
Webhook niet ontvangenTrigger/target niet geconfigureerdStel een webhook-target in binnen Zendesk-admin
Search geeft leeg resultaatIndexering-vertragingWacht 1-2 minuten op update van de zoekindex

Debugmodus

Activeer uitgebreide logging:

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

Verbinding testen

Terminal window
tajo connectors test zendesk
# ✓ API connection successful
# ✓ Users readable
# ✓ Tickets readable
# ✓ Organizations readable
# ✓ Webhooks configured

Best practices

  1. Gebruik incremental exports - Gebruik de Incremental API voor grootschalige datasync
  2. Filter alleen op end-users - Sluit agents en admins uit van Brevo-contactsync
  3. Synchroniseer CSAT-data - Gebruik tevredenheidsscores voor klant-health-segmentatie
  4. Koppel organisaties - Benut organisatiedata voor B2B-marketingcampagnes
  5. Implementeer webhook-retries - Verwerk tijdelijke storingen netjes
  6. 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

Gerelateerde resources

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI-assistent

Hallo! Stel me vragen over de documentatie.