# Webhook

<figure><img src="/files/16a89168bb3baa4108e37cd2e9e6c3d20b56f331" alt=""><figcaption></figcaption></figure>

***

## Pendaftaran

Anda dapat mendaftarkan webhook di <mark style="color:biru;">**`Pengaturan`**</mark> **>** <mark style="color:biru;">**`Integrasi & API`**</mark> di tim BoxHero Anda.

## Perilaku Pengiriman & Pengulangan

Saat suatu peristiwa terjadi, BoxHero mengirim permintaan HTTP `POST` ke endpoint webhook terdaftar Anda. Isi permintaan berisi payload JSON yang menjelaskan peristiwa tersebut.

* Jika server Anda merespons dengan **HTTP 200 OK**, peristiwa dianggap berhasil terkirim.
* Jika server Anda merespons dengan **kode status selain 200 apa pun**, BoxHero menganggapnya sebagai kegagalan sementara dan mencoba mengirim ulang hingga 3 kali.

## Struktur Payload Webhook

Semua event webhook dikirim dengan struktur JSON berikut di body permintaan:

```json
{
  "id": "1234", // ID unik event
  "topic": "txs/new", // Topik event
  "version": 1, // Versi skema payload
  "payload": { // Data khusus event
    ...
  },
  "created_time": "2025-08-06T09:20:48.623Z" // Stempel waktu terjadinya event (ISO 8601)
}
```

***

## Urutan Event

BoxHero **tidak** menjamin urutan pengiriman event. Misalnya, event `item/new` dapat tiba setelah event `item/delete` untuk item yang sama.

Fitur `created_time` bidang dalam payload event mewakili waktu sebenarnya dari event. Terapkan logika yang idempotent dan toleran terhadap urutan di handler webhook Anda untuk menangani event dengan andal.

## Topik Event

{% hint style="info" %}
Jika Anda memerlukan dukungan untuk topik event tambahan, silakan hubungi [Dukungan](/docs/documentation/id/sumber-daya/contact.md).
{% endhint %}

### `txs/new`

Dipicu saat terjadi transaksi inventaris (Stock In / Stock Out / Adjust Stock / Move Stock).

{% hint style="warning" %}
**Catatan:** Event ini *tidak* dipicu untuk penyesuaian yang dibuat melalui pengeditan massal atau impor (misalnya, saat menambahkan atau memperbarui item melalui Excel).
{% endhint %}

