---
title: "Konektor Zendesk"
description: "Panduan integrasi Zendesk lengkap untuk menyinkronkan tiket, user, organisasi, dan event support dengan Brevo melalui Tajo."
url: https://tajo.io/in/docs/connectors/support/zendesk/
markdown: https://tajo.io/in/docs/connectors/support/zendesk.md
lang: id-ID
robots: noindex
---

Ajukan akses awal

Masukkan nama depan dan alamat email kerja Anda. Kami akan mengirim tautan untuk mengonfirmasi permintaan akses Tajo.

# Konektor Zendesk

Status konektor: Direncanakan Belum dibangun. Tajo belum menjalankan konektor ini.

| Field sumber | Field tujuan | Nilai contoh |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Hubungkan instance Zendesk Support Anda ke Brevo melalui Tajo untuk data support pelanggan yang terpadu, segmentasi berbasis tiket, penilaian kepuasan, dan otomatisasi marketing yang dipicu aktivitas support.

## Ikhtisar

| Properti | Nilai |
| --- | --- |
| **Platform** | Zendesk |
| **Kategori** | Support |
| **Kompleksitas setup** | Menengah |
| **Integrasi resmi** | Tidak |
| **Data yang disinkronkan** | Tiket, User, Organisasi, Event |
| **Base URL API** | `https://{subdomain}.zendesk.com/api/v2` |

## Fitur

- **Sinkronisasi user** - Sinkronkan end-user dan agen Zendesk dengan kontak Brevo
- **Pelacakan tiket** - Sinkronkan data tiket untuk segmentasi marketing yang sadar konteks support
- **Pemetaan organisasi** - Kaitkan kontak dengan organisasi untuk alur kerja B2B
- **Skor kepuasan** - Sinkronkan data CSAT dan NPS ke atribut Brevo
- **Event tiket** - Lacak pembuatan, penyelesaian, dan eskalasi tiket sebagai pemicu otomatisasi
- **Integrasi help center** - Lacak tampilan artikel dan perilaku pencarian
- **Dukungan multi-channel** - Sinkronkan data dari channel email, chat, voice, dan messaging
- **Custom field** - Petakan custom field tiket dan user Zendesk ke Brevo

## Prasyarat

Sebelum memulai, pastikan Anda memiliki:

1. Akun Zendesk Support (Team, Professional, atau Enterprise)
2. Akses admin ke instance Zendesk Anda
3. API token atau app OAuth yang sudah dikonfigurasi
4. Akun Brevo dengan akses API
5. Akun Tajo

## Autentikasi

### Autentikasi API token

Gunakan autentikasi email/token untuk setup cepat.

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

Buat API token dari Zendesk Admin > Apps and Integrations > APIs > Zendesk API.

### OAuth 2.0

Gunakan OAuth untuk integrasi multi-instance dengan akses user yang terdelegasi.

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

#### Scope yang dibutuhkan

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

## Konfigurasi

### Setup dasar

```yaml
connectors:
  zendesk:
    enabled: true
    subdomain: "yourcompany"
    auth:
      email: "admin@yourcompany.com"
      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
```

### Pemetaan field

Petakan field user Zendesk ke atribut kontak Brevo:

#### Pemetaan default

| Parameter | Type | Description |
| --- | --- | --- |
| `email` required | string | Alamat email user (pengenal unik) |
| `name` optional | string | Nama lengkap, dipecah menjadi FIRSTNAME/LASTNAME |
| `phone` optional | string | Dipetakan ke atribut SMS untuk WhatsApp/SMS |
| `organization_id` optional | integer | Organisasi terkait untuk pemetaan B2B |
| `role` optional | string | Peran user (end-user, agent, admin) |
| `tags` optional | array | Tag user dari Zendesk |
| `ticket_restriction` optional | string | Tingkat akses tiket |
| `custom_fields` optional | object | Nilai custom field user |

#### Pemetaan custom field

```yaml
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
```

## Endpoint API

### Ticketing API

| Metode | Endpoint | Deskripsi |
| --- | --- | --- |
| `GET` | `/api/v2/tickets` | Menampilkan tiket |
| `POST` | `/api/v2/tickets` | Membuat tiket |
| `PUT` | `/api/v2/tickets/{id}` | Memperbarui tiket |
| `GET` | `/api/v2/tickets/{id}` | Menampilkan satu tiket |
| `GET` | `/api/v2/search.json?query={query}` | Mencari tiket |

### Users API

| Metode | Endpoint | Deskripsi |
| --- | --- | --- |
| `GET` | `/api/v2/users` | Menampilkan user |
| `POST` | `/api/v2/users` | Membuat user |
| `PUT` | `/api/v2/users/{id}` | Memperbarui user |
| `GET` | `/api/v2/users/{id}` | Menampilkan satu user |
| `GET` | `/api/v2/users/search.json?query={query}` | Mencari user |

### Organizations API

| Metode | Endpoint | Deskripsi |
| --- | --- | --- |
| `GET` | `/api/v2/organizations` | Menampilkan organisasi |
| `POST` | `/api/v2/organizations` | Membuat organisasi |
| `GET` | `/api/v2/organizations/{id}/users` | Menampilkan anggota organisasi |

