MasukMulai uji coba gratis
Meta Tech Provider

Catat pesan WhatsApp ke Airtable dan kirim dari base

Trigger webhook masuk Airtable hanya menerima permintaan POST, jadi tidak bisa menjawab GET verifikasi dari Meta dan tidak bisa menjadi tujuan webhook sebuah nomor. Arahkan tujuannya ke workflow n8n yang menambahkan setiap pesan ke tabel. Pengiriman bisa dilakukan dari dalam Airtable: otomasi Run a script dapat memanggil Cloud API dengan fetch, dengan token nomor tersimpan sebagai secret.

POST only

Trigger When webhook received milik Airtable tidak menerima metode lain, jadi tidak bisa menjawab GET verifikasi.

5 per second

Batas permintaan pada trigger webhook masuk Airtable, dengan batas payload 100 KB.

50 fetches

Permintaan yang dapat dibuat satu aksi Run a script Airtable, masing-masing habis waktu setelah 30 detik.

Mengapa Airtable tidak bisa menerima webhook WhatsApp secara langsung?

Karena Meta memeriksa tujuan sebelum mengirim apa pun. Meta mengirim permintaan GET yang membawa nilai challenge dan mengharapkan nilai yang sama dikembalikan sebagai isi respons. Trigger When webhook received milik Airtable hanya menerima permintaan POST dan menjawab dengan JSON tetap miliknya sendiri, sehingga pemeriksaan tidak bisa lolos dan Meta tidak pernah mulai mengirim.

Jawabannya adalah satu langkah perantara. Node Webhook n8n menangani verifikasi dan menerima setiap pesan, lalu node Airtable n8n menambahkan satu baris: pengirim, nama profil, teks, id pesan, stempel waktu, dan phone number id penerima. Pola yang sama berlaku di Make atau Zapier.

Langkah perantara ini punya manfaat kedua. Trigger webhook Airtable mengizinkan lima permintaan per detik, sedangkan alat workflow bisa mengantrekan lonjakan yang kalau tidak akan ditolak.

Bagaimana cara mengirim template WhatsApp dari base Airtable?

Dengan otomasi yang aksinya Run a script. Triggernya bisa berupa record yang masuk ke sebuah view, field yang berubah, atau tombol yang diklik. Skrip membaca nomor telepon dan field record lewat input.config() lalu memanggil endpoint messages Cloud API dengan fetch. Skrip otomasi Airtable berjalan di sisi server, jadi tidak ada pembatasan browser yang menghalangi.

Simpan token akses sebagai secret di editor skrip, bukan di dalam kode. Airtable menyamarkan secret dari output konsol dan hanya mengizinkan orang yang punya akses ke semua secret sebuah skrip untuk mengeditnya.

Gunakan template untuk semua pesan ke pelanggan yang tidak menulis dalam 24 jam terakhir, karena teks bebas hanya terkirim di dalam jendela tersebut. Skrip dapat menulis kembali id pesan yang dikembalikan ke record, sehingga pengiriman terhubung dengan barisnya.

Run a script action: send an approved template
const { phone, name } = input.config();
const token = input.secret("WHATSAPP_TOKEN");
const res = await fetch(
  "https://graph.facebook.com/v23.0/<PHONE_NUMBER_ID>/messages",
  {
    method: "POST",
    headers: { Authorization: "Bearer " + token, "Content-Type": "application/json" },
    body: JSON.stringify({
      messaging_product: "whatsapp",
      to: phone,
      type: "template",
      template: {
        name: "order_ready",
        language: { code: "en" },
        components: [{ type: "body", parameters: [{ type: "text", text: name }] }],
      },
    }),
  },
);
output.set("result", await res.json());

Seperti apa seharusnya tabel pesan?

Satu baris per pesan, dengan id pesan WhatsApp sebagai field utama. Meta mencoba kembali pengiriman yang dianggap gagal, dan workflow yang mencari id lebih dulu sebelum menambahkan baris tidak akan pernah menulis pesan yang sama dua kali.

Sediakan field arah dengan nilai inbound dan outbound. Pada nomor Coexistence, balasan yang diketik tim di aplikasi WhatsApp Business masuk ke webhook yang sama sebagai event smb_message_echoes, dan mencatatnya sebagai baris outbound membuat base memiliki percakapan lengkap, bukan satu sisi saja.

Hubungkan setiap pesan ke tabel Contacts dengan kunci nomor telepon berisi angka saja, yaitu bentuk yang dikirim Meta. Rollup kemudian menampilkan waktu pesan masuk terakhir per kontak, dan field tunggal itulah yang dibutuhkan otomasi untuk memilih antara teks bebas dan template.

Kesalahan umum

  • Memasang URL webhook Airtable sebagai tujuan nomor. URL itu hanya menerima POST, GET verifikasi Meta gagal, dan tidak ada yang pernah terkirim.
  • Menempelkan token akses di badan skrip. Simpan sebagai secret skrip agar tidak muncul di kode dan log.
  • Mengirim teks bebas dari otomasi record ke orang yang tidak menulis dalam 24 jam. Hanya template yang sudah disetujui yang akan terkirim.
Melakukan ini dengan EasyCoexistence

Hubungkan nomor di easycoexistence.com, arahkan tujuan webhook-nya ke workflow n8n yang menulis ke Airtable, lalu ambil phone number id dan token dari dashboard. Mulai US$ 9 per nomor per bulan, turun menjadi US$ 1 saat nomor bertambah, dengan 3 hari pertama gratis.

Pertanyaan yang sering diajukan

Apakah Run a script tersedia di paket gratis Airtable?

Airtable mencantumkan aksi ini di semua jenis paket dengan batasan yang berbeda, dan menyebut aksi ini tidak tersedia pada trial paket Team.

Bisakah saya melewati n8n dan memakai Make atau Zapier?

Bisa. Ketiganya dapat menerima webhook, menjawab verifikasi, dan menambahkan baris. Airtable sendiri adalah satu-satunya bagian yang tidak bisa menjadi tujuan.

Bisakah tombol Airtable mengirim pesan WhatsApp?

Bisa. Gunakan trigger When a button is clicked dengan aksi Run a script yang memanggil Cloud API, dan data baris mengisi template.

Apakah EasyCoexistence menyimpan pesannya?

Tidak. Meta mengirim setiap webhook ke URL n8n Anda, dan satu-satunya salinan adalah yang ditulis workflow Anda ke Airtable.

Lanjut membaca

Siap memulai?

Konfigurasikan WhatsApp Coexistence dalam hitungan menit, bukan bulan. Aplikasi tetap berfungsi di ponsel.

Mulai uji coba gratis

Diverifikasi pada

WhatsApp dan Airtable di Cloud API