Conector de Zendesk

Conecta tu instancia de Zendesk Support con Brevo a través de Tajo para unificar los datos de soporte al cliente, segmentar por tickets, puntuar la satisfacción y automatizar marketing activado por soporte.

Resumen

PropiedadValor
PlataformaZendesk
CategoríaSoporte
Complejidad de configuraciónMedia
Integración oficial
Datos sincronizadosTickets, Usuarios, Organizaciones, Eventos
URL base de la APIhttps://{subdomain}.zendesk.com/api/v2

Funcionalidades

  • Sincronización de usuarios - Sincroniza los usuarios finales y agentes de Zendesk con los contactos de Brevo
  • Seguimiento de tickets - Sincroniza los datos de ticket para una segmentación de marketing consciente del soporte
  • Mapeo de organizaciones - Asocia contactos con organizaciones para flujos B2B
  • Puntuaciones de satisfacción - Sincroniza datos de CSAT y NPS como atributos de Brevo
  • Eventos de tickets - Registra la creación, resolución y escalado de tickets como disparadores de automatización
  • Integración con help center - Registra las visitas a artículos y el comportamiento de búsqueda
  • Soporte multicanal - Sincroniza datos de email, chat, voz y canales de mensajería
  • Campos personalizados - Asocia campos personalizados de tickets y usuarios de Zendesk con Brevo

Requisitos previos

Antes de empezar, asegúrate de tener:

  1. Una cuenta de Zendesk Support (Team, Professional o Enterprise)
  2. Acceso de administrador a tu instancia de Zendesk
  3. Un token de API o una app OAuth configurada
  4. Una cuenta de Brevo con acceso a la API
  5. Una cuenta de Tajo

Autenticación

Autenticación con token de API

Usa la autenticación con email/token para una configuración rápida.

Terminal window
curl https://{subdomain}.zendesk.com/api/v2/users.json \
-u {email}/token:{api_token} \
-H "Content-Type: application/json"

Genera un token de API desde Zendesk Admin > Apps and Integrations > APIs > Zendesk API.

OAuth 2.0

Usa OAuth para integraciones multiinstancia con acceso delegado del usuario.

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

Scopes requeridos

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)

Configuración

Configuración básica

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

Asignación de campos

Asocia los campos de usuario de Zendesk con atributos de contacto de Brevo:

Asignaciones predeterminadas

Parameter Type Description
email required
string

Dirección de email del usuario (identificador único)

name optional
string

Nombre completo, dividido en FIRSTNAME/LASTNAME

phone optional
string

Se asocia al atributo SMS para WhatsApp/SMS

organization_id optional
integer

Organización asociada para el mapeo B2B

role optional
string

Rol de usuario (end-user, agent, admin)

tags optional
array

Etiquetas de usuario de Zendesk

ticket_restriction optional
string

Nivel de acceso a tickets

custom_fields optional
object

Valores de campos de usuario personalizados

Asignación de campos personalizados

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

Endpoints de la API

API de ticketing

MétodoEndpointDescripción
GET/api/v2/ticketsListar tickets
POST/api/v2/ticketsCrear un ticket
PUT/api/v2/tickets/{id}Actualizar un ticket
GET/api/v2/tickets/{id}Mostrar un ticket
GET/api/v2/search.json?query={query}Buscar tickets

API de usuarios

MétodoEndpointDescripción
GET/api/v2/usersListar usuarios
POST/api/v2/usersCrear un usuario
PUT/api/v2/users/{id}Actualizar un usuario
GET/api/v2/users/{id}Mostrar un usuario
GET/api/v2/users/search.json?query={query}Buscar usuarios

API de organizaciones

MétodoEndpointDescripción
GET/api/v2/organizationsListar organizaciones
POST/api/v2/organizationsCrear una organización
GET/api/v2/organizations/{id}/usersListar miembros de una organización

API de valoraciones de satisfacción