### Satisfaction Ratings API

| Metode | Endpoint | Deskripsi |
| --- | --- | --- |
| `GET` | `/api/v2/satisfaction_ratings` | Menampilkan rating kepuasan |
| `GET` | `/api/v2/satisfaction_ratings/{id}` | Menampilkan satu rating |

## Event

### Event tiket

| Event | Pemicu | Kasus penggunaan |
| --- | --- | --- |
| `ticket.created` | Tiket baru dikirimkan | Konfirmasi penerimaan support |
| `ticket.updated` | Status tiket berubah | Notifikasi status |
| `ticket.solved` | Tiket ditandai selesai | Pemicu survei CSAT |
| `ticket.reopened` | Tiket selesai dibuka kembali | Notifikasi eskalasi |

### Event user

| Event | Pemicu | Kasus penggunaan |
| --- | --- | --- |
| `user.created` | User baru terdaftar | Sambutan untuk support |
| `user.updated` | Profil user berubah | Sinkronisasi atribut |
| `user.merged` | User digabungkan | Deduplikasi |

### Event kepuasan

| Event | Pemicu | Kasus penggunaan |
| --- | --- | --- |
| `satisfaction_rating.created` | CSAT dikirimkan | Pemrosesan umpan balik |
| `satisfaction_rating.bad` | Rating negatif | Outreach pemulihan |
| `satisfaction_rating.good` | Rating positif | Kampanye advokasi |

## Contoh kode

### Inisialisasi konektor

```javascript
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',
  email: 'admin@yourcompany.com',
  apiToken: process.env.ZENDESK_API_TOKEN
});
```

### Menyinkronkan user dan tiket

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

### Menangani webhook Zendesk

```javascript
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');
});
```

## Batas rate

Batas rate Zendesk berbeda menurut paket:

| Paket | Batas rate | Detail |
| --- | --- | --- |
| Team | 200 permintaan/menit | Per API token |
| Professional | 400 permintaan/menit | Per API token |
| Enterprise | 700 permintaan/menit | Per API token |
| Add-on High Volume | 2.500 permintaan/menit | Per API token |

Batas tambahan:

- **Search API**: 6 permintaan/menit untuk anonim, 100/menit untuk terautentikasi
- **Ekspor inkremental**: 10 permintaan/menit
- **Batch API**: 100 record per permintaan batch
- **Pengiriman webhook**: Percobaan ulang otomatis dengan exponential backoff

Header batas rate

Pantau header `X-Rate-Limit-Remaining` dan `Retry-After` untuk mengelola penggunaan API Anda.

## Pemecahan masalah

### Masalah umum

| Masalah | Penyebab | Solusi |
| --- | --- | --- |
| 401 Unauthorized | API token tidak valid | Buat ulang token di Zendesk Admin |
| 403 Forbidden | Izin tidak mencukupi | Periksa persyaratan peran agent atau admin |
| User tidak tersinkronisasi | User adalah agent, bukan end-user | Filter berdasarkan role di konfigurasi sinkronisasi |
| Webhook tidak diterima | Trigger/target belum dikonfigurasi | Siapkan target webhook di Zendesk Admin |
| Pencarian mengembalikan hasil kosong | Penundaan pengindeksan | Tunggu 1-2 menit hingga indeks pencarian diperbarui |

### Mode debug

Aktifkan logging verbose:

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

### Menguji koneksi

```bash
tajo connectors test zendesk
# ✓ API connection successful
# ✓ Users readable
# ✓ Tickets readable
# ✓ Organizations readable
# ✓ Webhooks configured
```

## Praktik terbaik

1. **Gunakan ekspor inkremental** - Gunakan Incremental API untuk sinkronisasi data berskala besar
2. **Filter hanya end-user** - Kecualikan agent dan admin dari sinkronisasi kontak Brevo
3. **Sinkronkan data CSAT** - Gunakan skor kepuasan untuk segmentasi customer health
4. **Petakan organisasi** - Manfaatkan data organisasi untuk kampanye marketing B2B
5. **Terapkan percobaan ulang webhook** - Tangani kegagalan sementara dengan baik
6. **Gunakan side-loading** - Sertakan record terkait dalam respons API untuk menekan jumlah permintaan

## Keamanan

- **Autentikasi API token** - Akses berbasis token yang terikat pada email admin
- **OAuth 2.0** - Akses terdelegasi berbasis token dengan kontrol scope
- **Penandatanganan webhook** - Verifikasi tanda tangan HMAC untuk payload webhook
- **Enkripsi TLS** - Semua komunikasi API dienkripsi lewat HTTPS
- **IP whitelisting** - Batasi akses API berdasarkan rentang IP

## Sumber daya terkait

- [Dokumentasi API Zendesk](https://developer.zendesk.com/api-reference)
- [Panduan Webhook Zendesk](https://developer.zendesk.com/api-reference/webhooks/introduction/)
- [Konektor Intercom](https://tajo.io/in/docs/connectors/support/intercom)
- [Skill Customer Sync](https://tajo.io/in/docs/skills/data-sync/customer-sync)
- [Brevo Contacts API](https://tajo.io/in/docs/contact-management)