<table><thead><tr><th width="207">Bidang</th><th width="100" data-type="checkbox">Wajib</th><th>Deskripsi</th><th data-hidden data-type="checkbox">필수여부</th><th data-hidden>설명</th><th data-hidden>팀모드</th></tr></thead><tbody><tr><td>id</td><td>true</td><td>ID unik transaksi</td><td>true</td><td>히스토리의 고유한 ID</td><td>전체</td></tr><tr><td>type</td><td>true</td><td>Jenis transaksi<br>(in, out, adjust, move)</td><td>true</td><td><p>히스토리의 유형.</p><ul><li>입고 : in</li><li>출고 : out</li><li>조정 : adjust</li><li>이동 : move</li></ul></td><td>전체</td></tr><tr><td>mitra</td><td>false</td><td>Partner</td><td>false</td><td></td><td></td></tr><tr><td>partner.id</td><td>false</td><td>ID unik partner</td><td>false</td><td></td><td></td></tr><tr><td>partner.name</td><td>false</td><td>Nama partner</td><td>false</td><td></td><td></td></tr><tr><td>partner.deleted</td><td>false</td><td>Apakah partner dihapus</td><td>false</td><td></td><td></td></tr><tr><td>from_location</td><td>false</td><td>Lokasi sumber</td><td>false</td><td></td><td></td></tr><tr><td>from_location.id</td><td>false</td><td>ID unik lokasi sumber</td><td>false</td><td></td><td></td></tr><tr><td>from_location.name</td><td>false</td><td>Nama lokasi sumber</td><td>false</td><td></td><td></td></tr><tr><td>from_location.deleted</td><td>false</td><td>Apakah lokasi sumber dihapus</td><td>false</td><td></td><td></td></tr><tr><td>to_location</td><td>true</td><td>Lokasi tujuan</td><td>false</td><td></td><td></td></tr><tr><td>to_location.id</td><td>true</td><td>ID unik lokasi tujuan</td><td>false</td><td></td><td></td></tr><tr><td>to_location.name</td><td>true</td><td>Nama lokasi tujuan</td><td>false</td><td></td><td></td></tr><tr><td>to_location.deleted</td><td>true</td><td>Apakah lokasi tujuan dihapus</td><td>false</td><td></td><td></td></tr><tr><td>items</td><td>true</td><td>Item baris dalam transaksi</td><td>true</td><td>히스토리를 구성하는 제품별 항목</td><td>모든 모드</td></tr><tr><td>items.id</td><td>true</td><td>ID unik item</td><td>true</td><td>제품의 고유 ID</td><td>모든 모드</td></tr><tr><td>items.name</td><td>true</td><td>Nama item</td><td>true</td><td>제품의 이름</td><td>모든 모드</td></tr><tr><td>items.quantity</td><td>true</td><td>Perubahan inventaris akibat stock in/out/adjust/move</td><td>true</td><td>해당 제품의 입고/출고/조정/이동 수량</td><td>모든 모드</td></tr><tr><td>items.deleted</td><td>true</td><td>Apakah item dihapus</td><td>true</td><td>삭제된 제품 여부</td><td></td></tr><tr><td>items.from_location_new_stock_level</td><td>false</td><td>Tingkat stok di lokasi sumber setelah transaksi</td><td>false</td><td></td><td></td></tr><tr><td>items.to_location_new_stock_level</td><td>true</td><td>Tingkat stok di lokasi tujuan setelah transaksi</td><td>false</td><td></td><td></td></tr><tr><td>transaction_time</td><td>true</td><td>Waktu transaksi (mis. waktu stock in/out)</td><td>false</td><td></td><td></td></tr><tr><td>created_at</td><td>true</td><td>Waktu saat transaksi dibuat</td><td>false</td><td></td><td></td></tr><tr><td>created_by</td><td>true</td><td>Anggota yang membuat transaksi</td><td>false</td><td></td><td></td></tr><tr><td>created_by.id</td><td>true</td><td>ID unik anggota</td><td>false</td><td></td><td></td></tr><tr><td>created_by.name</td><td>true</td><td>Nama anggota</td><td>false</td><td></td><td></td></tr><tr><td>created_by.deleted</td><td>true</td><td>Apakah anggota dihapus</td><td>false</td><td></td><td></td></tr><tr><td>count_of_items</td><td>true</td><td>Jumlah item</td><td>false</td><td></td><td></td></tr><tr><td>total_quantity</td><td>true</td><td>Total perubahan inventaris</td><td>false</td><td></td><td></td></tr><tr><td>url</td><td>true</td><td>Alamat URL untuk melihat halaman detail transaksi</td><td>false</td><td></td><td></td></tr><tr><td>memo</td><td>false</td><td>Catatan terkait transaksi</td><td>false</td><td></td><td></td></tr></tbody></table>

#### Contoh Payload Webhook – `Masuk Stok` Event

```json
{
  "id": 16160911,
  "type": "in",
  "to_location": {
    "id": 52766,
    "name": "Warehouse 3",
    "deleted": false
  },
  "items": [
    {
      "id": 14277699,
      "name": "belif Cleansing Gel Oil Enriched",
      "quantity": 2,
      "deleted": false,
      "to_location_new_stock_level": 3
    },
    {
      "id": 14277698,
      "name": "belif Aqua Bomb Jelly Cleanser",
      "quantity": 2,
      "deleted": false,
      "to_location_new_stock_level": 5
    }
  ],
  "transaction_time": "2023-04-25T05:42:27.545Z",
  "created_at": "2023-08-14T05:14:29.499Z",
  "created_by": {
    "id": 201345,
    "name": "corp",
    "deleted": false
  },
  "count_of_items": 2,
  "total_quantity": 4,
  "url": "https://web.boxhero-app.com/team/149058/mode/0#/tx/16160911"
}
```

#### Contoh Payload Webhook – `Pindahkan Stok` Event

<pre class="language-json"><code class="lang-json">{
  "id": 3692714,
  "type": "move",
  "from_location": {
    "id": 52765,
    "name": "Warehouse 2",
    "deleted": false
  },
  "to_location": {
    "id": 52766,
    "name": "Warehouse 3",
<strong>    "deleted": false
</strong>  },
  "items": [
    {
      "id": 14873303,
      "name": "Auto liner 3.5mm",
      "quantity": 1,
      "deleted": false,
      "from_location_new_stock_level": -1,
      "to_location_new_stock_level": 1
    }
  ],
  "transaction_time": "2025-04-25T05:42:27.545Z",
  "created_at": "2025-04-25T05:42:27.545Z",
  "created_by": {
    "id": 176829,
    "name": "Tony Lee",
    "deleted": false
  },
  "count_of_items": 1,
  "total_quantity": 1,
  "url": "https://web.boxhero-app.com/team/150581/mode/2#/ltx/3692714"
}
</code></pre>