MétodoEndpointDescripción
GET/api/v2/satisfaction_ratingsListar valoraciones de satisfacción
GET/api/v2/satisfaction_ratings/{id}Mostrar una valoración

Eventos

Eventos de tickets

EventoDisparadorCaso de uso
ticket.createdNuevo ticket enviadoAcuse de recibo de soporte
ticket.updatedCambio de estado del ticketNotificación de estado
ticket.solvedTicket marcado como resueltoDisparador de encuesta CSAT
ticket.reopenedTicket resuelto reabiertoAlerta de escalado

Eventos de usuario

EventoDisparadorCaso de uso
user.createdNuevo usuario registradoBienvenida al soporte
user.updatedPerfil de usuario modificadoSincronización de atributos
user.mergedUsuarios fusionadosDeduplicación

Eventos de satisfacción

EventoDisparadorCaso de uso
satisfaction_rating.createdCSAT enviadoProcesamiento de feedback
satisfaction_rating.badValoración negativaContacto de recuperación
satisfaction_rating.goodValoración positivaCampañas de promotores

Ejemplos de código

Inicializar el conector

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
});

Sincronizar usuarios y tickets

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

Gestionar webhooks de 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');
});

Límites de velocidad

Los límites de velocidad de Zendesk varían según el plan:

PlanLímite de velocidadDetalles
Team200 peticiones/minutoPor token de API
Professional400 peticiones/minutoPor token de API
Enterprise700 peticiones/minutoPor token de API
High Volume Add-on2.500 peticiones/minutoPor token de API

Límites adicionales:

  • API de búsqueda: 6 peticiones/minuto para anónimas, 100/minuto para autenticadas
  • Exportaciones incrementales: 10 peticiones/minuto
  • API en lote: 100 registros por petición en lote
  • Entrega de webhooks: Reintento automático con backoff exponencial

Cabeceras de límite de velocidad

Monitoriza las cabeceras X-Rate-Limit-Remaining y Retry-After para gestionar tu uso de la API.

Resolución de problemas

Problemas habituales

ProblemaCausaSolución
401 UnauthorizedToken de API no válidoRegenera el token en Zendesk Admin
403 ForbiddenPermisos insuficientesComprueba los requisitos de rol de agente o administrador
Usuario no sincronizadoEl usuario es un agente, no un usuario finalFiltra por role en la configuración de sincronización
Webhook no recibidoTrigger/target no configuradoConfigura el destino del webhook en Zendesk Admin
La búsqueda devuelve vacíoRetraso en la indexaciónEspera de 1 a 2 minutos a que se actualice el índice de búsqueda

Modo depuración

Habilita el registro detallado:

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

Probar la conexión

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

Buenas prácticas

  1. Usa exportaciones incrementales - Usa la API incremental para la sincronización de datos a gran escala
  2. Filtra solo usuarios finales - Excluye agentes y administradores de la sincronización de contactos de Brevo
  3. Sincroniza los datos CSAT - Usa las puntuaciones de satisfacción para segmentar por salud del cliente
  4. Mapea organizaciones - Aprovecha los datos de organización para campañas de marketing B2B
  5. Implementa reintentos de webhook - Gestiona los fallos temporales con elegancia
  6. Usa side-loading - Incluye registros relacionados en las respuestas de la API para reducir el número de peticiones

Seguridad

  • Autenticación con token de API - Acceso basado en token ligado al email del administrador
  • OAuth 2.0 - Acceso delegado basado en token con control de scopes
  • Firma de webhooks - Verificación de firma HMAC para los payloads de webhook
  • Cifrado TLS - Toda la comunicación con la API se cifra vía HTTPS
  • Lista blanca de IP - Restringe el acceso a la API por rango de IP

Recursos relacionados

Subscribe to updates

developer-docs

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

auto-detect
Asistente AI

¡Hola! Pregúntame lo que quieras sobre la documentación.