Harga berbasis percakapan telah berubah. Lihat Harga untuk mempelajari cara kerja model harga berbasis percakapan baru kami.

Selain itu, visibilitas metric_types telah berubah mulai tanggal 1 Juli 2023. Lihat tabel Analitik Percakapan untuk detail selengkapnya.

Pesan Template

Template pesan WhatsApp adalah format pesan spesifik yang digunakan bisnis untuk mengirim notifikasi atau pesan layanan pelanggan kepada orang-orang yang telah menyetujui notifikasi. Pesan bisa meliputi pengingat janji temu, informasi pengiriman, penyelesaian masalah, atau pembaruan pembayaran.

Sebelum mengirim pesan template, Anda perlu membuat template. Lihat Membuat Template Pesan untuk Akun WhatsApp Business Anda untuk informasi selengkapnya. Jika akun Anda belum terverifikasi, Anda dapat menggunakan salah satu template yang telah disetujui.

Saat ini, Anda dapat mengirimkan jenis template berikut:

Semua panggilan API yang disebutkan dalam panduan ini harus diautentikasi dengan token akses. Developer dapat mengautentikasi panggilan API mereka dengan token akses yang dibuat di panel Dasbor Aplikasi > WhatsApp > Pengaturan API. Partner Solusi harus mengautentikasi diri dengan token akses dengan izin whatsapp_business_messaging.

Pacing

Template marketing yang baru dibuat atau tidak dijeda tunduk pada pacing template. Lihat Pacing Template.

Template Pesan Berbasis Teks

Untuk mengirim template pesan berbasis teks, buat panggilan POST ke /PHONE_NUMBER_ID/messages dan lampirkan objek pesan dengan type=template. Lalu, tambahkan objek template.

Contoh permintaan:

curl -X  POST \
 'https://graph.facebook.com/v19.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE_NUMBER",
  "type": "template",
  "template": {
    "name": "TEMPLATE_NAME",
    "language": {
      "code": "LANGUAGE_AND_LOCALE_CODE"
    },
    "components": [
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "text-string"
          },
          {
            "type": "currency",
            "currency": {
              "fallback_value": "VALUE",
              "code": "USD",
              "amount_1000": NUMBER
            }
          },
          {
            "type": "date_time",
            "date_time": {
              "fallback_value": "DATE"
            }
          }
        ]
      }
    ]
  }
}'

Tanggapan yang berhasil mencakup objek dengan pengidentifikasi berawalan wamid. Gunakan ID yang terdaftar setelah wamid untuk melacak status pesan Anda.

{
  "messaging_product": "whatsapp",
  "contacts": [{
      "input": "PHONE_NUMBER",
      "wa_id": "WHATSAPP_ID",
    }]
  "messages": [{
      "id": "wamid.ID",
    }]
}

Template Pesan Berbasis Media

Untuk mengirim template pesan berbasis media, buat panggilan POST ke /PHONE_NUMBER_ID/messages dan lampirkan objek pesan dengan type=template. Lalu, tambahkan objektemplate. Mendukung Caching HTTP Media.

Gunakan endpoint POST Nomor Telepon WhatsApp Business > Pesan untuk mengirim pesan template berbasis media. Atur properti type ke template dan gunakan properti template untuk menentukan objek template dan objek medianya.

Saat mendefinisikan objek media Anda, Anda dapat mengunggah aset media Anda ke server kami dan menggunakan ID medianya (dengan properti id), atau meng-host aset di server Anda dan menggunakan URL-nya (dengan properti link). Jika menggunakan link, aset Anda harus berada di server yang dapat diakses oleh publik atau pesan akan gagal terkirim.

Untuk mengurangi kemungkinan kesalahan dan menghindari permintaan yang tidak perlu ke server publik Anda, sebaiknya unggah aset media Anda dan gunakan ID-nya saat mengirim pesan.

Aset media juga dapat di-cache. Lihat Caching HTTP Media.

Contoh permintaan:

curl -X  POST \
 'https://graph.facebook.com/v19.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE_NUMBER",
  "type": "template",
  "template": {
    "name": "TEMPLATE_NAME",
    "language": {
      "code": "LANGUAGE_AND_LOCALE_CODE"
    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "image",
            "image": {
              "link": "https://URL"
            }
          }
        ]
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "TEXT-STRING"
          },
          {
            "type": "currency",
            "currency": {
              "fallback_value": "VALUE",
              "code": "USD",
              "amount_1000": NUMBER
            }
          },
          {
            "type": "date_time",
            "date_time": {
              "fallback_value": "MONTH DAY, YEAR"
            }
          }
        ]
      }
    ]
  }
}'