### `txs/edit`

Dikirim saat transaksi inventaris yang sudah ada (Stock In / Stock Out / Adjust Stock / Move Stock) **diedit**.

<table><thead><tr><th>Bidang</th><th width="100" data-type="checkbox">Wajib</th><th>Deskripsi</th><th data-hidden data-type="checkbox">필수여부</th><th data-hidden>설명</th><th data-hidden>팀모드</th></tr></thead><tbody><tr><td>id</td><td>true</td><td>ID unik transaksi</td><td>true</td><td>히스토리의 고유한 ID</td><td>전체</td></tr><tr><td>type</td><td>true</td><td>Jenis transaksi<br>(in, out, adjust, move)</td><td>true</td><td><p>히스토리의 유형.</p><ul><li>입고 : in</li><li>출고 : out</li><li>조정 : adjust</li><li>이동 : move</li></ul></td><td>전체</td></tr><tr><td>mitra</td><td>false</td><td>Partner</td><td>false</td><td></td><td></td></tr><tr><td>partner.id</td><td>false</td><td>ID unik partner</td><td>false</td><td></td><td></td></tr><tr><td>partner.name</td><td>false</td><td>Nama partner</td><td>false</td><td></td><td></td></tr><tr><td>partner.deleted</td><td>false</td><td>Apakah partner dihapus</td><td>false</td><td></td><td></td></tr><tr><td>from_location</td><td>false</td><td>Lokasi sumber</td><td>false</td><td></td><td></td></tr><tr><td>from_location.id</td><td>false</td><td>ID unik lokasi sumber</td><td>false</td><td></td><td></td></tr><tr><td>from_location.name</td><td>false</td><td>Nama lokasi sumber</td><td>false</td><td></td><td></td></tr><tr><td>from_location.deleted</td><td>false</td><td>Apakah lokasi sumber dihapus</td><td>false</td><td></td><td></td></tr><tr><td>to_location</td><td>true</td><td>Lokasi tujuan</td><td>false</td><td></td><td></td></tr><tr><td>to_location.id</td><td>true</td><td>ID unik lokasi tujuan</td><td>false</td><td></td><td></td></tr><tr><td>to_location.name</td><td>true</td><td>Nama lokasi tujuan</td><td>false</td><td></td><td></td></tr><tr><td>to_location.deleted</td><td>true</td><td>Apakah lokasi tujuan dihapus</td><td>false</td><td></td><td></td></tr><tr><td>items</td><td>true</td><td>Item baris dalam transaksi</td><td>true</td><td>히스토리를 구성하는 제품별 항목</td><td>모든 모드</td></tr><tr><td>items.id</td><td>true</td><td>ID unik item</td><td>true</td><td>제품의 고유 ID</td><td>모든 모드</td></tr><tr><td>items.name</td><td>true</td><td>Nama item</td><td>true</td><td>제품의 이름</td><td>모든 모드</td></tr><tr><td>items.quantity</td><td>true</td><td>Perubahan kuantitas akibat transaksi (in/out/adjust/move)</td><td>true</td><td>해당 제품의 입고/출고/조정/이동 수량</td><td>모든 모드</td></tr><tr><td>items.deleted</td><td>true</td><td>Apakah item dihapus</td><td>true</td><td>삭제된 제품 여부</td><td></td></tr><tr><td>items.from_location_new_stock_level</td><td>false</td><td>Tingkat stok di lokasi sumber setelah transaksi</td><td>false</td><td></td><td></td></tr><tr><td>items.to_location_new_stock_level</td><td>true</td><td>Tingkat stok di lokasi tujuan setelah transaksi</td><td>false</td><td></td><td></td></tr><tr><td>transaction_time</td><td>true</td><td>Waktu transaksi (mis. waktu stock in/out)</td><td>false</td><td></td><td></td></tr><tr><td>created_at</td><td>true</td><td>Waktu saat transaksi dibuat</td><td>false</td><td></td><td></td></tr><tr><td>created_by</td><td>true</td><td>Anggota yang membuat transaksi</td><td>false</td><td></td><td></td></tr><tr><td>created_by.id</td><td>true</td><td>ID unik anggota</td><td>false</td><td></td><td></td></tr><tr><td>created_by.name</td><td>true</td><td>Nama anggota</td><td>false</td><td></td><td></td></tr><tr><td>created_by.deleted</td><td>true</td><td>Apakah anggota dihapus</td><td>false</td><td></td><td></td></tr><tr><td>count_of_items</td><td>true</td><td>Jumlah item</td><td>false</td><td></td><td></td></tr><tr><td>total_quantity</td><td>true</td><td>Total perubahan inventaris</td><td>false</td><td></td><td></td></tr><tr><td>url</td><td>true</td><td>Alamat URL untuk melihat halaman detail transaksi</td><td>false</td><td></td><td></td></tr><tr><td>memo</td><td>false</td><td>Catatan terkait transaksi</td><td>false</td><td></td><td></td></tr><tr><td>revision</td><td>true</td><td>Nomor versi transaksi saat ini, dimulai dari 1</td><td>false</td><td></td><td></td></tr></tbody></table>

