Konektor Freshdesk
Hubungkan Freshdesk ke Brevo melalui Tajo untuk menyatukan data support dan marketing. Sinkronkan tiket support pelanggan, profil kontak, dan skor kepuasan untuk mendukung komunikasi tertarget berdasarkan interaksi support.
Ikhtisar
| Properti | Nilai |
|---|---|
| Platform | Freshdesk |
| Kategori | Support |
| Kompleksitas setup | Mudah |
| Integrasi resmi | Tidak |
| Data yang disinkronkan | Tiket, Kontak, Agen, Perusahaan |
| Skill yang tersedia | 6 |
Fitur
- Sinkronisasi kontak - Sinkronisasi dua arah kontak Freshdesk ke daftar kontak Brevo
- Pelacakan event tiket - Teruskan event pembuatan, pembaruan, dan penyelesaian tiket ke Brevo
- Sinkronisasi CSAT - Sinkronkan skor kepuasan pelanggan sebagai atribut kontak Brevo
- Sinkronisasi perusahaan - Petakan perusahaan Freshdesk ke segmentasi kontak Brevo
- Data agen - Lacak penugasan agen untuk otomatisasi alur kerja internal
- Custom field - Petakan custom field tiket dan kontak Freshdesk ke atribut Brevo
Prasyarat
Sebelum memulai, pastikan Anda memiliki:
- Akun Freshdesk dengan akses admin
- API Key Freshdesk Anda (tersedia di Profile Settings)
- Domain Freshdesk Anda (misalnya,
yourcompany.freshdesk.com) - Akun Brevo dengan akses API
- Akun Tajo dengan kredensial API
Autentikasi
Autentikasi API key
Freshdesk menggunakan autentikasi API key melalui HTTP Basic Auth. API key dipakai sebagai username dengan string apa pun (umumnya X) sebagai password.
curl -u "YOUR_API_KEY:X" \ https://yourcompany.freshdesk.com/api/v2/ticketsAtau menggunakan enkode Base64 pada header Authorization:
curl https://yourcompany.freshdesk.com/api/v2/tickets \ -H "Authorization: Basic BASE64_ENCODED_API_KEY:X" \ -H "Content-Type: application/json"Menemukan API key Anda
- Masuk ke akun Freshdesk Anda
- Klik foto profil Anda di sudut kanan atas
- Buka Profile Settings
- API Key Anda ditampilkan di sisi kanan
Konfigurasi
Setup dasar
connectors: freshdesk: enabled: true domain: "yourcompany.freshdesk.com" api_key: "your-freshdesk-api-key"
# Data sync options sync: contacts: true tickets: true companies: true satisfaction_ratings: true
# Brevo list assignment lists: all_support_contacts: 30 open_tickets: 31 resolved_tickets: 32Pemetaan field kontak
Petakan field kontak Freshdesk ke atribut Brevo:
contact_mapping: email: email name: FULLNAME phone: SMS company_id: COMPANY job_title: JOB_TITLE twitter_id: TWITTER language: LANGUAGE time_zone: TIMEZONE
# Support metrics total_tickets: TICKET_COUNT open_tickets: OPEN_TICKETS avg_csat: CSAT_SCORE last_ticket_date: LAST_SUPPORT_DATE
# Custom fields custom_fields.account_type: ACCOUNT_TYPE custom_fields.subscription_tier: PLANPemetaan event tiket
Petakan event tiket Freshdesk ke trigger otomatisasi Brevo:
ticket_events: ticket_created: "support_ticket_created" ticket_updated: "support_ticket_updated" ticket_resolved: "support_ticket_resolved" ticket_closed: "support_ticket_closed" ticket_reopened: "support_ticket_reopened" satisfaction_rated: "csat_submitted" note_added: "support_note_added"Endpoint API
| Metode | Endpoint | Deskripsi |
|---|---|---|
GET | /api/v2/tickets | Menampilkan semua tiket |
POST | /api/v2/tickets | Membuat tiket |
GET | /api/v2/tickets/{id} | Mengambil tiket tertentu |
PUT | /api/v2/tickets/{id} | Memperbarui tiket |
DELETE | /api/v2/tickets/{id} | Menghapus tiket |
GET | /api/v2/contacts | Menampilkan semua kontak |
POST | /api/v2/contacts | Membuat kontak |
PUT | /api/v2/contacts/{id} | Memperbarui kontak |
GET | /api/v2/companies | Menampilkan semua perusahaan |
GET | /api/v2/agents | Menampilkan semua agen |
GET | /api/v2/surveys/satisfaction_ratings | Menampilkan rating CSAT |
GET | /api/v2/search/tickets?query= | Mencari tiket |
Contoh kode
Inisialisasi konektor Freshdesk
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
// Connect Freshdesk accountawait tajo.connectors.connect('freshdesk', { domain: 'yourcompany.freshdesk.com', apiKey: process.env.FRESHDESK_API_KEY});Menyinkronkan kontak ke Brevo
// Fetch Freshdesk contacts and sync to Brevoconst response = await fetch( 'https://yourcompany.freshdesk.com/api/v2/contacts?page=1&per_page=100', { headers: { 'Authorization': 'Basic ' + btoa(`${API_KEY}:X`), 'Content-Type': 'application/json' } });
const contacts = await response.json();// Each contact:// {// "id": 12345,// "name": "Jane Kim",// "email": "[email protected]",// "phone": "+15551234567",// "company_id": 678,// "job_title": "Product Manager",// "created_at": "2024-01-15T10:30:00Z"// }Melacak event tiket
// Set up Freshdesk webhook to forward ticket events// Configure in Freshdesk Admin > Automations > Webhook
// Webhook handlerapp.post('/webhooks/freshdesk', async (req, res) => { const { ticket, event_type } = req.body;
await tajo.connectors.handleWebhook('freshdesk', { topic: event_type, payload: { ticketId: ticket.id, subject: ticket.subject, status: ticket.status, priority: ticket.priority, requesterEmail: ticket.requester.email, createdAt: ticket.created_at } });
res.status(200).send('OK');});Mencari tiket berdasarkan pelanggan
// Search for all tickets from a specific customerconst response = await fetch( `https://yourcompany.freshdesk.com/api/v2/search/tickets?query=${query}`, { headers: { 'Authorization': 'Basic ' + btoa(`${API_KEY}:X`) } });
const { results, total } = await response.json();Batas rate
| Paket | Batas | Detail |
|---|---|---|
| Sprout | 50 permintaan/menit | Paket gratis |
| Blossom | 200 permintaan/menit | Paket starter |
| Garden | 400 permintaan/menit | Paket growth |
| Estate | 700 permintaan/menit | Paket pro |
| Forest | 1.000 permintaan/menit | Paket enterprise |
Batas tambahan:
| Sumber daya | Batas |
|---|---|
| Endpoint list | 30 halaman per query |
| Per halaman | Maksimal 100 record |
| Search API | 2 permintaan/detik |
| Operasi bulk | 10 record/permintaan |
Header batas rate
Freshdesk mengembalikan informasi batas rate di header respons. Pantau X-RateLimit-Remaining dan terapkan backoff saat mendekati batas.
Pemecahan masalah
| Masalah | Penyebab | Solusi |
|---|---|---|
401 Unauthorized | API key tidak valid | Verifikasi API key di Freshdesk Profile Settings |
403 Forbidden | Izin tidak mencukupi | Pastikan API key milik akun admin |
| Kontak tidak tersinkronisasi | Field email kosong | Kontak Freshdesk wajib memiliki alamat email |
| Tiket tidak muncul | Domain salah | Verifikasi URL domain Freshdesk Anda sudah benar |
| Pencarian mengembalikan hasil kosong | Kesalahan sintaks query | Gunakan sintaks query pencarian Freshdesk dengan tanda kutip ganda |
429 Too Many Requests | Batas rate terlampaui | Terapkan pembatasan rate sesuai tingkat paket |
| Custom field tidak ada | Field belum diaktifkan | Pastikan custom field sudah diaktifkan di admin Freshdesk |
Praktik terbaik
- Gunakan webhook untuk sinkronisasi real-time - Konfigurasikan Freshdesk Automations untuk memicu webhook pada event tiket
- Sinkronkan skor CSAT - Lacak rating kepuasan pelanggan sebagai atribut Brevo untuk segmentasi
- Petakan status tiket ke daftar - Pindahkan kontak antar daftar Brevo secara otomatis berdasarkan status tiket
- Lacak metrik support - Sinkronkan jumlah tiket, rata-rata waktu respons, dan tingkat penyelesaian per kontak
- Gunakan search API seperlunya - Search API memiliki batas rate yang lebih ketat; simpan hasilnya di cache bila memungkinkan
- Paginasi ekspor besar - Gunakan paginasi dengan parameter
pagedanper_pageuntuk sinkronisasi awal
Keamanan
- Autentikasi API key - HTTP Basic Auth sederhana dengan API key
- HTTPS saja - Semua komunikasi API mewajibkan enkripsi TLS
- IP whitelisting - Tersedia pada paket Estate dan Forest
- Akses berbasis peran - Izin API key terikat pada peran agen
- SOC 2 Type II - Freshdesk bersertifikat SOC 2 Type II
- Kepatuhan GDPR - Mendukung permintaan ekspor dan penghapusan data