Tanggapan yang berhasil mencakup objek dengan pengidentifikasi berawalan wamid. Gunakan ID yang terdaftar setelah wamid untuk melacak status pesan Anda.

{
  "messaging_product": "whatsapp",
  "contacts": [{
      "input": "PHONE_NUMBER",
      "wa_id": "WHATSAPP_ID",
    }]
  "messages": [{
      "id": "wamid.ID",
    }]
}

Template Pesan Interaktif

Template pesan interaktif memperluas konten yang dapat Anda kirim ke penerima di luar template pesan standar dan jenis template pesan media untuk menyertakan tombol interaktif menggunakan objek komponen. Ada dua jenis tombol yang telah ditentukan:

  • Ajakan Bertindak — Memungkinkan pelanggan Anda menelepon nomor telepon dan mengunjungi situs web.
  • Balasan Cepat — Memungkinkan pelanggan Anda untuk membalas pesan teks sederhana.

Tombol-tombol ini dapat dilampirkan ke pesan teks atau pesan media. Setelah template pesan interaktif Anda dibuat dan disetujui, Anda dapat menggunakannya dalam pesan notifikasi serta pesan layanan pelanggan.

Untuk mengirim template pesan interaktif, buat panggilan POST ke /PHONE_NUMBER_ID/messages dan lampirkan objek pesan dengan type=template. Kemudian, tambahkan objek template dengan button pilihan Anda.

Contoh permintaan:

curl -X  POST \
 'https://graph.facebook.com/v19.0/FROM_PHONE_NUMBER_ID/messages' \
 -H 'Authorization: Bearer ACCESS_TOKEN' \
 -H 'Content-Type: application/json' \
 -d '{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "PHONE_NUMBER",
  "type": "template",
  "template": {
    "name": "TEMPLATE_NAME",
    "language": {
      "code": "LANGUAGE_AND_LOCALE_CODE"
    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "image",
            "image": {
              "link": "http(s)://URL"
            }
          }
        ]
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "TEXT_STRING"
          },
          {
            "type": "currency",
            "currency": {
              "fallback_value": "VALUE",
              "code": "USD",
              "amount_1000": NUMBER
            }
          },
          {
            "type": "date_time",
            "date_time": {
              "fallback_value": "MONTH DAY, YEAR"
            }
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "quick_reply",
        "index": "0",
        "parameters": [
          {
            "type": "payload",
            "payload": "PAYLOAD"
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "quick_reply",
        "index": "1",
        "parameters": [
          {
            "type": "payload",
            "payload": "PAYLOAD"
          }
        ]
      }
    ]
  }
}'

Tanggapan yang berhasil mencakup objek dengan pengidentifikasi berawalan wamid. Gunakan ID yang terdaftar setelah wamid untuk melacak status pesan Anda.

{
  "messaging_product": "whatsapp",
  "contacts": [{
      "input": "PHONE_NUMBER",
      "wa_id": "WHATSAPP_ID",
    }]
  "messages": [{
      "id": "wamid.ID",
    }]
}

Template Pesan Berbasis Lokasi

Untuk mengirim template yang menggunakan header lokasi, permintaan Anda harus menyertakan objek header lokasi.

Sintaksis

{
  "type": "header",
  "parameters": [
    {
      "type": "location",
      "location": {
        "latitude": "<LATITUDE>",
        "longitude": "<LONGITUDE>",
        "name": "<NAME>",
        "address": "<ADDRESS>"
      }
    }
  ]
}

Properti

PlaceholderDeskripsiContoh Nilai

<ADDRESS>

Alamat yang akan muncul setelah nilai <NAME>, di bawah peta umum di bagian atas pesan.

1 Hacker Way, Menlo Park, CA 94025

<LATITUDE>

Lintang lokasi.

37.483307

<LONGITUDE>

Bujur lokasi.

122.148981

<NAME>

Teks yang akan muncul tepat di bawah peta umum di bagian atas pesan.

Pablo Morales

Contoh Permintaan

Ini adalah contoh permintaan untuk mengirimkan template yang sudah ada yang menggunakan komponen berikut:

  • header lokasi
  • body teks dengan variabel
  • footer
  • tombol balasan cepat