#### Contoh Payload Webhook – Diedit `Masuk Stok` Transaksi

```json
{
  "id": 16160911,
  "type": "in",
  "to_location": {
    "id": 52766,
    "name": "Warehouse 3",
    "deleted": false
  },
  "items": [
    {
      "id": 14277699,
      "name": "belif Cleansing Gel Oil Enriched",
      "quantity": 2,
      "deleted": false,
      "to_location_new_stock_level": 3
    },
    {
      "id": 14277698,
      "name": "belif Aqua Bomb Jelly Cleanser",
      "quantity": 2,
      "deleted": false,
      "to_location_new_stock_level": 5
    }
  ],
  "transaction_time": "2023-04-25T05:42:27.545Z",
  "created_at": "2023-08-14T05:14:29.499Z",
  "created_by": {
    "id": 201345,
    "name": "corp",
    "deleted": false
  },
  "count_of_items": 2,
  "total_quantity": 4,
  "url": "https://web.boxhero-app.com/team/149058/mode/0#/tx/16160911"
}

```

#### Contoh Payload Webhook – Diedit `Pindahkan Stok` Transaksi

```json
{
  "id": 3692714,
  "type": "move",
  "from_location": {
    "id": 52765,
    "name": "Warehouse 2",
    "deleted": false
  },
  "to_location": {
    "id": 52766,
    "name": "Warehouse 3",
    "deleted": false
  },
  "items": [
    {
      "id": 14873303,
      "name": "Auto liner 3.5mm",
      "quantity": 1,
      "deleted": false,
      "from_location_new_stock_level": -1,
      "to_location_new_stock_level": 1
    }
  ],
  "transaction_time": "2023-04-25T05:42:27.545Z",
  "created_at": "2023-04-25T05:42:27.545Z",
  "created_by": {
    "id": 176829,
    "name": "Joy Kim",
    "deleted": false
  },
  "count_of_items": 1,
  "total_quantity": 1,
  "url": "https://web.boxhero-app.com/team/150581/mode/2#/ltx/3692714"
}

```

### `txs/delete`

Dikirim saat transaksi inventaris **dihapus**.

| Bidang   | Deskripsi                                      |
| -------- | ---------------------------------------------- |
| id       | ID unik transaksi                              |
| revision | Nomor versi transaksi saat ini, dimulai dari 1 |

#### Contoh Payload Webhook – Transaksi Dihapus

```json
/{
  "id": 27036740,
  "revision": 2
}
```

### `item/new`

Dikirim saat item baru ditambahkan ke inventaris tim.

{% hint style="warning" %}
**Catatan**: Event ini *tidak* dipicu saat menggunakan fitur <mark style="color:biru;">**`Add Item Variants`**</mark> atau saat mengimpor item melalui <mark style="color:biru;">**`Import Excel`**</mark>.
{% endhint %}

<table><thead><tr><th width="318">Bidang</th><th>Deskripsi</th><th data-hidden data-type="checkbox">필수여부</th><th data-hidden>설명</th><th data-hidden>팀모드</th></tr></thead><tbody><tr><td>id</td><td>ID Item</td><td>true</td><td>히스토리의 고유한 ID</td><td>전체</td></tr><tr><td>name</td><td>Nama Item</td><td>true</td><td><p>히스토리의 유형.</p><ul><li>입고 : in</li><li>출고 : out</li><li>조정 : adjust</li><li>이동 : move</li></ul></td><td>전체</td></tr><tr><td>sku</td><td>SKU</td><td>false</td><td></td><td></td></tr><tr><td>barcode</td><td>Barcode</td><td>false</td><td></td><td></td></tr><tr><td>photo_url</td><td>URL Foto</td><td>false</td><td></td><td></td></tr><tr><td>cost</td><td>Biaya</td><td>false</td><td></td><td></td></tr><tr><td>price</td><td>Harga</td><td>false</td><td></td><td></td></tr><tr><td>attrs</td><td>Atribut</td><td>false</td><td></td><td></td></tr></tbody></table>

