Formulir WhatsApp

Kumpulkan Jawaban Terstruktur di Dalam WhatsApp

Buat formulir di Flow Builder Meta, sinkronkan ke StartMessaging, dan lampirkan ke tombol template. Pelanggan mengisinya tanpa keluar dari chat, dan setiap jawaban tiba sebagai kolom berlabel di kotak masuk, API, dan webhook Anda. WhatsApp Forms tersedia di paket Business dan uji coba gratis 14 hari.

✦ Uji coba gratis 14 hari · Nomor WhatsApp Business Anda sendiri · Meta menagih pesan secara langsung

Dibuat di Meta, Digunakan di StartMessaging

Formulir WhatsApp adalah Meta Flows. Anda merancang layar dan pertanyaan di Flow Builder Meta di Meta Business Manager; StartMessaging tidak memiliki editor formulir sendiri. Tekan Sinkronkan dari Meta dan formulir Anda muncul di halaman Formulir WhatsApp beserta status, kategori, dan ID Meta-nya, siap dilampirkan ke tombol Flow pada template.

  • Buka Flow Builder Meta dari halaman Formulir WhatsApp
  • Sinkronkan dari Meta untuk mengambil formulir baru atau yang diubah
  • Lampirkan formulir yang tersinkron ke tombol Flow template
Alur Formulir WhatsApp yang dilampirkan ke tombol template

Jawaban Masuk ke Chat, sebagai Kolom

Saat pelanggan mengirim formulir, kotak masuk bersama menampilkan kartu Formulir WhatsApp di percakapan dengan setiap jawaban berlabel, termasuk file dari pemilih foto atau dokumen. Permintaan alamat ditampilkan sebagai alamat. Jika WhatsApp mengirim sesuatu yang tidak bisa dibaca sebagai kolom, kartu memberi tahu Anda dan menampilkan persis apa yang dikirim WhatsApp, sehingga tidak ada yang hilang.

  • Setiap jawaban ditampilkan dengan label yang mudah dibaca
  • Jawaban yang sama di GET /api/v1/messages/{id}
  • Dan di objek form pada webhook message.received
Kotak masuk bersama yang menampilkan Formulir WhatsApp terkirim dengan jawaban berlabel
Cara Kerjanya

Dari Formulir ke Jawaban dalam Empat Langkah

01

1. Buat formulir di Meta

Rancang layar dan pertanyaan di Flow Builder Meta: formulir prospek, pemesanan, survei masukan, atau apa pun yang perlu diisi pelanggan Anda.

02

2. Sinkronkan ke StartMessaging

Di halaman Formulir WhatsApp, tekan Sinkronkan dari Meta. Formulir Anda muncul beserta status dan ID Meta-nya.

03

3. Lampirkan ke template

Di pembuat template, tambahkan tombol Flow (Formulir WhatsApp), pilih formulirnya, lalu ajukan template. Meta meninjaunya seperti template lainnya.

04

4. Kirim dan baca jawabannya

Kirim template yang disetujui dari dasbor atau API. Melalui API, tambahkan flow token Anda sendiri agar setiap kiriman formulir dapat dicocokkan dengan prospek, pesanan, atau pemesanan Anda.

Bandingkan

Formulir WhatsApp vs. Pertanyaan di Chat vs. Tautan Formulir Web

Tiga cara mengumpulkan data dari pelanggan di WhatsApp.

Kemampuan Formulir WhatsApp Pertanyaan di chat Tautan formulir web
Tempat pelanggan menjawab Di dalam WhatsApp, pada layar formulir Di dalam WhatsApp, satu pesan setiap kali Di browser, di luar WhatsApp
Yang Anda terima Kolom terstruktur: kunci, label, nilai Teks bebas yang Anda olah sendiri Apa pun yang dikirim alat formulir Anda
Cara mencocokkan dengan data Anda Flow token yang Anda kirim Nomor telepon dan percakapan Parameter tautan Anda sendiri
Ditampilkan di kotak masuk StartMessaging ✓ (sebagai kartu formulir dengan jawaban berlabel) ✓ (sebagai pesan)
Cara pengirimannya Template dengan tombol Flow Pesan teks atau interaktif di dalam jendela 24 jam Tautan dalam pesan atau tombol URL
Tempat pembuatannya Flow Builder Meta Agen Anda atau alur chatbot Alat formulir web Anda
API & Webhook