curl -L 'https://graph.facebook.com/v16.0/106540352242922/messages' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer EAAJB...' \
-d '
{
  "messaging_product": "whatsapp",
  "recipient_type": "individual",
  "to": "12245554792",
  "type": "template",
  "template": {
    "name": "order_delivery_update",
    "language": {
      "code": "en_US"
    },
    "components": [
      {
        "type": "header",
        "parameters": [
          {
            "type": "location",
            "location": {
              "latitude": "37.483307",
              "longitude": "122.148981",
              "name": "Pablo Morales",
              "address": "1 Hacker Way, Menlo Park, CA 94025"
            }
          }
        ]
      },
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "Pablo"
          },
          {
            "type": "text",
            "text": "566701"
          }
        ]
      }
    ]
  }
}'

Template Autentikasi

Mencoba mengirim template autentikasi legasi (template tanpa tombol kata sandi sekali pakai) akan menampilkan kode kesalahan 100 jika nilai variabel melebihi 15 karakter atau berisi tautan atau emoji, atau komponen body template berisi tautan. Sebagai gantinya, buat dan gunakan template autentikasi yang memiliki tombol kata sandi sekali pakai.

Lihat Template Autentikasi dan Mengirim Template Autentikasi.

Urutan Pengiriman Beberapa Pesan

Saat mengirim serangkaian pesan, urutan penyampaian tidak dijamin sesuai dengan urutan permintaan API Anda. Jika Anda perlu memastikan urutan pengiriman pesan, konfirmasikan penerimaan status delivered dalam webhook pesan sebelum mengirim pesan berikutnya dalam urutan pesan Anda.

Batas Pesan Template Marketing Per Pengguna

Mulai 6 Februari 2024, batas pesan template marketing per pengguna berlaku untuk pesan template yang dikirim ke sejumlah kecil pengguna WhatsApp di India, tetapi akan berlaku untuk semua pengguna WhatsApp dengan nomor telepon India paling lambat tanggal 13 Februari 2024.

Kami meluncurkan pendekatan baru, dimulai dengan konsumen di India, yang menciptakan pengalaman pengguna berkualitas tinggi dan memaksimalkan interaksi pesan template marketing. Hal ini mungkin termasuk membatasi jumlah pesan template marketing yang diterima seseorang dari bisnis mana pun dalam jangka waktu tertentu, dimulai dengan sejumlah kecil percakapan yang kecil kemungkinannya untuk dibaca. Perhatikan bahwa batas tersebut ditentukan berdasarkan jumlah pesan template marketing yang telah diterima orang tersebut dari bisnis mana pun dan tidak terkait dengan bisnis Anda secara spesifik.

Batasan tersebut hanya berlaku untuk pesan template marketing yang biasanya membuka percakapan marketing baru. Jika percakapan marketing sudah terbuka antara Anda dan pengguna WhatsApp, pesan template marketing yang dikirimkan kepada pengguna tersebut tidak akan terpengaruh.

Jika pesan template marketing tidak tersampaikan ke pengguna tertentu karena batas tersebut, Cloud API akan menampilkan kode kesalahan 131026 dan On-Premises API akan menampilkan kode kesalahan 1026. Namun, perlu diperhatikan bahwa kode kesalahan ini mencakup berbagai masalah yang dapat mengakibatkan tidak terkirimnya pesan. Untuk alasan privasi, kami tidak akan mengungkapkan jika sebenarnya pesan tidak tersampaikan karena batasan tersebut. Lihat dokumen Pemecahan Masalah dari Cloud API dan "Mengapa tingkat pengiriman saya tidak 100%?" dari On-Premises API. Pertanyaan Umum untuk deskripsi dari alasan tidak terkirimnya pesan dan hal yang dapat Anda lakukan untuk menentukan penyebab utamanya.

Jika Anda menerima salah satu kode kesalahan ini dan mencurigai batas tersebut sebagai penyebabnya, segera hindari mengirim ulang pesan template karena hanya akan menghasilkan tanggapan kesalahan lainnya. Sebaliknya, coba lagi dengan meningkatkan kenaikan waktu yang lebih besar hingga pesan tersampaikan karena batas tersebut mungkin berlaku untuk periode waktu yang berbeda.

Kami akan terus mempertajam pendekatan kami dan menghargai kemitraan Anda seiring upaya kami menjadikan WhatsApp pengalaman terbaik bagi bisnis dan pelanggan Anda.

Pemecahan Masalah

Jika Anda mengalami masalah dengan pengiriman pesan, lihat Pesan Tidak Tersampaikan.