Conector Zendesk
Conecte sua instância do Zendesk Support ao Brevo via Tajo para obter dados de suporte ao cliente unificados, segmentação baseada em tickets, pontuação de satisfação e automação de marketing disparada por suporte.
Visão geral
| Propriedade | Valor |
|---|---|
| Plataforma | Zendesk |
| Categoria | Suporte |
| Complexidade de configuração | Média |
| Integração oficial | Sim |
| Dados sincronizados | Tickets, Usuários, Organizações, Eventos |
| URL base da API | https://{subdomain}.zendesk.com/api/v2 |
Recursos
- Sincronização de usuários - Sincronize end-users e agentes do Zendesk com contatos do Brevo
- Rastreamento de tickets - Sincronize dados de tickets para segmentação de marketing consciente do suporte
- Mapeamento de organizações - Associe contatos com organizações para workflows B2B
- Pontuações de satisfação - Sincronize dados CSAT e NPS como atributos do Brevo
- Eventos de ticket - Rastreie criação, resolução e escalação de tickets para gatilhos de automação
- Integração com central de ajuda - Rastreie visualizações de artigos e comportamento de busca
- Suporte multicanal - Sincronize dados de canais de e-mail, chat, voz e mensageria
- Campos personalizados - Mapeie campos personalizados de tickets e usuários do Zendesk para o Brevo
Pré-requisitos
Antes de começar, certifique-se de ter:
- Uma conta Zendesk Support (Team, Professional ou Enterprise)
- Acesso de admin à sua instância do Zendesk
- Token de API ou app OAuth configurado
- Uma conta Brevo com acesso à API
- Uma conta Tajo
Autenticação
Autenticação por token de API
Use autenticação por e-mail/token para configuração rápida.
curl https://{subdomain}.zendesk.com/api/v2/users.json \ -u {email}/token:{api_token} \ -H "Content-Type: application/json"Gere um token de API em Zendesk Admin > Apps and Integrations > APIs > Zendesk API.
OAuth 2.0
Use OAuth para integrações multi-instância com acesso delegado de usuário.
# Authorization URLhttps://{subdomain}.zendesk.com/oauth/authorizations/new? response_type=code& client_id={client_id}& redirect_uri={redirect_uri}& scope=read%20writeEscopos necessários
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)Configuração
Configuração 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: 32Mapeamento de campos
Mapeie campos de usuário do Zendesk para atributos de contato do Brevo:
Default Mappings
| Parameter | Type | Description |
|---|---|---|
email required | string | Endereço de e-mail do usuário (identificador único) |
name optional | string | Nome completo, dividido em FIRSTNAME/LASTNAME |
phone optional | string | Mapeia para o atributo SMS para WhatsApp/SMS |
organization_id optional | integer | Organização associada para mapeamento B2B |
role optional | string | Função do usuário (end-user, agent, admin) |
tags optional | array | Tags de usuário do Zendesk |
ticket_restriction optional | string | Nível de acesso a tickets |
custom_fields optional | object | Valores de campos personalizados do usuário |
Mapeamento 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_TIEREndpoints da API
API de Ticketing
| Método | Endpoint | Descrição |
|---|---|---|
GET | /api/v2/tickets | Listar tickets |
POST | /api/v2/tickets | Criar um ticket |
PUT | /api/v2/tickets/{id} | Atualizar um ticket |
GET | /api/v2/tickets/{id} | Exibir um ticket |
GET | /api/v2/search.json?query={query} | Buscar tickets |
API de Usuários
| Método | Endpoint | Descrição |
|---|---|---|
GET | /api/v2/users | Listar usuários |
POST | /api/v2/users | Criar um usuário |
PUT | /api/v2/users/{id} | Atualizar um usuário |
GET | /api/v2/users/{id} | Exibir um usuário |
GET | /api/v2/users/search.json?query={query} | Buscar usuários |
API de Organizações
| Método | Endpoint | Descrição |
|---|---|---|
GET | /api/v2/organizations | Listar organizações |
POST | /api/v2/organizations | Criar uma organização |
GET | /api/v2/organizations/{id}/users | Listar membros da organização |
API de Avaliações de satisfação
| Método | Endpoint | Descrição |
|---|---|---|
GET | /api/v2/satisfaction_ratings | Listar avaliações de satisfação |
GET | /api/v2/satisfaction_ratings/{id} | Exibir uma avaliação |
Eventos
Eventos de ticket
| Evento | Gatilho | Caso de uso |
|---|---|---|
ticket.created | Novo ticket enviado | Confirmação de suporte |
ticket.updated | Status do ticket alterado | Notificação de status |
ticket.solved | Ticket marcado como resolvido | Disparo de pesquisa CSAT |
ticket.reopened | Ticket resolvido reaberto | Alerta de escalação |
Eventos de usuário
| Evento | Gatilho | Caso de uso |
|---|---|---|
user.created | Novo usuário registrado | Boas-vindas ao suporte |
user.updated | Perfil de usuário alterado | Sincronização de atributos |
user.merged | Usuários mesclados | Desduplicação |
Eventos de satisfação
| Evento | Gatilho | Caso de uso |
|---|---|---|
satisfaction_rating.created | CSAT enviado | Processamento de feedback |
satisfaction_rating.bad | Avaliação negativa | Ação de recuperação |
satisfaction_rating.good | Avaliação positiva | Campanhas de advocacy |
Exemplos de código
Inicializar o conector
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});Sincronizar usuários e tickets
// 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// }Tratar webhooks do 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');});Limites de taxa
Os limites de taxa do Zendesk variam conforme o plano:
| Plano | Limite de taxa | Detalhes |
|---|---|---|
| Team | 200 requisições/minuto | Por token de API |
| Professional | 400 requisições/minuto | Por token de API |
| Enterprise | 700 requisições/minuto | Por token de API |
| High Volume Add-on | 2.500 requisições/minuto | Por token de API |
Limites adicionais:
- API de busca: 6 requisições/minuto para anônimo, 100/minuto para autenticado
- Exportações incrementais: 10 requisições/minuto
- API em lote: 100 registros por requisição em lote
- Entrega de webhook: Retry automático com backoff exponencial
Cabeçalhos de limite de taxa
Monitore os cabeçalhos X-Rate-Limit-Remaining e Retry-After para gerenciar o uso da sua API.
Solução de problemas
Problemas comuns
| Problema | Causa | Solução |
|---|---|---|
| 401 Unauthorized | Token de API inválido | Regere o token em Zendesk Admin |
| 403 Forbidden | Permissões insuficientes | Verifique os requisitos de função de agente ou admin |
| Usuário não sincronizado | Usuário é um agente, não end-user | Filtre por função na configuração de sincronização |
| Webhook não recebido | Trigger/target não configurado | Configure o target de webhook em Zendesk Admin |
| Busca retorna vazio | Atraso na indexação | Aguarde 1-2 minutos para atualização do índice de busca |
Modo de depuração
Habilite logs detalhados:
connectors: zendesk: debug: true log_level: verbose log_webhooks: trueTestar conexão
tajo connectors test zendesk# ✓ API connection successful# ✓ Users readable# ✓ Tickets readable# ✓ Organizations readable# ✓ Webhooks configuredMelhores práticas
- Use exportações incrementais - Use a API incremental para sincronização de dados em larga escala
- Filtre apenas end-users - Exclua agentes e admins da sincronização de contatos do Brevo
- Sincronize dados CSAT - Use pontuações de satisfação para segmentação de saúde do cliente
- Mapeie organizações - Aproveite dados de organização para campanhas de marketing B2B
- Implemente retries de webhook - Trate falhas temporárias com elegância
- Use side-loading - Inclua registros relacionados nas respostas da API para reduzir a contagem de requisições
Segurança
- Autenticação por token de API - Acesso baseado em token vinculado ao e-mail do admin
- OAuth 2.0 - Acesso delegado baseado em token com controles de escopo
- Assinatura de webhook - Verificação de assinatura HMAC para payloads de webhook
- Criptografia TLS - Toda comunicação com a API é criptografada via HTTPS
- Whitelisting de IP - Restrinja o acesso à API por faixa de IP