# Preferensi

Preferensi adalah pernyataan tentang keinginan seseorang, yang dicatat berdasarkan handle mereka di satu kanal. Di WhatsApp handle-nya adalah nomor telepon dalam format E.164. Ini adalah catatan terpisah dari [supresi](/docs/guides/whatsapp/opt-outs/suppressions), dan keduanya diperiksa sebelum pengiriman.

Preferensi masuk ke workspace Anda melalui tiga cara: WhatsApp melaporkannya, penerima mengetik kata kunci, atau Anda mencatatnya sendiri. Apa yang dapat Anda lakukan terhadap masing-masing bergantung pada siapa yang menyatakannya.

## Isi sebuah preferensi

Sebuah pernyataan berupa `revoked`, opt-out, atau `granted`, persetujuan.

Pernyataan juga membawa cakupan, yang menentukan seberapa banyak lalu lintas yang dihentikan. `non_transactional` mencakup pesan pemasaran dan pesan non-esensial lainnya, sementara pesan transaksional seperti tanda terima dan kode verifikasi tetap terkirim. `all` mencakup semua pesan. Tab **Preferences** menampilkan ini di kolom **Covers** sebagai **Non-transactional** dan **All messages**.

Pernyataan dapat dipersempit ke satu pengirim dengan `sender_scope`, yang di WhatsApp mengidentifikasi akun bisnis. Tanpa itu, pernyataan mencakup seluruh kanal di workspace Anda, termasuk akun yang Anda hubungkan nanti.

Seseorang dapat memiliki beberapa baris di satu kanal, misalnya opt-out seluruh kanal di samping opt-out cakupan pengirim. Pernyataan paling ketat yang menentukan apakah pesan dikirim.

## Preferensi yang dicatat Bird untuk Anda

Ketika Bird menerima event Meta yang menyatakan penerima telah menghentikan pesan pemasaran, sistem mencatat preferensi asal-penerima untuk WhatsApp Business Account tersebut. Preferensi ini mencakup pesan non-transaksional. Ini tidak membuat supresi semua-pesan, dan tidak meng-opt-out orang tersebut dari setiap akun di workspace Anda.

Penerima dapat menyatakan hal yang sama dengan membalas `STOP`. Preferensi tersebut dicakupkan ke akun bisnis yang mereka kirimi pesan, seperti di atas. Cakupannya adalah semua pesan, karena `STOP` yang diketik lebih luas daripada opt-out pemasaran WhatsApp. Lihat [aturan kata kunci](/docs/guides/whatsapp/opt-outs/keyword-rules) untuk mengetahui apa yang dikenali Bird dan cara mengubah balasannya.

Event resume berikutnya memperbarui preferensi akun tersebut. Supresi dan preferensi lain yang berlaku tetap diterapkan, sehingga event resume saja tidak membuktikan bahwa pengiriman diizinkan.

## Preferensi yang Anda catat

