> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/user/id/guide/account/iot-logic/nodes/webhook-node.md).

# Webhook

## Ikhtisar teknis dan kapabilitas

{% columns %}
{% column width="58.333333333333336%" %}
**Webhook** node ini memungkinkan pemicu real-time atas tindakan tertentu di sistem eksternal. Node ini mengirim permintaan HTTP POST ke endpoint yang ditentukan saat menerima data dari node terhubung. Kemudian, node ini menyusun payload JSON kustom dengan atribut statis dan dinamis, serta menjalankan panggilan API ke layanan pihak ketiga.
{% endcolumn %}

{% column width="41.666666666666664%" %}

<figure><img src="/files/298811a626c39dcf706e15cc9ecd0631c5d5e579" alt=""><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

Node ini memperluas kemampuan IoT Logic melampaui pemrosesan dan transmisi data, sehingga memungkinkan integrasi langsung dengan platform perpesanan, sistem ERM dan CRM, serta aplikasi kustom untuk memulai tindakan otomatis berdasarkan konfigurasi aliran Anda.

{% hint style="info" %}
Node Webhook dikonfigurasi secara terpisah untuk setiap aliran di UI platform Navixy. Node Webhook berfungsi sebagai titik terminal dalam aliran dan memerlukan setidaknya satu koneksi masuk agar dapat berfungsi. Node ini tidak dapat meneruskan data ke node berikutnya.
{% endhint %}

<figure><img src="/files/b2da15ad35c29a8045b40d08b7abb20da32c273c" alt=""><figcaption></figcaption></figure>

### Cara kerja node Webhook

Ketika data mencapai node Webhook melalui koneksi masuk, node ini segera menjalankan permintaan HTTP POST ke endpoint yang dikonfigurasi. Node ini:

1. Mengumpulkan nilai saat ini untuk semua atribut dari node hulu yang terhubung
2. Mengganti referensi atribut dinamis (misalnya, `{{speed}}`) dengan nilai aktual dari pesan masuk
3. Menyusun payload JSON lengkap sambil mempertahankan struktur yang Anda tentukan
4. Mengirim permintaan HTTP POST dengan header yang ditentukan ke endpoint target
5. Melanjutkan tanpa menunggu respons, sehingga aliran dapat langsung berlanjut

Webhook dipicu sekali untuk setiap pesan yang mencapainya. Jika beberapa cabang paralel mengirim data ke webhook, webhook dipicu secara terpisah untuk setiap pesan masuk. Eksekusi ini berlangsung secara independen tanpa memblokir node lain dalam aliran, sehingga pemrosesan data tetap berlanjut tanpa terpengaruh waktu respons sistem eksternal.

Setiap **Webhook** hasil pemicu node muncul di [Penganalisis Data](/docs/user/id/guide/account/iot-logic/data-stream-analyzer.md) sebagai atribut yang dinamai berdasarkan **ID node** (ditampilkan dalam dialog konfigurasi node, misalnya `webhook_1a2b3c4d`). Nilainya adalah `0` ketika node belum dipicu dan `1` ketika node telah dipicu, sehingga Anda dapat mengonfirmasi pengiriman dan membedakan beberapa node Webhook dalam aliran yang sama.

### Integrasi arsitektur aliran

Node Webhook berfungsi sebagai titik terminasi yang mengubah data perangkat yang telah diproses menjadi panggilan API eksternal. Alih-alih terus-menerus mengalirkan semua data perangkat seperti node Titik Akhir Output, webhook menjalankan permintaan API yang ditargetkan dengan payload yang dikonfigurasi secara presisi. Arsitektur ini memungkinkan:

* **Otomatisasi berbasis peristiwa**: Memicu alur kerja eksternal berdasarkan kondisi perangkat, metrik yang dihitung, atau pola data tertentu yang diidentifikasi sebelumnya dalam aliran
* **Pengiriman data selektif**: Mengirim hanya atribut yang relevan ke sistem eksternal, sehingga mengurangi transfer data yang tidak perlu dan biaya API
* **Eksekusi paralel**: Beroperasi bersama node output lainnya, memungkinkan pemicu webhook secara simultan dan aliran data berkelanjutan ke tujuan yang berbeda
* **Integrasi multi-sumber**: Menerima koneksi masuk dari beberapa cabang paralel dan mengakses atribut dari semua node yang terhubung

