Manage Shipment Stops
Project44 allows you to provide your own stops (such as ORIGIN
and DESTINATION
) giving you control over how your shipment is rendered and where tracking should start and end. This is especially useful for reconciliation, reporting, and ensuring consistency across your systems.
Prerequisites
Before managing shipment locations, ensure you have the following:
- Authentication: Set up proper authentication to access project44's APIs.
- Stop Data: The location details (address, type, etc.) you want to associate with the shipment.
ORIGIN
and DESTINATION
. Adding Stops During Shipment Creation
You can include custom stops when you first create a shipment. Simply add the stops
array to your shipment creation request payload. While stop IDs are not required at creation, it is highly advisable to provide deterministic stop IDs ( e.g., all 1's for ORIGIN, all 2's for DESTINATION) to make future updates to stops easier and more reliable.
Example:
{ "identifiers": [ { "type": "BILL_OF_LADING", "value": "BOL123456" }, { "type": "CARRIER_SCAC", "value": "ABCD" } ], "stops": [ { "id": "11111111-1111-1111-1111-111111111111", "type": "ORIGIN", "location": { "address": { "street": "123 Main St", "city": "Chicago", "state": "IL", "postalCode": "60601", "country": "US" } } }, { "id": "22222222-2222-2222-2222-222222222222", "type": "DESTINATION", "location": { "address": { "street": "456 Market St", "city": "San Francisco", "state": "CA", "postalCode": "94105", "country": "US" } } } ] }
Send this payload in a POST
request to /api/v4/shipments/tracking.
Updating Stop Locations on an Existing Shipment (Partial Update)
To add or update stops for a shipment that already exists, use the POST
method. This will update the shipment with the new or modified stops. You must include the shipment's id
or sufficient identifiers to uniquely identify the shipment. If you provided deterministic stop IDs at creation, use the same IDs to update the corresponding stops.
Example:
{ "id": "<previously returned project44 master shipment UUID>", "identifiers": [ { "type": "BILL_OF_LADING", "value": "BOL123456" }, { "type": "CARRIER_SCAC", "value": "ABCD" } ], "stops": [ { "id": "11111111-1111-1111-1111-111111111111", "type": "ORIGIN", "location": { "address": { "street": "789 New St", "city": "Chicago", "state": "IL", "postalCode": "60602", "country": "US" } } } ] }
Send this payload in a POST
request to /api/v4/shipments/tracking.
Updating Stops Using PUT (Full Replace)
You can also update stops on an existing shipment using the PUT
endpoint. Be aware that this method will fully replace all customer-provided data for the shipment—not just the stops. This means any attributes, events, or identifiers you previously provided will also be overwritten by the new payload. When using PUT
, stop IDs are not required, but if you omit them, new IDs will be generated and you may lose the ability to reference or update those stops deterministically in the future.
Example:
{ "id": "<previously returned project44 master shipment UUID>", "identifiers": [ { "type": "BILL_OF_LADING", "value": "BOL123456" }, { "type": "CARRIER_SCAC", "value": "ABCD" } ], "stops": [ { "type": "ORIGIN", "location": { "address": { "street": "123 Main St", "city": "Chicago", "state": "IL", "postalCode": "60601", "country": "US" } } }, { "type": "DESTINATION", "location": { "address": { "street": "456 Market St", "city": "San Francisco", "state": "CA", "postalCode": "94105", "country": "US" } } } ] }
Send this payload in a PUT
request to /api/v4/shipments/tracking.
PUT
method on /api/v4/shipments/tracking
will override all customer-provided data for the shipment, including stops, attributes, events, and identifiers. Only use this method if you intend to fully replace the shipment's data.