Buka halaman [**Suppressions**](https://bird.com/dashboard/w/whatsapp/suppressions) dan beralih ke tab **Preferences**. Mencatat satu preferensi di sana dengan **Every business account in the workspace** menghentikan alamat tersebut dari menerima pesan WhatsApp dari setiap akun yang Anda miliki, termasuk akun yang Anda hubungkan nanti.

![Daftar pelanggan yang memilih ikut serta atau tidak, dengan cakupan setiap pernyataan](/images/docs/dashboard-whatsapp-preferences.png)

Dialog **Record opt-out** di tab tersebut mencatat cakupan semua-pesan.

![Dialog untuk mencatat penolakan, dengan cakupan seluruh workspace dipilih](/images/docs/dashboard-whatsapp-preference-new.png)

Untuk mencatat preferensi yang hanya menghentikan pemasaran, gunakan halaman **Contacts** > **Preferences** tingkat workspace, yang dialognya menawarkan **Marketing messages** maupun **All messages**.

## Membaca preferensi dari kode

`GET /v1/preferences` mengembalikan preferensi yang tercatat di workspace, dimulai dari yang paling baru dibuat. Kirim `channel=whatsapp` untuk mempersempit ke kanal ini, dan `handle` bersamanya untuk melihat semua catatan satu nomor sebelum mengirim pesan kepada mereka:

**TypeScript**

```typescript
for await (const preference of bird.preferences.list({
  channel: "whatsapp",
  handle: "+15550001234",
})) {
  console.log(preference.status, preference.coverage, preference.sender_scope);
}
```

Examples: [TypeScript](/id-id/dokumentasi/guides/whatsapp/opt-outs/preferences.ts.md) · [Python](/id-id/dokumentasi/guides/whatsapp/opt-outs/preferences.py.md) · [Go](/id-id/dokumentasi/guides/whatsapp/opt-outs/preferences.go.md) · [PHP](/id-id/dokumentasi/guides/whatsapp/opt-outs/preferences.php.md) · [CLI](/id-id/dokumentasi/guides/whatsapp/opt-outs/preferences.cli.md) · [cURL](/id-id/dokumentasi/guides/whatsapp/opt-outs/preferences.curl.md)

`handle` memerlukan `channel`, karena handle yang sama dapat ada di lebih dari satu kanal.

## Mencatat preferensi dari kode

`POST /v1/preferences` mencatat satu pernyataan. Penulisan adalah upsert berdasarkan kunci kanal, handle, dan cakupan pengirim, sehingga pernyataan baru menggantikan pernyataan saat ini pada kunci tersebut:

**TypeScript**

```typescript
const result = await bird.preferences.create({
  channel: "whatsapp",
  handle: "+15550001234",
  status: "revoked",
  coverage: "non_transactional",
});
console.log(result.applied, result.preference?.id);
```

Examples: [TypeScript](/id-id/dokumentasi/guides/whatsapp/opt-outs/preferences.ts.md) · [Python](/id-id/dokumentasi/guides/whatsapp/opt-outs/preferences.py.md) · [Go](/id-id/dokumentasi/guides/whatsapp/opt-outs/preferences.go.md) · [PHP](/id-id/dokumentasi/guides/whatsapp/opt-outs/preferences.php.md) · [CLI](/id-id/dokumentasi/guides/whatsapp/opt-outs/preferences.cli.md) · [cURL](/id-id/dokumentasi/guides/whatsapp/opt-outs/preferences.curl.md)

Pernyataan diurutkan berdasarkan kapan dibuat, bukan kapan tiba. API menolak pernyataan yang bertanggal lebih awal dari pernyataan saat ini pada kunci tersebut dan mengembalikan `applied: false` beserta pernyataan yang bertahan. Penolakan tetap tersimpan di riwayat kunci.

`201` berarti kunci tersebut tidak memiliki catatan dan pernyataan ini membuatnya. `200` mengembalikan catatan yang bertahan pada kunci tersebut, baik pernyataan ini menggantikannya, mengulanginya, maupun ditolak.

## Apa yang dapat Anda batalkan

Preferensi yang Anda catat dapat dihapus dari tab **Preferences** atau dengan `DELETE /v1/preferences/{preference_id}` setelah penerima meminta Anda melanjutkan pengiriman.

Pernyataan yang dibuat sendiri oleh penerima hanya dapat dibatalkan oleh mereka. Unsubscribe atau kata kunci stop berakhir ketika mereka opt-in kembali, dan delete mengembalikan `422`. Untuk melanjutkan pengiriman pesan dengan persetujuan mereka, catat pernyataan `granted` yang membawa `consented_at`, momen saat mereka menyetujui. Pemberian berlaku ketika momen tersebut lebih baru dari opt-out yang dibatalkannya, sehingga mencatat perubahan keputusan alih-alih menghapus pernyataan asli.

Delete diurutkan seperti pernyataan lainnya, menggunakan waktu penerimaannya. Jika catatan memiliki pernyataan yang dibuat setelah momen tersebut, delete ditolak dan dikembalikan dengan `applied: false` beserta catatan yang bertahan.

## Ketika kesalahan pengiriman tiba lebih dulu

Kesalahan pengiriman dari penyedia dapat melaporkan stop sebelum Bird mencatat event yang sesuai. Hormati pilihan penerima dan periksa riwayat preferensi serta event, alih-alih memperlakukan ketiadaan catatan lokal sebagai izin untuk mengirim.

## Langkah selanjutnya

- [Supresi](/docs/guides/whatsapp/opt-outs/suppressions): alamat yang diblokir langsung oleh workspace Anda.
- [Aturan kata kunci](/docs/guides/whatsapp/opt-outs/keyword-rules): kata-kata yang mencatat preferensi pada nomor Anda.
- [Event WhatsApp](/docs/guides/whatsapp/events): payload `whatsapp.rejected` yang dihasilkan oleh pengiriman yang diblokir.

## Related resources

- [Connecting WhatsApp to Bird: from buying a number to a live channel](/learn/whatsapp/connecting-whatsapp-to-bird) (video)
- [What is the 24-hour customer service window on WhatsApp?](/explained/whatsapp/what-is-the-24-hour-customer-service-window) (answer)
- [WhatsApp message builder](/tools/whatsapp-message-builder) (tool)
- [WhatsApp](/whatsapp-api) (product)

[Get an implementation brief](/learn/workspace?topic=whatsapp)