### Kapabilitas node

Laporan **Node Webhook** menawarkan:

* **Eksekusi HTTP POST**: Mengirim permintaan HTTP POST kustom ke endpoint mana pun yang dapat diakses menggunakan protokol HTTP atau HTTPS (HTTPS sangat disarankan)
* **Penyusunan payload dinamis**: Menyusun body permintaan JSON yang menggabungkan nilai statis dengan atribut dinamis dari bagian mana pun dalam aliran menggunakan `{{attribute_name}}` sintaks
* **Konfigurasi header kustom**: Mendukung hingga 10 header HTTP yang ditentukan pengguna untuk autentikasi dan kebutuhan khusus API
* **Dukungan atribut bersarang**: Mereferensikan struktur atribut kompleks termasuk objek dan larik bersarang di dalam payload JSON
* **Eksekusi independen**: Dipicu tanpa menunggu respons atau memblokir aliran, sehingga memungkinkan operasi yang andal terlepas dari ketersediaan sistem eksternal

## Opsi konfigurasi

{% columns %}
{% column valign="middle" %}
Node Webhook memungkinkan Anda menentukan bagaimana aliran Anda akan berkomunikasi dengan sistem eksternal melalui panggilan API HTTP.
{% endcolumn %}

{% column %}

<figure><img src="/files/9bdfa21d8a12478999072fb143293a9dbadd4907" alt=""><figcaption></figcaption></figure>
{% endcolumn %}
{% endcolumns %}

Mari lihat elemen yang digunakan node ini dan apa yang dapat Anda konfigurasi saat bekerja dengannya.

### Langkah konfigurasi

{% stepper %}
{% step %}

#### Tentukan Nama node

Masukkan nama deskriptif yang mengidentifikasi tujuan webhook.

* Gunakan nama yang menunjukkan layanan atau tindakan target (misalnya, "Aturan peringatan kecepatan Slack" atau "Pembuatan tiket CRM")
* Nama ini muncul dalam diagram aliran agar mudah diidentifikasi
  {% endstep %}

{% step %}

#### ID node (dibuat secara otomatis)

Di bawah kolom Nama, dialog menampilkan **ID node** (misalnya, `webhook_1a2b3c4d`). Kolom ini hanya-baca — Anda tidak dapat mengedit atau menetapkan nilainya.

* ID dibuat secara otomatis saat node dibuat dan tetap sama selama masa pakai node
* Gunakan ini untuk membedakan hasil node ini dari node Webhook lain di [Penganalisis Data](/docs/user/id/guide/account/iot-logic/data-stream-analyzer.md), yang muncul sebagai atribut yang menunjukkan `0` (belum dipicu) atau `1` (dipicu)
  {% endstep %}

{% step %}

#### Konfigurasikan URL endpoint

Masukkan URL lengkap tempat permintaan POST dikirim.

* Sertakan protokol: `http://` atau `https://` (HTTPS sangat disarankan)
* Pastikan URL mengarah ke endpoint API valid yang menerima permintaan POST
* Contoh: `https://api.example.com/v1/webhooks/device-alerts`
  {% endstep %}

{% step %}

#### Tentukan header HTTP

Tambahkan header apa pun yang diperlukan oleh API target Anda.

1. Klik **Tambahkan header** untuk membuat pasangan kunci-nilai header\
   Semua header dikonfigurasi oleh pengguna, termasuk Content-Type. Header umum meliputi:
   * `Content-Type: application/json` (diperlukan untuk payload JSON)
   * `Authorization: Bearer <token>` (untuk autentikasi API)
   * Kunci API khusus atau header autentikasi sesuai persyaratan layanan
2. Klik ikon hapus untuk menghapus header individual

{% hint style="info" %}
Maksimal 10 header didukung
{% endhint %}
{% endstep %}

{% step %}

#### Buat body permintaan

