Webhook for parcel updates

POST https://webhook.example.com

Webhook to push parcel updates to any URL provided by the carrier. This endpoint allows carriers to receive real-time updates about parcels.

application/json

Body

Information about parcel updates

  • The unique identifier of the parcel shipment in the GLS/NXT Platform

  • The unique identifier of the locker in the GLS/NXT Platform

  • The identifier of the parcel in the carrier's system

  • carrierLockerId string | null

    The identifier of the locker in the carrier's system

  • The type of shipment.

    Values are LAST_MILE, ALTERNATIVE_DELIVERY, FIRST_MILE, or RETURN.

  • The status of the parcel dimensions.

    Values are PARCEL_DIMENSIONS_EXCEED, PARCEL_DIMENSIONS_OK, or PARCEL_DIMENSIONS_UNKNOWN.

  • The status of the shipment.

    Values are BOOKING_PRE_CHECK, BOOKING_REQUESTED, BOOKING_CREATED, BOOKING_CANCELLED, BOOKING_REJECTED_INVALID_LOCKER, BOOKING_REJECTED_PROVIDER_ERROR, BOOKING_REJECTED_LOCKER_UNAVAILABLE, BOOKING_REJECTED_DIMENSIONS_EXCEED, BOOKING_REJECTED_INVALID_CONSIGNEE, COURIER_DELIVERED, COURIER_DELIVERY_EXPIRED, COURIER_DELIVERY_LABEL_SCANNED, COURIER_COLLECTED, COURIER_COLLECTED_EXPIRED, COURIER_COLLECTION_LABEL_SCANNED, COURIER_COLLECTION_LABEL_NOT_AVAILABLE, CONSIGNEE_COLLECTED, CONSIGNEE_DELIVERED, CONSIGNEE_DELIVERY_EXPIRED, CONSIGNEE_COLLECTION_EXPIRED, DELIVERY_PARCEL_TOO_BIG, DELIVERY_COMPARTMENT_BROKEN, DELIVERY_COMPARTMENT_OCCUPIED, DELIVERY_NOT_POSSIBLE, COLLECTION_PARCEL_NOT_AVAILABLE, COLLECTION_COMPARTMENT_BROKEN, or COLLECTION_NOT_POSSIBLE.

  • accessCodes object | null

    Access codes for the parcel

    Hide accessCodes attributes Show accessCodes attributes object | null
  • consignee object | null

    The details of the consignee.

    Hide consignee attributes Show consignee attributes object | null
  • events array[object]
    Hide events attributes Show events attributes object
    • timestamp string(date-time)
    • The status of the shipment.

      Values are BOOKING_PRE_CHECK, BOOKING_REQUESTED, BOOKING_CREATED, BOOKING_CANCELLED, BOOKING_REJECTED_INVALID_LOCKER, BOOKING_REJECTED_PROVIDER_ERROR, BOOKING_REJECTED_LOCKER_UNAVAILABLE, BOOKING_REJECTED_DIMENSIONS_EXCEED, BOOKING_REJECTED_INVALID_CONSIGNEE, COURIER_DELIVERED, COURIER_DELIVERY_EXPIRED, COURIER_DELIVERY_LABEL_SCANNED, COURIER_COLLECTED, COURIER_COLLECTED_EXPIRED, COURIER_COLLECTION_LABEL_SCANNED, COURIER_COLLECTION_LABEL_NOT_AVAILABLE, CONSIGNEE_COLLECTED, CONSIGNEE_DELIVERED, CONSIGNEE_DELIVERY_EXPIRED, CONSIGNEE_COLLECTION_EXPIRED, DELIVERY_PARCEL_TOO_BIG, DELIVERY_COMPARTMENT_BROKEN, DELIVERY_COMPARTMENT_OCCUPIED, DELIVERY_NOT_POSSIBLE, COLLECTION_PARCEL_NOT_AVAILABLE, COLLECTION_COMPARTMENT_BROKEN, or COLLECTION_NOT_POSSIBLE.

  • The allocation type of the shipment.

    Values are HARD_RESERVATION or SOFT_RESERVATION.

  • eventTimestamp string(date-time)

    The timestamp of the parcel update

Responses

  • Return a 200 status to indicate that the data was received successfully.

  • Return a 401 status to indicate that the POST was unauthorized.

  • Return a 500 status to indicate that the POST was unsuccessfully processed.

POST ParcelUpdates
Request examples
{
  "shipmentUid": "anyParcelId123",
  "lockerUid": "anyLockerId123",
  "carrierParcelId": "anyCarrierParcelId123",
  "carrierLockerId": "Locker1",
  "shipmentType": "LAST_MILE",
  "dimensionsStatus": "PARCEL_DIMENSIONS_OK",
  "shipmentStatus": "BOOKING_PRE_CHECK",
  "accessCodes": {
    "consigneeCollection": "anyValidCode123",
    "consigneeCollectionCode": {
      "code": "anyValidCode123",
      "validUntil": "2025-01-27T12:00:00Z"
    }
  },
  "consignee": {
    "name": "John Doe",
    "email": "john.doe@google.com"
  },
  "events": [
    {
      "timestamp": "2025-08-20T00:00:00Z",
      "eventType": "BOOKING_PRE_CHECK"
    }
  ],
  "allocationType": "HARD_RESERVATION",
  "eventTimestamp": "2025-08-20T00:00:00Z"
}