Kustomisasi Data & Konten
Halaman ini mencakup empat fitur pengaturan yang memungkinkan Admin menyesuaikan cara data kontak disimpan dan cara konten quick reply diorganisir di seluruh workspace.
Custom Fields Kontak
Rute frontend: /settings/custom-fields
Custom fields adalah field tambahan yang dapat Anda definisikan dan lampirkan ke setiap kontak. Nilai disimpan sebagai JSONB di kolom contacts.custom_fields di PostgreSQL, dan divalidasi secara ketat terhadap tipe field saat disimpan.
Tipe field yang tersedia
| Tipe | Nilai JSON yang valid | Catatan |
|---|---|---|
text | String | Teks bebas |
number | Integer atau desimal | Contoh: 42, 3.14 |
date | String ISO-8601 | Contoh: "2025-06-01" atau "2025-06-01T10:00:00Z" |
boolean | true / false | Bukan string "true" |
select | String dari daftar opsi | Harus ada minimal 1 opsi |
multi_select | Array string dari daftar opsi | Setiap elemen harus ada di opsi |
url | String URL dengan skema | Harus diawali http:// atau https:// |
email | String email valid | Harus mengandung @ |
phone | String nomor telepon | Tidak boleh kosong |
Membuat custom field baru
- Buka Settings → Custom Fields.
- Klik Add Field.
- Isi Name (maks 100 karakter) — field key akan di-generate otomatis dari nama.
- Pilih Type. Untuk tipe
selectataumulti_select, tambahkan opsi satu per satu. - Centang Required field jika field wajib diisi sebelum nilai lain bisa disimpan ke kontak.
- Klik Create.
Field key dibuat otomatis dari nama (snake_case, maks 64 karakter, hanya huruf kecil/digit/underscore, diawali huruf). Field key tidak dapat diubah setelah dibuat. Tipe field juga bersifat permanen — pilih dengan cermat.
Mengedit dan menonaktifkan
- Klik ikon Edit (pensil) untuk mengubah nama, deskripsi, status required, dan daftar opsi.
- Klik ikon Delete (tempat sampah) untuk menonaktifkan field (
is_active = false). Data nilai yang sudah tersimpan di kontak tidak terhapus, tetapi field tidak akan muncul lagi di UI. - Gunakan tombol panah atas/bawah untuk mengatur urutan tampil (
display_order).
Mengisi nilai custom field pada kontak
Buka detail kontak → tab Profile fields. Nilai dikirim via:
Code
Backend memvalidasi setiap key terhadap definisi aktif — key tidak dikenal atau nilai dengan tipe salah akan ditolak dengan HTTP 422. Nilai bersifat merge (tidak menghapus key yang tidak disertakan).
Mencari kontak berdasarkan custom field
Code
Hasil berisi contact_id, contact_name, contact_phone, field_name, dan field_value. Parameter limit default 50, maksimum 200.
Endpoint ringkasan
| Method | Path | Keterangan |
|---|---|---|
GET | /api/custom-fields | Daftar semua definisi (urut display_order) |
POST | /api/custom-fields | Buat definisi baru |
PATCH | /api/custom-fields/{id} | Edit definisi |
DELETE | /api/custom-fields/{id} | Nonaktifkan definisi |
GET | /api/contacts/{id}/custom-fields | Baca nilai custom field kontak |
PUT | /api/contacts/{id}/custom-fields | Simpan/merge nilai |
GET | /api/contacts/search-by-field | Cari kontak berdasarkan nilai |
Izin contacts.manage diperlukan untuk membuat, mengedit, dan menonaktifkan definisi, serta untuk menyimpan nilai ke kontak. Membaca definisi dan nilai cukup dengan contacts.view.
Tag Terkelola (Managed Tags)
Rute frontend: /settings/managed-tags
Managed tags adalah daftar tag standar workspace dengan warna yang dapat diterapkan ke kontak dan percakapan. Berbeda dengan tag bebas, managed tags memastikan konsistensi penamaan dan tampilan warna di seluruh tim.
Atribut tag
| Field | Keterangan |
|---|---|
name | Nama tag (wajib, tidak boleh kosong) |
color | Hex color 7 karakter, contoh #ef4444 (default #6b7280) |
description | Deskripsi opsional untuk konteks tim |
Mengelola tag
- Buka Settings → Managed Tags.
- Klik New Tag untuk membuat tag baru.
- Isi nama, pilih warna via color picker atau ketik kode hex, tambahkan deskripsi opsional.
- Klik Create — preview chip warna tampil secara langsung di form.
- Untuk mengedit, klik ikon pensil pada kartu tag.
- Untuk menghapus, klik ikon tempat sampah — konfirmasi dialog akan muncul. Penghapusan bersifat permanen dan akan melepas tag dari semua kontak yang menggunakannya.
Menghapus managed tag akan melepas tag tersebut dari semua kontak. Pastikan tag memang sudah tidak digunakan sebelum menghapus.
Endpoint ringkasan
| Method | Path | Keterangan |
|---|---|---|
GET | /api/managed-tags | Daftar semua tag (urut nama) |
POST | /api/managed-tags | Buat tag baru (HTTP 201) |
PATCH | /api/managed-tags/{id} | Edit tag |
DELETE | /api/managed-tags/{id} | Hapus tag permanen |
Gunakan warna yang konsisten secara semantik: merah untuk urgent, hijau untuk vip, abu-abu untuk inactive. Tim akan lebih cepat memindai status kontak dari warna tagnya.
Tanda Tangan Email (Email Signatures)
Rute frontend: /settings/email-signatures
Email signatures adalah tanda tangan HTML per-agent yang ditambahkan secara otomatis ke pesan email keluar. Setiap agent mengelola koleksi tanda tangannya sendiri — agent lain tidak dapat melihat atau mengubah tanda tangan milik agent lain.
Atribut tanda tangan
| Field | Keterangan |
|---|---|
name | Label tanda tangan (wajib), contoh: "Work", "Support" |
body | Konten HTML tanda tangan (wajib, tidak boleh kosong) |
is_default | Bila true, tanda tangan ini otomatis dipilih saat mengirim email |
Membuat tanda tangan
- Buka Settings → Email Signatures.
- Klik Add Signature.
- Isi Name dan Signature Body dalam format HTML.
- Aktifkan toggle Set as default signature bila ini yang ingin digunakan secara otomatis.
- Klik Create.
Hanya satu tanda tangan yang dapat menjadi default per agent. Saat Anda menetapkan tanda tangan baru sebagai default, semua tanda tangan lain milik Anda akan dilepas status defaultnya secara otomatis.
Aturan kepemilikan
- Setiap agent hanya dapat melihat, mengedit, dan menghapus tanda tangan miliknya sendiri (
agent_id = claims.sub). - Backend menegakkan kepemilikan di level SQL — tidak ada risiko agent A menghapus tanda tangan agent B.
- Daftar terbatas 50 tanda tangan terbaru per agent.
Format body HTML
Gunakan HTML standar. Contoh:
Code
Endpoint ringkasan
| Method | Path | Keterangan |
|---|---|---|
GET | /api/email-signatures | Daftar tanda tangan milik agent yang login (maks 50) |
POST | /api/email-signatures | Buat tanda tangan baru (HTTP 201) |
PUT | /api/email-signatures/{id} | Update tanda tangan |
DELETE | /api/email-signatures/{id} | Hapus tanda tangan |
Kategori & Folder Quick Reply
Rute frontend: /settings/quick-reply-categories, /settings/quick-reply-folders
Quick reply dapat diorganisir melalui dua mekanisme berbeda: kategori (label teks pada quick reply) dan folder (struktur hierarki dengan dukungan parent-child). Keduanya memudahkan agent menemukan balasan yang tepat dari koleksi yang besar.
Kategori
Kategori adalah label string yang melekat pada setiap quick reply. Satu quick reply hanya dapat memiliki satu kategori. Kategori dikelola di tabel quick_reply_categories dengan field name dan sort_order.
Mengelola kategori:
- Buka Settings → Quick Reply Categories.
- Klik New Category, isi nama dan sort order (angka, default 0 — lebih kecil = lebih atas).
- Klik Create.
- Tabel menampilkan nama, sort order, dan tanggal pembuatan.
Menghapus kategori tidak menghapus quick reply di dalamnya — quick reply tersebut menjadi tidak berkategori (category = NULL). Gunakan filter __uncategorized__ di endpoint list untuk menemukan mereka kembali.
Untuk mem-filter quick reply berdasarkan kategori saat menggunakan API:
Code
Folder
Folder adalah struktur hierarki yang mendukung satu level nested (parent_id). Quick reply dapat ditempatkan di folder via field folder_id. Folder dikelola di tabel quick_reply_folders.
Mengelola folder:
- Buka Settings → Quick Reply Folders.
- Klik New Folder, isi nama dan sort order.
- Klik Create — folder muncul sebagai kartu grid.
- Saat mengedit folder, Anda dapat menetapkan
parent_iduntuk membuat subfolder.
Menghapus folder akan melepas semua quick reply dari folder tersebut (folder_id = NULL) sebelum folder dihapus — quick reply tidak ikut terhapus.
Endpoint ringkasan
| Method | Path | Keterangan |
|---|---|---|
GET | /api/quick-reply-categories | Daftar kategori (urut sort_order, lalu name) |
POST | /api/quick-reply-categories | Buat kategori (HTTP 201) |
PATCH | /api/quick-reply-categories/{id} | Edit kategori |
DELETE | /api/quick-reply-categories/{id} | Hapus kategori |
GET | /api/quick-reply-folders | Daftar folder (urut sort_order, lalu name) |
POST | /api/quick-reply-folders | Buat folder |
PATCH | /api/quick-reply-folders/{id} | Edit folder |
DELETE | /api/quick-reply-folders/{id} | Hapus folder (quick reply dilepas, tidak dihapus) |
Perbedaan kategori vs folder
| Aspek | Kategori | Folder |
|---|---|---|
| Struktur | Flat (label string) | Hierarki (parent-child) |
| Filter API | ?category=nama | Via folder_id pada quick reply |
| Efek hapus | Quick reply menjadi NULL kategori | Quick reply folder_id di-set NULL |
| Penggunaan | Pengelompokan semantik (sales, support) | Organisasi navigasi (subfolder per tim/divisi) |
Untuk tim kecil, kategori sudah cukup. Gunakan folder bila Anda memiliki ratusan quick reply dan perlu navigasi bertingkat, misalnya Support → Billing → Refund.
Lihat juga: Quick Replies, Manajemen Kontak.