Kirim formulir dengan token Anda sendiri, terima jawabannya sebagai kolom

Atur flow token dengan buttonParameters subType "flow". Kiriman formulir tiba di message.received dengan form.flowToken, form.fields, dan, melalui context, pesan yang membawa formulir.

# Send the template whose Flow button opens your WhatsApp Form.
# The flow token comes back on the submission as form.flowToken.
curl -X POST https://waba-api.startmessaging.com/api/v1/messages \
  -H "Authorization: Bearer sm_live_your_api_key" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: lead-77-demo-form" \
  -d '{
    "to": "+919812345678",
    "type": "template",
    "template": {
      "name": "book_a_demo",
      "language": "en_US",
      "parameters": [
        { "text": "Asha" }
      ],
      "buttonParameters": [
        { "index": 0, "subType": "flow", "text": "lead-77" }
      ]
    },
    "clientReference": "lead-77"
  }'
// 1. Send the form (needs the messages:send scope)
const res = await fetch('https://waba-api.startmessaging.com/api/v1/messages', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer ' + process.env.SM_API_KEY, // sm_live_your_api_key
    'Content-Type': 'application/json',
    'Idempotency-Key': 'lead-77-demo-form',
  },
  body: JSON.stringify({
    to: '+919812345678',
    type: 'template',
    template: {
      name: 'book_a_demo',
      language: 'en_US',
      parameters: [{ text: 'Asha' }],
      buttonParameters: [{ index: 0, subType: 'flow', text: 'lead-77' }],
    },
    clientReference: 'lead-77',
  }),
});
const { data } = await res.json();
console.log(data.id, data.status);

// 2. In your message.received webhook handler (after verifying the signature)
function onMessageReceived(event) {
  const form = event.data.message.form;
  if (!form) return;
  const answers = Object.fromEntries(form.fields.map((f) => [f.key, f.value]));
  // form.flowToken === 'lead-77' -> update that lead with the answers
}
import os, requests

res = requests.post(
    'https://waba-api.startmessaging.com/api/v1/messages',
    headers={
        'Authorization': f"Bearer {os.environ['SM_API_KEY']}",  # sm_live_your_api_key
        'Idempotency-Key': 'lead-77-demo-form',
    },
    json={
        'to': '+919812345678',
        'type': 'template',
        'template': {
            'name': 'book_a_demo',
            'language': 'en_US',
            'parameters': [{'text': 'Asha'}],
            'buttonParameters': [{'index': 0, 'subType': 'flow', 'text': 'lead-77'}],
        },
        'clientReference': 'lead-77',
    },
)

data = res.json()['data']
print(data['id'], data['status'])

# Later: read the answers from the message.received webhook,
# or GET /api/v1/messages/{id} for the inbound message (messages:read scope).
<?php
$body = json_encode([
    'to' => '+919812345678',
    'type' => 'template',
    'template' => [
        'name' => 'book_a_demo',
        'language' => 'en_US',
        'parameters' => [['text' => 'Asha']],
        'buttonParameters' => [
            ['index' => 0, 'subType' => 'flow', 'text' => 'lead-77'],
        ],
    ],
    'clientReference' => 'lead-77',
]);

$ch = curl_init('https://waba-api.startmessaging.com/api/v1/messages');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . getenv('SM_API_KEY'), // sm_live_your_api_key
        'Content-Type: application/json',
        'Idempotency-Key: lead-77-demo-form',
    ],
    CURLOPT_POSTFIELDS => $body,
]);
$data = json_decode(curl_exec($ch), true)['data'];
echo $data['id'] . ' ' . $data['status'];
{
  "id": "evt_01JCA4M8ZP",
  "type": "message.received",
  "createdAt": "2026-10-07T11:05:12.000Z",
  "workspaceId": "ws_9f2c",
  "data": {
    "message": {
      "id": "msg_8e41",
      "conversationId": "conv_3a90",
      "contactId": "ct_88b1",
      "from": "+919812345678",
      "type": "interactive",
      "text": "Full name: Asha Rao · City: Pune · Preferred date: 2026-10-12",
      "reply": null,
      "context": {
        "messageId": "msg_7f20",
        "clientReference": "lead-77"
      },
      "form": {
        "kind": "flow",
        "flowToken": "lead-77",
        "flowId": "1187364520093321",
        "flowName": "Book a demo",
        "fields": [
          { "key": "screen_0_Full_name_0", "label": "Full name", "value": "Asha Rao" },
          { "key": "screen_0_City_1", "label": "City", "value": "Pune" },
          { "key": "screen_0_Preferred_date_2", "label": "Preferred date", "value": "2026-10-12" }
        ],
        "raw": null
      },
      "referral": null,
      "timestamp": "2026-10-07T11:05:10.000Z"
    },
    "contact": {
      "id": "ct_88b1",
      "phone": "+919812345678",
      "name": "Asha"
    }
  }
}
FAQ

