Conector Zendesk
Status do conector: Planejado Ainda não construído. O Tajo não executa este conector hoje.
Ilustração · dados de exemplo
Exemplo de sincronização
Origem
Zendesk
Status do conector: Planejado
Destino
A sua outra ferramenta
Status do conector: Ferramenta personalizada
Mapeamento de campos
| Campo de origem | Campo de destino | Valor de exemplo |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Preparar
- Reveja um registo
- Aprovar esta versão
Os estados referem-se a cada conector e não garantem que esta sincronização esteja pronta. Campos ilustrativos. Verifique o esquema e as permissões reais antes de executar uma sincronização.
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 | Não |
| 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