Shipper · AsyncAPI Specification
Shipper Webhooks
Version
View Spec
View on GitHub
CompanyLogisticsShippingFulfillmentSupply ChainE-commerceLast Mile DeliveryCourierIndonesiaAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-07-21'
method: searched
source: https://logistics-docs.shipper.id/docs/webhook
type: Webhooks
docs:
- https://logistics-docs.shipper.id/docs/webhook
- https://logistics-docs.shipper.id/docs/set-webhook-url
- https://logistics-docs.shipper.id/docs/payload
- https://logistics-docs.shipper.id/docs/shipper-external-status
summary: >-
Shipper Webhook is a push engine that sends real-time delivery-status updates
for a merchant's orders to a merchant-provided endpoint. The merchant exposes
a stateless, publicly reachable HTTPS endpoint and registers it in the
dashboard (Menu API > Set Webhook, type JSON). Shipper POSTs a JSON payload on
each status change; no response body is required.
transport:
method: POST
content_type: application/json
delivery: at-status-change (server-to-client push)
configuration: Dashboard > Menu API > Set Webhook
auth: >-
Payload carries an `auth` field (md5 hash) identifying the callback origin so
the receiver can verify the request came from Shipper.
events:
- name: shipment.status_update
description: Fired when the delivery status of an order changes.
payload_fields:
- {field: auth, description: md5 hash identifying the webhook callback origin}
- {field: order_id, description: Internal object identifier generated by Shipper}
- {field: tracking_id, description: Shipper Order ID assigned to the shipment}
- {field: external_id, description: Custom identifier provided by the merchant at order creation}
- {field: status_date, description: ISO 8601 timestamp of the status update}
- {field: internal, description: Internal status object (id, name, description) for Shipper team use}
- {field: external, description: Logistic status object mirroring courier info for end-user display (maps to logistic_status)}
- {field: internal_status, description: Shipper validation status (code, name, description)}
- {field: external_status, description: External status code for display to the buyer (maps to shipper_status)}
- {field: awb, description: Air waybill / tracking number from the 3PL partner; present once generated}
status_codes:
field: external_status
reference: https://logistics-docs.shipper.id/docs/shipper-external-status
note: >-
Numeric Shipper status codes carried on external_status / shipper_status.
FINAL states are terminal.
values:
- {code: 999, status: 'Cancelled by [actor_name]', final: true}
- {code: 1000, status: 'Paket sedang dipersiapkan'}
- {code: 1001, status: 'Penjemputan Diajukan'}
- {code: 1010, status: 'Tunggu Penjemputan'}
- {code: 1020, status: 'Sedang Dijemput'}
- {code: 1030, status: 'Proses Penjemputan'}
- {code: 1040, status: 'Paket Siap Dikirim'}
- {code: 1050, status: 'Sampai di HUB'}
- {code: 1060, status: 'Sortir Barang'}
- {code: 1160, status: 'Paket Dikirim ke [3PL_Name]'}
- {code: 1170, status: 'Paket Diterima oleh [3PL_Name]'}
- {code: 1180, status: 'Paket Dalam Perjalanan Bersama [3PL_Name]'}
- {code: 1190, status: 'Paket Sampai Ke Kota Tujuan'}
- {code: 1310, status: 'Salah Alamat Tujuan'}
- {code: 1320, status: 'Antar Ulang'}
- {code: 1330, status: 'Tidak Ada Penerima'}
- {code: 1340, status: 'Paket Dikembalikan'}
- {code: 1370, status: 'Gagal Kirim', final: true}
- {code: 1380, status: 'Paket Hilang & Rusak di 3PL', final: true}
- {code: 1410, status: 'Retur Dalam Perjalanan'}
- {code: 1420, status: 'Retur Sampai ke Kota Pengirim'}
- {code: 2000, status: 'Paket Terkirim', final: true}