Formulir WhatsApp — FAQ

Bisakah saya membuat formulir di dalam StartMessaging?

Tidak. Formulir WhatsApp adalah Meta Flows, dan Anda membuatnya di Flow Builder Meta di Meta Business Manager. StartMessaging menyinkronkan formulir Anda dari Meta, memungkinkan Anda melampirkannya ke tombol template, serta menampilkan dan meneruskan jawabannya.

Bagaimana cara mengirim Formulir WhatsApp ke pelanggan?

Lampirkan formulir ke tombol Flow pada template dan ajukan template ke Meta. Setelah Meta menyetujuinya, kirim seperti template lainnya. Melalui API, gunakan POST /api/v1/messages dengan buttonParameters [{ "index": 0, "subType": "flow", "text": "<flow token Anda>" }].

Bagaimana mencocokkan kiriman formulir dengan prospek atau pemesanan saya?

Kirim flow token yang mengidentifikasi data tersebut, misalnya "lead-77". Token kembali pada kiriman formulir sebagai form.flowToken. Jika pengiriman tidak menyertakan token, flowToken bernilai "unused". context pada kiriman juga menunjuk ke pesan yang membawa formulir, termasuk clientReference-nya.

Di mana saya bisa membaca jawabannya?

Di tiga tempat: sebagai kartu formulir di percakapan kotak masuk bersama; melalui API dengan GET /api/v1/messages/{id} atau daftar pesan percakapan; dan di objek form pada webhook message.received, sebagai { kind, flowToken, flowId, flowName, fields: [{ key, label, value }], raw }.

Apakah label kolom sama dengan yang saya tulis di formulir?

Tidak persis. WhatsApp mengirim setiap jawaban dengan kunci respons, dan StartMessaging mengubah kunci itu menjadi label yang mudah dibaca (screen_0_Full_name_0 dari Flow Builder menjadi "Full name"). Petakan data Anda berdasarkan key, yang persis sama dengan yang dikirim WhatsApp. Jika jawaban tidak bisa dibaca sebagai JSON, fields kosong dan raw berisi balasan asli WhatsApp.

Untuk apa saya bisa menggunakan Formulir WhatsApp?

Apa pun yang membutuhkan beberapa data sekaligus: penangkapan prospek, pemesanan janji temu dan demo, survei masukan, dan permintaan alamat. Jawaban bisa berupa teks, persetujuan ya/tidak, angka, pilihan kotak centang, atau file dari pemilih foto atau dokumen.

Paket mana yang mencakup WhatsApp Forms?

Paket Business, dan uji coba gratis 14 hari, bersama alur chatbot. Menyinkronkan formulir dari Meta dan menambahkan tombol Flow (WhatsApp Form) ke template memerlukan Business. Team mencakup kotak masuk bersama, kontak, kampanye, dan balasan otomatis kata kunci, tetapi tidak formulir.

Apakah Formulir WhatsApp dikenakan biaya tambahan?

StartMessaging tidak menagih per formulir atau per pesan: WhatsApp Forms sudah termasuk dalam paket Business. Meta menagih setiap template yang terkirim, termasuk yang membawa formulir, sesuai tarif kategorinya, langsung ke Akun WhatsApp Business milik Anda sendiri.

WhatsApp API

Mulai Kumpulkan Jawaban di WhatsApp

Hubungkan Akun WhatsApp Business Anda, sinkronkan formulir dari Meta, dan kirim formulir pertama selama uji coba gratis 14 hari. WhatsApp Forms tersedia di paket Business.