#### **Contoh Payload – Item Dibuat**

```json
{
  "id": 26122826,
  "name": "belif Peat Miracle Revital Cream",
  "sku": "SKU-YH2361KI",
  "barcode": "2002074321218",
  "photo_url": "https://d3l9wd8kivvlqy.cloudfront.net/ap-northeast-2/image-up-ap-northeast-2/30b0cc84-601d-493d-87fd-b7e8b5825601",
  "cost": "50000",
  "price": "65000",
  "attrs": [
    {
      "id": 413101,
      "name": "Category",
      "type": "text",
      "value": "Foundation"
    },
    {
      "id": 459264,
      "name": "Expiration date",
      "type": "date",
      "value": "2027-08-07"
    },
    {
      "id": 668272,
      "name": "Safety Stock",
      "type": "number",
      "value": 33
    }
  ]
}
```

### `item/edit`

Dikirim saat item yang sudah ada diedit.

{% hint style="warning" %}
**Catatan**: Event ini *tidak* dipicu *f*or bulk edits made through <mark style="color:biru;">**`Pusat Data`**</mark>**&#x20;>&#x20;**<mark style="color:biru;">**`Item`**</mark> or via the <mark style="color:biru;">**`Import Excel`**</mark> function.
{% endhint %}

<table><thead><tr><th width="318">Bidang</th><th>Deskripsi</th><th data-hidden data-type="checkbox">필수여부</th><th data-hidden>설명</th><th data-hidden>팀모드</th></tr></thead><tbody><tr><td>id</td><td>ID Item</td><td>true</td><td>히스토리의 고유한 ID</td><td>전체</td></tr><tr><td>name</td><td>Nama Item</td><td>true</td><td><p>히스토리의 유형.</p><ul><li>입고 : in</li><li>출고 : out</li><li>조정 : adjust</li><li>이동 : move</li></ul></td><td>전체</td></tr><tr><td>sku</td><td>SKU</td><td>false</td><td></td><td></td></tr><tr><td>barcode</td><td>Barcode</td><td>false</td><td></td><td></td></tr><tr><td>photo_url</td><td>URL Foto</td><td>false</td><td></td><td></td></tr><tr><td>cost</td><td>Biaya</td><td>false</td><td></td><td></td></tr><tr><td>price</td><td>Harga</td><td>false</td><td></td><td></td></tr><tr><td>attrs</td><td>Atribut</td><td>false</td><td></td><td></td></tr></tbody></table>

#### **Contoh Payload – Item Diperbarui**

```json
{
  "id": 26122826,
  "name": "belif Peat Miracle Revital Cream",
  "sku": "SKU-YH2361KI",
  "barcode": "2002074321218",
  "photo_url": "https://d3l9wd8kivvlqy.cloudfront.net/ap-northeast-2/image-up-ap-northeast-2/30b0cc84-601d-493d-87fd-b7e8b5825601",
  "cost": "50000",
  "price": "65000",
  "attrs": [
    {
      "id": 413101,
      "name": "Category",
      "type": "text",
      "value": "Foundation"
    },
    {
      "id": 459264,
      "name": "Expiration date",
      "type": "date",
      "value": "2027-08-07"
    },
    {
      "id": 668272,
      "name": "Safety Stock",
      "type": "number",
      "value": 33
    }
  ]
}
```

### `item/delete`

Dikirim saat item dihapus dari inventaris tim.

{% hint style="warning" %}
**Catatan**: Event ini *tidak* dipicu untuk penghapusan massal yang dilakukan melalui <mark style="color:biru;">**`Pusat Data`**</mark>**&#x20;>&#x20;**<mark style="color:biru;">**`Item`**</mark>.
{% endhint %}

<table><thead><tr><th width="318">Bidang</th><th>Deskripsi</th><th data-hidden data-type="checkbox">필수여부</th><th data-hidden>설명</th><th data-hidden>팀모드</th></tr></thead><tbody><tr><td>id</td><td>ID Item</td><td>true</td><td>히스토리의 고유한 ID</td><td>전체</td></tr></tbody></table>

#### Contoh Payload **– Item Dihapus**

```json
{
  "id": 26122826
}
```


---

# Agent Instructions: 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:

```
GET https://www.boxhero.io/docs/documentation/id/integrasi/open-api/webhook.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