Beralih ke **Isi** tab dan tentukan struktur JSON yang dikirim ke endpoint:

* Masukkan sintaks JSON yang valid di kolom Body
* Gunakan `{{attribute_name}}` untuk mereferensikan atribut apa pun dari node yang terhubung
* Mendukung struktur JSON bertingkat dan array
* Referensi atribut berfungsi dengan path bertingkat (misalnya, `{{location.latitude}}`)
* Jika atribut yang direferensikan bernilai null atau tidak ada, nilainya `null` dikirim dalam JSON

**Contoh isi Webhook dengan atribut dinamis:**

```json
{
  "alert_type": "speed_violation",
  "device_id": "{{device_id}}",
  "current_speed": "{{speed_mph}}",
  "threshold_exceeded": 80,
  "location": {
    "lat": "{{latitude}}",
    "lng": "{{longitude}}"
  },
  "timestamp": "{{message_time}}",
  "supir": "{{hardware_key}}"
}
```

{% endstep %}

{% step %}

#### Simpan konfigurasi Anda

Klik **Terapkan perubahan** untuk menyimpan pengaturan node Webhook.
{% endstep %}
{% endstepper %}

## Perilaku eksekusi Webhook

Webhook dieksekusi tanpa menunggu respons dari titik akhir eksternal. Keberhasilan atau kegagalan permintaan Webhook tidak memengaruhi kelanjutan operasional aliran atau menghalangi node lain untuk memproses data.

{% hint style="danger" %}
Saat ini, eksekusi Webhook tidak mencakup percobaan ulang otomatis, pencatatan percobaan yang gagal, atau penanganan respons. Jika suatu titik akhir mengembalikan galat atau melampaui batas waktu, Webhook akan dipicu lagi pada pesan masuk berikutnya. Pembaruan mendatang mungkin mencakup pembatasan laju yang ditentukan tujuan dan antrean permintaan.
{% endhint %}

### Webhook vs aliran data berkelanjutan

**Node Webhook** berbeda secara mendasar dari **node Titik Akhir Output** dalam tujuan dan pola eksekusi:

| Node Webhook                                                                                                                                                                                            | node Titik Akhir Output                                                                                                                                                                                         |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Melakukan panggilan API terpisah pada setiap pesan, mengirim payload kustom yang Anda tentukan. Ideal untuk memicu tindakan eksternal, mengirim notifikasi, atau mengirimkan data terpilih ke API REST. | Mempertahankan aliran data berkelanjutan melalui MQTT, mengirimkan data perangkat lengkap dalam format Navixy Generic Protocol. Dirancang untuk pengumpulan telemetri berkelanjutan dan pemantauan waktu nyata. |

Pilih Webhook saat Anda perlu memicu otomatisasi eksternal atau mengirim hanya atribut tertentu ke endpoint API. Gunakan endpoint keluaran untuk umpan data berkelanjutan ke platform analitik atau sistem pemantauan. Keduanya dapat berjalan berdampingan dalam aliran yang sama.

### Integrasi dengan sistem eksternal

Node Webhook unggul dalam memicu tindakan berbasis peristiwa pada sistem yang menyediakan API REST. Pola integrasi umum meliputi:

* **Platform perpesanan**: Kirim notifikasi ke Slack, Microsoft Teams, WhatsApp, atau Telegram saat kondisi perangkat memenuhi kriteria tertentu
* **Sistem ERP**: Sinkronkan data perangkat dengan platform perencanaan sumber daya perusahaan untuk memperbarui tingkat inventaris, memicu alur kerja pengadaan, atau mencatat penggunaan peralatan untuk Penjadwalan Pemeliharaan
* **Sistem tiket**: Secara otomatis membuat tiket dukungan atau permintaan layanan di platform CRM saat masalah perangkat terdeteksi
* **Layanan peringatan**: Memicu notifikasi SMS, email, atau push melalui layanan seperti Twilio, SendGrid, atau Firebase saat ambang batas terlampaui
* **Otomatisasi bisnis**: Memulai alur kerja di alat seperti Zapier, Make (Integromat), atau n8n berdasarkan telemetri perangkat
* **Sistem telematika**: Memicu tindakan atau otomatisasi tertentu dalam solusi telematika pihak ketiga berdasarkan data yang telah diproses, sehingga memungkinkan alur kerja berbasis peristiwa seperti penghitungan ulang rute, notifikasi supir, atau pembaruan status di sistem manajemen armada eksternal
* **Aplikasi kustom**: Mengaktifkan logika bisnis milik sendiri dengan mengirimkan peristiwa perangkat ke API internal

