Kembali ke Blog

Tutorial n8n #5: Menerima Data Masuk dengan Webhook n8n

Panduan praktis membuat workflow n8n yang menerima data dari luar menggunakan Webhook, memetakan payload dengan Edit Fields, lalu mengembalikan response sederhana.

•
Frendi Triarista
Tutorial n8n #5: Menerima Data Masuk dengan Webhook n8n

Tutorial n8n #5: Menerima Data Masuk dengan Webhook n8n

Di tutorial sebelumnya, kita banyak menjalankan workflow dari dalam n8n, mulai dari Manual Trigger, mapping data, condition, sampai HTTP Request. Pada bagian kelima ini, kita mulai membalik arah alurnya: bukan workflow yang mengambil data keluar, tetapi aplikasi luar yang mengirim data masuk ke n8n.

Di sinilah Webhook berguna. Buat saya, Webhook adalah titik perubahan penting dalam otomasi n8n, karena workflow tidak lagi hanya dijalankan manual. Workflow bisa merespons event dari luar, misalnya form lead, aplikasi internal, payment callback, atau service lain yang mengirim payload JSON.

Pada tutorial ini kita akan membuat workflow sederhana:

Webhook -> Edit Fields -> Respond to Webhook

Kita akan menerima data name, email, dan source, memetakan sebagian payload, lalu mengembalikan status sederhana ke pengirim request.

Prasyarat

Sebelum mulai, pastikan:

  1. n8n sudah berjalan.
  2. Anda sudah memahami Manual Trigger, Edit Fields, IF, dan HTTP Request dari tutorial sebelumnya.
  3. curl tersedia untuk pengujian lokal.

Manual Trigger vs Webhook

Manual Trigger cocok dipakai saat kita sedang membangun dan menguji workflow dari editor n8n. Kita klik tombol execute, lalu workflow berjalan.

Webhook berbeda. Webhook adalah trigger yang menunggu request dari luar. Ketika ada aplikasi lain mengirim request ke URL Webhook, workflow akan berjalan otomatis berdasarkan data yang diterima.

Perbedaan praktisnya:

Trigger Cara menjalankan Cocok untuk
Manual Trigger Diklik dari editor n8n Testing, eksperimen, workflow internal
Webhook Dipanggil melalui HTTP request Integrasi antar aplikasi, form submission, callback, event dari sistem lain

Dengan kata lain, Webhook membuat workflow menjadi lebih responsif terhadap event.

1. Buat workflow baru

Buat workflow baru di n8n, lalu tambahkan node berikut secara berurutan:

  1. Webhook
  2. Edit Fields
  3. Respond to Webhook

Struktur akhirnya:

Webhook -> Edit Fields -> Respond to Webhook

Workflow ini sengaja dibuat kecil agar struktur integrasinya mudah dipahami sebelum menerima data bisnis yang lebih nyata.

2. Konfigurasi Webhook node

Buka node Webhook, lalu gunakan konfigurasi berikut:

Field Nilai
HTTP Method POST
Path lead-intake
Respond Using Respond to Webhook node

Dengan konfigurasi ini, n8n akan menunggu request POST ke path lead-intake.

Kenapa POST? Karena kita ingin mengirim data baru ke workflow, bukan sekadar mengambil data.

3. Pahami Test URL dan Production URL

Webhook node menyediakan dua jenis URL:

  1. Test URL
  2. Production URL

Test URL dipakai saat kita sedang mengembangkan workflow. Biasanya kita perlu menekan tombol Listen for Test Event atau menjalankan workflow dari editor agar n8n siap menerima request test.

Production URL dipakai saat workflow sudah dipublish atau diaktifkan sesuai konfigurasi n8n. Namun, jangan menganggap URL production otomatis berarti endpoint sudah siap untuk beban production publik. Untuk production yang aman, kita tetap perlu memikirkan HTTPS, autentikasi, validasi payload, logging, dan kontrol akses.

Contoh pola URL lokal bisa terlihat seperti ini, tergantung konfigurasi n8n Anda:

Test URL: http://localhost:5678/webhook-test/lead-intake
Production URL: http://localhost:5678/webhook/lead-intake

Gunakan URL yang ditampilkan langsung oleh n8n di node Webhook Anda, karena base URL bisa berbeda antara instalasi lokal, server, Docker, atau reverse proxy.

4. Kirim JSON contoh dengan curl

Klik Listen for Test Event di node Webhook, lalu jalankan request berikut dari terminal:

curl -X POST "http://localhost:5678/webhook-test/lead-intake" -H "Content-Type: application/json" -d '{"name":"Ayu Lestari","email":"[email protected]","source":"landing-page"}'

Payload yang dikirim:

{
  "name": "Ayu Lestari",
  "email": "[email protected]",
  "source": "landing-page"
}

Jika berhasil, n8n akan menangkap request tersebut dan menampilkan data masuk di editor.

Pada banyak kasus, body JSON dari Webhook akan tersedia di struktur seperti body. Jadi field bisa diakses sebagai:

{{ $json.body.name }}
{{ $json.body.email }}
{{ $json.body.source }}

Periksa output node Webhook Anda untuk memastikan struktur data yang muncul.

5. Mapping data dengan Edit Fields

Selanjutnya buka node Edit Fields.

Kita akan membuat output yang lebih rapi dengan hanya mengambil field yang dibutuhkan. Tambahkan field berikut:

Field baru Value
name {{ $json.body.name }}
source {{ $json.body.source }}

Dalam contoh ini, kita sengaja hanya memetakan name dan source. Field email tetap diterima oleh Webhook, tetapi tidak diteruskan ke response akhir.

Ini adalah pola yang sering saya pakai saat membuat workflow integrasi: terima payload lengkap, lalu bentuk ulang data menjadi struktur yang lebih kecil dan jelas sebelum diteruskan ke node berikutnya.

6. Kembalikan status dengan Respond to Webhook

Sekarang buka node Respond to Webhook.

Gunakan konfigurasi sederhana:

Field Nilai
Respond With JSON
Response Code 200
Response Body JSON status sederhana

Contoh response body:

{
  "status": "received",
  "message": "Lead berhasil diterima",
  "name": "={{ $json.name }}",
  "source": "={{ $json.source }}"
}

Response ini akan dikirim kembali ke client yang memanggil Webhook.

Jika request berhasil, curl akan menerima response kira-kira seperti ini:

{
  "status": "received",
  "message": "Lead berhasil diterima",
  "name": "Ayu Lestari",
  "source": "landing-page"
}

7. Uji request berhasil

Ulangi request curl setelah semua node tersambung:

curl -X POST "http://localhost:5678/webhook-test/lead-intake" -H "Content-Type: application/json" -d '{"name":"Ayu Lestari","email":"[email protected]","source":"landing-page"}'

Checklist berhasil:

  1. Request diterima oleh Webhook node.
  2. Data name dan source muncul di Edit Fields.
  3. Respond to Webhook mengembalikan JSON dengan status received.
  4. Terminal menampilkan response dari workflow.

Jika empat hal ini berjalan, berarti workflow Webhook dasar Anda sudah bekerja.

8. Masalah umum saat testing Webhook

Path salah

Jika path di node Webhook adalah lead-intake, pastikan request juga dikirim ke path yang sama.

Contoh salah:

/webhook-test/leads

Contoh benar:

/webhook-test/lead-intake

Perbedaan satu karakter saja bisa membuat request tidak sampai ke workflow yang dimaksud.

Method tidak sesuai

Jika Webhook diset ke POST, request GET tidak bisa dipakai untuk skenario ini.

Contoh salah:

curl "http://localhost:5678/webhook-test/lead-intake"

Contoh benar:

curl -X POST "http://localhost:5678/webhook-test/lead-intake" -H "Content-Type: application/json" -d '{"name":"Ayu Lestari","email":"[email protected]","source":"landing-page"}'

Selalu samakan method di client dengan method yang dipilih di Webhook node.

JSON invalid

JSON harus valid. Beberapa kesalahan yang sering terjadi:

  1. Menggunakan kutip tunggal di dalam JSON.
  2. Ada koma berlebih di akhir object.
  3. Lupa header Content-Type: application/json.
  4. Struktur payload berbeda dari expression yang dipakai di Edit Fields.

Contoh JSON invalid:

{
  "name": "Ayu Lestari",
  "email": "[email protected]",
  "source": "landing-page",
}

Koma setelah landing-page membuat JSON tersebut invalid.

Belum Listen for Test Event

Untuk Test URL, pastikan node Webhook sedang menunggu event test. Jika tidak, request bisa gagal atau tidak muncul di editor.

Saat memakai Production URL, pastikan workflow sudah dipublish atau diaktifkan sesuai mekanisme n8n Anda.

9. Catatan production: authentication dan HTTPS

Sebelum menerima data bisnis nyata, jangan berhenti di workflow yang baru saja kita buat. Webhook production perlu dirancang lebih aman.

Minimal perhatikan hal berikut:

  1. Gunakan HTTPS agar data tidak dikirim lewat koneksi yang tidak terenkripsi.
  2. Tambahkan autentikasi, misalnya token di header atau mekanisme lain yang sesuai kebutuhan sistem.
  3. Validasi payload sebelum diproses lebih jauh.
  4. Jangan mengandalkan path rahasia sebagai satu-satunya perlindungan.
  5. Simpan log yang cukup untuk debugging, tetapi hindari membocorkan data sensitif.

Webhook memang memudahkan integrasi, tetapi juga membuka pintu masuk ke workflow. Karena itu, keamanan harus dipikirkan sejak awal.

Kesimpulan

Di tutorial ini kita sudah membuat workflow n8n yang menerima data masuk menggunakan Webhook, memetakan payload dengan Edit Fields, lalu mengembalikan response menggunakan Respond to Webhook.

Alur akhirnya:

Webhook -> Edit Fields -> Respond to Webhook

Konsep terpenting dari tutorial ini adalah perubahan cara berpikir: workflow tidak hanya dijalankan manual, tetapi bisa merespons event dari luar. Mulai dari payload kecil seperti name, email, dan source membuat struktur integrasi lebih mudah dipahami sebelum kita menerima data yang lebih kompleks.

Pada tutorial n8n #6, kita akan naik satu langkah dengan menggabungkan dua alur agar workflow bisa menangani proses yang lebih fleksibel.

Referensi

  1. Webhook node, n8n Docs, https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/. Tanggal publish/update sumber: tidak terverifikasi.
  2. Respond to Webhook node, n8n Docs, https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook/. Tanggal publish/update sumber: tidak terverifikasi.