Shipper · AsyncAPI Specification

Shipper Webhooks

Version

View Spec View on GitHub CompanyLogisticsShippingFulfillmentSupply ChainE-commerceLast Mile DeliveryCourierIndonesiaAsyncAPIWebhooksEvents

AsyncAPI Specification

shipper-webhooks.yml Raw ↑
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}