## Pertanyaan yang sering diajukan

#### Bagaimana cara memicu Webhook hanya dalam kondisi tertentu?

Gunakan header **Logika** node untuk menerapkan logika kondisional sebelum webhook. Node ini **Logika** dapat mengevaluasi atribut perangkat dan mengirim data rute ke webhook hanya saat kondisi terpenuhi. Untuk detailnya, lihat [Logika](/docs/user/id/guide/account/iot-logic/nodes/logic-node.md).

#### Apakah saya dapat menggunakan beberapa node Webhook dalam aliran yang sama?

Ya. Sertakan beberapa **node Webhook** dengan konfigurasi berbeda untuk memicu berbagai sistem eksternal berdasarkan data perangkat yang sama. Setiap webhook berjalan secara independen saat menerima data.

#### Apa yang terjadi jika permintaan webhook gagal?

Webhook dipicu tanpa menunggu respons dan tidak mencoba ulang secara otomatis. Jika endpoint eksternal tidak tersedia atau mengembalikan kesalahan, aliran tetap memproses seperti biasa. Webhook mencoba dipicu lagi saat pesan berikutnya tiba. Saat ini, belum ada pencatatan percobaan webhook yang gagal.

#### Bagaimana cara mengautentikasi dengan API eksternal?

Konfigurasikan autentikasi sepenuhnya melalui header kustom. Pendekatan umum:

* **Token Bearer**: Tambahkan header `Authorization` dengan nilai `Bearer your_token_here`
* **Kunci API**: Tambahkan header kustom sebagaimana ditentukan oleh penyedia API Anda
* **Autentikasi Basic**: Tambahkan header `Authorization` dengan nilai `Basic base64_encoded_credentials`

Selalu sertakan `Content-Type: application/json` sebagai header saat mengirim payload JSON.

#### Apakah saya dapat mereferensikan atribut dari beberapa node yang terhubung?

Ya. node webhook dapat mengakses atribut dari node mana pun yang terhubung dengannya, termasuk cabang paralel. Jika beberapa node mengirim data ke webhook, webhook dipicu sekali untuk setiap pesan masuk dan dapat mereferensikan atribut dari jalur sumber pesan tersebut.

#### Data apa yang dapat saya sertakan di body webhook?

Anda dapat menyertakan kombinasi apa pun dari:

* Nilai statis yang ditentukan langsung dalam konfigurasi JSON Anda
* Atribut dinamis dari aliran menggunakan `{{attribute_name}}` sintaks
* Atribut bersarang dari struktur data kompleks
* Atribut yang dihitung dalam **node Inisiasi Atribut** atau diproses melalui **Logika** node

Body harus berupa JSON yang valid. Jika atribut yang dirujuk tidak ada atau berisi nilai null, `null` dikirim dalam JSON.

#### Bagaimana cara menguji konfigurasi webhook saya?

Buka [Penganalisis Data](/docs/user/id/guide/account/iot-logic/data-stream-analyzer.md) untuk aliran dan pilih perangkat pemicu. Cari atribut yang cocok dengan Node ID node ini: nilainya beralih menjadi `1` setiap kali webhook dipicu, `0` sebaliknya. Ini mengonfirmasi bahwa webhook dipicu tanpa perlu akses ke endpoint tujuan.

Untuk memverifikasi bahwa tujuan benar-benar menerima payload yang diharapkan, pertimbangkan untuk menggunakan layanan pengujian webhook seperti webhook.site atau RequestBin selama pengembangan untuk memeriksa permintaan tepat yang dikirim.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://navixy.com/docs/user/id/guide/account/iot-logic/nodes/webhook-node.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
