Container Tracking
Containers can be associated with Loads and tracked with the Project44 Unified Tracking integration.
Container tracking is independent of Load tracking. Track containers from Port of Loading to Port of Discharge with Project44 Unified Tracking and Port to the Consignee destination with any of the following tracking integrations.
Project44 provides “push” status updates to the TMS via a Sites-based web service. Inbound container Load status packets are processed as Platform Events. Starting or stopping Project44 Unified Container tracking sends outbound requests that are processed by the QueuedTransactionJob.
Setup
The following sections for Entering Credentials, creating Remote Site Settings, and configuring an Experience Cloud Site are identical to the Project44 Truckload Tracking setup. Skip these setup steps if they were already completed for truckload tracking with Project44.
Enter Credentials
Enable the Project44 integration by completing the following steps.
Navigate to TMS Admin.
Choose Credentials.
Select the Global Services tab.
Find Project44 Tracking in the list and open the card.
Check the Enabled and Receive Updates boxes.
Enter the User ID and Password 1 into the text fields.
Click the Save button when finished.
Valid credentials are required from a Project44 Tracking subscription.
User ID | Password 1 | Password 2 | Customer Number |
|---|---|---|---|
Username in email address format | Required |
Remote Site Settings
In order to process inbound packets from Project44, Salesforce requires Remote Sites to receive data. Create and/or confirm the Remote Sites are configured correctly the Project44 integration URL are up to date.
There are TWO remote site settings required. One for the API and one for the BOL document URL. The Test URL is only required when the Test Mode field is Checked on the credential card. This likely is only required in a sandbox.
Click the Setup gear icon in the top right corner.
From the drop-down, click Setup.
In the Quick Find Toolbar type Remote Site Settings and click the link.
From the list of remote sites find Project44 and click the Edit link.
Update the Remote Site URLs to match the following.
Project44 (Service URL): https://na12.api.project44.com
Project44 BOL (BOL Document URL): https://s3-us-west-2.amazonaws.com
Project44 Test (Test URL): https://na12.api.sandbox.p-44.com
Experience Cloud Site Setup
Project44 relies on a “push” approach to event processing and requires a webhook to send information to the TMS. Create an Experience Cloud API Site to accept inbound API traffic.
Create a Salesforce Site for API Guest User Access.
Set the public access for the Site.
Activate and Publish the Site.
Enter the API URL into the field for Inbound API Community URL under TMS Admin, in the Configuration section.
Add the following extension to the end of the URL to match the example below: /services/apexrest/rtms/tmslistener?org=00D180000008oA9EAI&source=Project44Tracking&pwd=4wGFDgnT950Ovg1
Send the post-back URL, the customer company name, and contact info to support.americas@project44.com.
{API Experience Cloud Site URL} /services/apexrest/rtms/tmslistener?org={18-character org id}&source=Project44Tracking&pwd={credentials code field}
Example: https://revenova.my.site.com/api/services/apexrest/rtms/tmslistener?org=00D180000008oA9EAI&source=Project44Tracking&pwd=4wGFDgnT950Ovg1
The Salesforce-generated API Experience Cloud Site URL is case sensitive.
Note: Once Project44 has the post-back URL, company name, and contact information, the listener URL is created automatically via the API when tracking is initiated. The webhook 'configName' for tracking is: "unified-" + 18-character org ID
Additional Setup
Confirm that field history tracking is enabled for the Container object.
Enable Container information on the Load Configuration Lightning Web Component by Mode.
Navigate to TMS Admin → Modes.
Select the appropriate Mode type for containers.
Check the Show Containers on Load Creation field.
Click Save.
Repeat the steps above for each Mode type as necessary.
Confirm that tracking event packets are processed as platform events.
Navigate to TMS Admin → Configuration.
Find the Platform Events section.
Check the Project44 Unified Tracking field.
Click Save.
Accounts
Create Account records for each Port or Terminal that containers move through. The Container Port/Terminal of Load and Port/Terminal of Discharge fields contain the associated Account information when moving containers through the ports. Each Account must have the following information to process container tracking.
Set TMS Type to Seaport. The Seaport TMS Type refers to the generic seaport.
The Seaport Terminal TMS Type refers to specific locations within the seaport that Drayage drivers are directed to.
Enter a Timezone or run Fleet Management Job 1 to add the Timezone values to new Account records. Seaport Accounts without a Timezone do not process dates for Event payloads.
Enter the UN Location Code value. Commonly used port locations may be found here. For the full list of codes, view the UN site reference.
Notes:
Project44 does not include time zone information in the event packets. To ensure that event date and time values are displayed correctly in the local time of the event location, the TMS determines the appropriate time zone by matching the Port/Terminal of Load and Port/Terminal of Discharge to the corresponding Account records. The Account’s Timezone field is used to convert and display event timestamps accurately.
Container Status Events do not process for Ports of Load or Discharge without a matching Account with the appropriate UN Location Code.
The Project44 Container tracking integration supports multiple stops for the same Account location.
Field Sets
Two field sets on the Container object control available fields when performing actions with containers. Add fields to the following field sets as required.
Container TMS1
Add fields to make them available on the Container Lightning Web Component when creating Loads.
Container TMS2
Add fields to include Container information on the following .PDF documents.
Carrier Rate and Load Confirmation
Carrier RFQ
Customer Rate and Load Confirmation
Driver Load Confirmation
Create Mode-specific field sets as necessary for further customization. For example, TMS1_Drayage.
Objects and Tabs
Container information is managed with the Container and Container Console Configuration objects. Provide the appropriate user CRUD access for those managing container tracking. The TMS includes a packaged Container list view and Containers tab.
Add the Containers related list to the Load Lightning Record Page with a Mode-based visibility filter to view container information on relevant Loads.
Load Map
The Load Map displays container locations and breadcrumb tracking updates received from Project44. Click the Show Container Map button to display container locations.

Confirm that history tracking is enabled for the Container object as this is required to view container tracking on the Load Map.
The Container Geolocation and Geolocation as of fields must have a value to display the Show Container Map button and display the container locations.
Begin a Tracking Session
Container Tracking is independent of Load tracking. For example, track the container via Project44 from the Port of Hong Kong to the Port of Long Beach. Then track the Drayage Load from the Port of Long Beach to the destination/consignee using MacroPoint.
For best results, include the Container Number when beginning a tracking session with Project44.
Set the Container Tracking field to On to begin the tracking session for a container.
When a tracking session is started with Project44, the request is processed by the Queued Transaction job. Confirm that the job is running before attempting to begin a tracking session.
Container tracking information is populated by tracking event status packets. The following fields are updated with information from tracking packets. See Container field mapping information below for specific field update logic.
Actual Container Dates & Times
Estimated Container Dates & Times
Status Updates
The following fields are NOT updated by Project44 Unified Tracking and should be entered manually.
Earliest Pickup Date & Time
Earliest Return Date Demurrage & Time
Terminal Cutoff Date & Time
Last Free Date & Time
Integration Calls
Revenova calls the following Project44 endpoints to manage container tracking sessions.
Create Unified Webhook
The Create Unified Webhook endpoint is called when a container tracking session is started with Project44. Calls to this endpoint send authentication and listener URL information from the TMS to verify org credentials.
This endpoint is called automatically when a container tracking session is started.
TMS Operation | Project44 Endpoint | Request Type | Response |
|---|---|---|---|
Start a container tracking session. | Create or update a push configuration. | PUT | 200: OK 400: Invalid Request 401: Invalid or Missing Credentials 403: Unauthorized User |
No TMS fields are updated as a result of this call.
Delete Unified Webhook
The Delete Unified Webhook endpoint is called when a container tracking session is ended with Project44. Calls to this endpoint delete the webhook information in the Project44 system.
This endpoint is called automatically when a container tracking session is ended.
TMS Operation | Project44 Endpoint | Request Type | Response |
|---|---|---|---|
End a container tracking session. | Delete a push configuration. | DELETE | 200: OK 400: Invalid Request 401: Invalid or Missing Credentials 403: Unauthorized User |
No TMS fields are updated as a result of this call.
Start Container Tracking
The Project44 endpoint to begin a container tracking session is called when the Container Tracking field value is set to On.
The TMS sends multiple identifying field values to Project44 to identify the container to track. The Container SCAC field value is always included in the request to begin tracking.
One of the following three Container field values is also included in the request. Fields are checked to determine if they contain a valid tracking value that may be sent to Project44. A valid Container Number must be 11 digits. The TMS selects the first available field and valid field values in the following preferred order.
Container Number
Master Bill of Lading Number
Booking Number
A Tracking session may be started for a container that has the same Master Bill of Lading Number field value as another container. Project44 uses the same Tracking Number/ id value for both containers.
If for some reason there is a value in the Tracking Number field, that value is overwritten by the value returned from Project44 when the tracking session is started. This scenario is not common.
TMS Operation | Project44 Endpoint | Request Type | Response |
|---|---|---|---|
Container Tracking field set to On | shipment/tracking | POST | 200: OK 400: Bad Request 404: Not Found 409: Conflict |
Possible TMS fields included in the Start Container Tracking request.
Object | Field | Type | Project44 Field |
|---|---|---|---|
Container | Booking Number | Formula (Text) | identifiers → value, identifiers → type is |
Container | Container Number | Text(80) | identifiers → value, identifiers → type is |
Container | Master Bill of Lading Number | Formula (Text) | identifiers → value, identifiers → type is |
Container | SCAC | Text(6) | identifiers → value, identifiers → type is |
Sample Start Container Tracking request payload
{
"identifiers" : [ {
"type" : "CARRIER_SCAC",
"value" : "TRHU"
}, {
"type" : "CONTAINER_ID",
"value" : "TRHU7493516"
} ]
}Sample Start Container Tracking response payload
{
"id": "26a532ac-7604-421d-8edf-f1117aafd5f8",
"createdDateTime": "2026-04-02T14:01:50+0000",
"identifiers": [
{
"type": "CONTAINER_ID",
"value": "TRHU7493516"
},
{
"type": "CARRIER_SCAC",
"value": "TRHU"
}
],
"shipmentShareLink": "https://na12.voc.project44.com/portal/v2/public/ma/tracking-details?shipmentShareToken=8e411443-d526-4538-9c28-41413a00bcca",
"lastModifiedDateTime": "2026-04-02T14:01:51+0000"
}TMS Field Updates
Object | Field | Type | Project44 Field |
|---|---|---|---|
Container | Tracking Number | Text(40) (External ID) | shipment → |
Container | Tracking Provider | Text(40) | set to Project44 Tracking by the TMS |
See Project44 Unified Shipment Tracking information here.
Stop Container Tracking
Container tracking sessions are ended by calling the Project44 shipment tracking endpoint. Set the Container Tracking field value to Off to end an active tracking session. Container tracking sessions are also ended when certain Status Events are received from Project44.
TMS Operation | Project44 Endpoint | Request Type | Response |
|---|---|---|---|
| shipment/tracking | DELETE | 202: Accepted 400: Missing or invalid user context headers. 404: Not Found |
Packets that contain multiple Tracking Events, including one that ends a tracking session, additionally process and save any applicable container field changes.
When a container tracking session is ended successfully, no payload is returned from Project44. A successful HTTP 202 response is received. Project44 returns any errors with an HTTP error code.
TMS Field Updates
Object | Field | Type | Project44 Field |
|---|---|---|---|
Container | Tracking Number | Text(40) (External ID) | set to no value by the TMS |
Container | Tracking Provider | Text(40) | set to no value by the TMS |
Tracking Updates (Push into Revenova)
Project44 sends tracking event packets with container milestone updates as “events.” These events update the Container Status field on the record.
Multiple events may arrive and process from a single tracking event packet from Project44. A tracking event packet contains a single Tracking Number/Tracking ID.
The last event chronologically is set as the Status field value. All applicable date fields are processed and added to the container record. Tracking status events are listed for reference here.
Note: Container Status Events do not process for Ports of Load or Discharge without a matching Account with the appropriate UN Location Code.
Containers with the Tracking field value Off are filtered out of matching and do not receive updates.
Container Matching
Events for several containers may be included in a single tracking event packet. Containers are matched to the events in the packet based on the following logic.
First Level Matching
The shipment
idfield is matched to the Container Tracking Number field.If one or more containers are found, they are used as the initial set of matched containers for further processing. If no containers match by the Tracking Number, the TMS proceeds to the next level of matching.
Only one shipment
idfield value is included in each tracking event packet.
Second Level Matching
The
CONTAINER_IDpacket field is matched to the Container Number field.If a
CONTAINER_IDis provided, the TMS attempts to match it to a single active container based on the following criteria.If exactly one match is found, the container is used for processing.
If more than one or no containers match, the packet is not processed and one of the following errors is returned.
“Could not process container tracking update: More than one active container has the same Container Number: {container number}”
“Could not process container tracking update: No active container could be found with the following Container Number: {container number}”
The
BILL_OF_LADINGpacket field is matched to the Container Master Bill of Lading field.If one or more containers are found, they are included in the set of matched containers for further processing.
If no
BILL_OF_LADINGis included in the tracking packet, containers are searched again in step 4.
The
BOOKING_NUMBERpacket field is matched to the Container Booking Number field.If one or more containers are found, they are included in the set of matched containers for further processing.
If no containers match by the Booking Number, the packet is not processed. The error below is displayed to the user.
“Could not process container tracking update: No active containers matched the following identifiers: trackingNumber: {trackingNumber},
containerNumber: {containerNumber}, bolNumber: {bolNumber}, bookingNumber: {bookingNumber}”No additional attempts are made to match containers to events in the tracking packet.
Third Level Matching
Third level matching only occurs when multiple containers in a tracking packet match on the first or second level above. This matching is used to associate specific updates (stops, positions, and events) to the appropriate container(s) when multiple potential matches exist or when a container cannot be uniquely identified from previous matching steps.
Route Segments/Stops
Stop updates are associated with a TMS Container Number when the Shipment Route Info
stops.id(s) match(es) the combined Route SegmentfromStopId(s) andtoStopId(s) in the tracking packet.If a matching route segment is found and contains a single
CONTAINER_ID, that container is used for the update.If no route segment is matched, the error below is displayed to the user.
“Could not process container tracking update: No route segments could be found for stop: {stop json}”
If multiple
CONTAINER_IDvalues are associated with the matching route segments, the TMS may not be able to uniquely determine a container. In this case, the update is skipped or applied to all matched containers, and a debug log may be recorded.
“Could not process container tracking update: More than one container id matched for stop: {stop json}”
Route Segments/Positions
Position updates are associated with a TMS Container Number when the Position
routeSegmentId(s) match(es) the Shipment Route InforouteSegments.id(s) in the tracking packet.If a single container is identified from the route segment, it is used for the update.
If not, the TMS attempts to apply the update to all previously matched containers.
Actual Dates, Estimated Dates, & Scheduled Dates
Date and Time updates are associated with containers based on event data using the following criteria.
The
typevalue isACTUAL(for actual events),ESTIMATED(for estimated events), orPLANNED(for scheduled events).The
selectedvalue istrue.The Source Identifiers
typeis theCONTAINER_ID.
The TMS attempts to identify a container using the
CONTAINER_IDcontained in the event. If successfully matched, the update is applied to that container.
If multiple container identifiers are present, updates may be applied to multiple containers.
If a container cannot be identified for a specific date/time entry, that portion of the event may be skipped.
The following JSON example contains an Actual Date/Time update from a Project44 push notification.
{
"dateTime": "2025-12-17T13:48:00+0000",
"receivedDateTime": "2026-03-03T19:47:00+0000",
"id": "cc9a1335-479b-4bf5-b2a0-16e140bc2f8b",
"type": "GATE_OUT_EMPTY",
"stopId": "71d8437b-2f56-3872-9156-ea0afaa2a38a",
"routeSegmentId": "2a68be91-ad85-348c-945c-ada0b18f734f",
"dateTimes": [
{
"type": "ACTUAL",
"dateTime": "2025-12-17T13:48:00+0000",
"lastModifiedDateTime": "2026-03-03T19:47:00+0000",
"source": "CARRIER",
"sourceIdentifiers": [
{
"type": "CARRIER_SCAC",
"value": "MSCU"
},
{
"type": "CONTAINER_ID",
"value": "FCIU5942443"
}
],
"selected": true,
"sequence": 1
}
],
"details": {
"ocean": {
"code": "GATE_OUT_EMPTY_CONTAINER_AT_TERMINAL"
}
}
}Note: Identifiers for
Actual,Planned, orEstimatedevents are used to associate events with container records. The TMS processes events on a best-effort basis. Events that are matched to a container are processed while events that cannot be matched may be skipped. The presence of unmatched events does not prevent other valid updates in the tracking packet from processing.
Container Field Updates
Container fields are populated with values from the tracking event packet based on the matching above. In many cases, field values are only updated when specific matching criteria is met.
The following Container fields that do not contain a value are populated accordingly.
The Tracking Number field is populated when only one container in a tracking packet is matched by first and second level matching.
The Container Number field is populated when only one container in a tracking packet is matched by first and second level matching.
If the Tracking Number in a tracking packet includes a container match, this can update the Container Number with a new value.
The Vessel field is populated from the
VESSEL_NAMEwhen present and applied to all containers with first or second level matching.The Port/Terminal of Load and Port/Terminal of Discharge field values are matched to Accounts in the TMS based on the UN Location Code and when the TMS Type field is Seaport.
Only one container must match on the first, second, and third (for stop) level matching as outlined above.
Field values are only updated when they contain no value. Tracking event packets do not update existing Port/Terminal field values.
Multiple tracking event packet values are added to the Container Route Information field as they are received in the TMS.
The Port of Loading, Port of Discharge, and associated UN Location Codes are added to the Route Information field.
This is formatted as
{type}: {name} - {PORT_UN_LOCODE} - {PORT_UN_LOCODE}.
Payload values from the shipment stops or shipment stop location identifiers may update the Route Information field if the container match criteria are met.
The Route Information field is only updated when it contains no value.
Actual Arrival Date (D) and Actual Arrival Time (D) field values are only set based on the following criteria.
Only one container must match on the first, second, and third (for
Actualevent andstopId) level matching as outlined above.If multiple containers are matched and cannot be further matched to a single container, the update is not processed.
The event type must be
ARRIVAL_AT_STOPand the fields must not have a value set. Field values are only updated when they contain no value; existing values are not overwritten.The stop must be the
PORT_OF_DISCHARGEand the Port/Terminal of Discharge Timezone must be set on the container.This timezone may be derived from the Port/Terminal of Discharge field or set through previous stop processing.
Scheduled Arrival Date (D) and Scheduled Arrival Time (D) field values are only set based on the following criteria.
Only one container must match on the first, second, and third (for
Plannedevent andstopId) level matching as outlined above.If multiple containers are matched and cannot be further matched to a single container, the update is not processed.
The event type must be
ARRIVAL_AT_STOPand the fields must not have a value set. Field values are only updated when they contain no value.The stop must be the
PORT_OF_DISCHARGEand the Port/Terminal of Discharge Timezone must be set on the container.This timezone may be derived from the Port/Terminal of Discharge field or set through previous stop processing.
Estimated Arrival Date (D) and Estimated Arrival Time (D) field values are only set based on the following criteria.
Only one container must match on the first, second, and third (for
Estimatedevent andstopId) level matching as outlined above.If multiple containers are matched and cannot be further matched to a single container, the update is not processed.
The event type must be
ARRIVAL_AT_STOPand the fields must not have a value set. Field values are only updated when they contain no value.The stop type must be
PORT_OF_DISCHARGEand the Port/Terminal of Discharge Timezone must be set on the container.This timezone may be derived from the Port/Terminal of Discharge field or set through previous stop processing.
Actual Departure Date (L) and Actual Departure Time (L) field values are only set based on the following criteria.
Only one container must match on the first, second, and third (for
Actualevent andstopId) level matching as outlined above.If multiple containers are matched and cannot be further matched to a single container, the update is not processed.
The event type must be
DEPARTURE_FROM_STOPand the fields must not have a value set. Field values are only updated when they contain no value.The stop must be the
PORT_OF_LOADINGand the Port/Terminal of Load Timezone must be set on the container.This timezone may be derived from the Port/Terminal of Load field or set through previous stop processing.
Scheduled Departure Date (L) and Scheduled Departure Time (L) field values are only set based on the following criteria.
Only one container must match on the first, second, and third (for
Plannedevent andstopId) level matching as outlined above.If multiple containers are matched and cannot be further matched to a single container, the update is not processed.
The event type must be
DEPARTURE_FROM_STOPand the fields must not have a value set. Field values are only updated when they contain no value.The stop must be the
PORT_OF_LOADINGand the Port/Terminal of Load Timezone must be set on the container.This timezone may be derived from the Port/Terminal of Load field or set through previous stop processing.
Estimated Departure Date (L) and Estimated Departure Time (L) field values are only set based on the following criteria.
Only one container must match on the first, second, and third (for
Estimatedevent andstopId) level matching as outlined above.If multiple containers are matched and cannot be further matched to a single container, the update is not processed.
The event type must be
DEPARTURE_FROM_STOPand the fields must not have a value set. Field values are only updated when they contain no value.The stop type must be
PORT_OF_LOADINGand the Port/Terminal of Load Timezone must be set on the container.This timezone may be derived from the Port/Terminal of Load field or set through previous stop processing.
Gated In Full Date (L) and Gated In Full Time (L) field values are only set based on the following criteria.
Only one container must match on the first, second, and third (for
Actualevent andstopId) level matching as outlined above.If multiple containers are matched and cannot be further matched to a single container, the update is not processed.
The event type must be
GATE_IN_FULLand the fields must not have a value set. Field values are only updated when they contain no value.The stop must be the
PORT_OF_LOADINGand the Port/Terminal of Load Timezone must be set on the container.This timezone may be derived from the Port/Terminal of Load field or set through previous stop processing.
Gated In Empty Date (D) and Gated In Empty Time (D) field values are only set based on the following criteria.
Only one container must match on the first, second, and third (for
Actualevent andstopId) level matching as outlined above.If multiple containers are matched and cannot be further matched to a single container, the update is not processed.
The event type must be
GATE_IN_EMPTYand the fields must not have a value set. Field values are only updated when they contain no value.The stop must be the
PORT_OF_DISCHARGEand the Port/Terminal of Discharge Timezone must be set on the container.This timezone may be derived from the Port/Terminal of Discharge field or set through previous stop processing.
Gated Out Empty Date (L) and Gated Out Empty Time (L) field values are only set based on the following criteria.
Only one container must match on the first, second, and third (for
Actualevent andstopId) level matching as outlined above.If multiple containers are matched and cannot be further matched to a single container, the update is not processed.
The event type must be
GATE_OUT_EMPTYand the fields must not have a value set. Field values are only updated when they contain no value.The stop must be the
PORT_OF_LOADINGand the Port/Terminal of Load Timezone must be set on the container.This timezone may be derived from the Port/Terminal of Load field or set through previous stop processing.
Gated Out Full Date (D) and Gated Out Full Time (D) field values are only set based on the following criteria.
Only one container must match on the first, second, and third (for
Actualevent andstopId) level matching as outlined above.If multiple containers are matched and cannot be further matched to a single container, the update is not processed.
The event type must be
GATE_OUT_FULLand the fields must not have a value set. Field values are only updated when they contain no value.The stop must be the
PORT_OF_DISCHARGEand the Port/Terminal of Discharge Timezone must be set on the container.This timezone may be derived from the Port/Terminal of Discharge field or set through previous stop processing.
Loaded On Board Date (L) and Loaded On Board Time (L) field values are only set based on the following criteria.
Only one container must match on the first, second, and third (for
Actualevent andstopId) level matching as outlined above.If multiple containers are matched and cannot be further matched to a single container, the update is not processed.
The event type must be
LOADand the fields must not have a value set. Field values are only updated when they contain no value.The stop must be the
PORT_OF_LOADINGand the Port/Terminal of Load Timezone must be set on the container.This timezone may be derived from the Port/Terminal of Load field or set through previous stop processing.
Discharged Date (D) and Discharged Time (D) field values are only set based on the following criteria.
Only one container must match on the first, second, and third (for
Actualevent andstopId) level matching as outlined above.If multiple containers are matched and cannot be further matched to a single container, the update is not processed.
The event type must be
DISCHARGEand the fields must not have a value set. Field values are only updated when they contain no value.The stop must be the
PORT_OF_DISCHARGEand the Port/Terminal of Discharge Timezone must be set on the container.This timezone may be derived from the Port/Terminal of Discharge field or set through previous stop processing.
Available Date (D) and Available Time (D) field values are only set based on the following criteria.
Only one container must match on the first, second, and third (for
Actualevent andstopId) level matching as outlined above.If multiple containers are matched and cannot be further matched to a single container, the update is not processed.
The event type must be
AVAILABLEand the fields must not have a value set. Field values are only updated when they contain no value.The stop must be the
PORT_OF_DISCHARGEand the Port/Terminal of Discharge Timezone must be set on the container.This timezone may be derived from the Port/Terminal of Discharge field or set through previous stop processing.
Container Status and Container Status Comments field values are only set based on the following criteria.
Only one container must match on the first, second, and third (for
Actualevent) level matching as outlined above.If multiple containers are matched and cannot be further matched to a single container, the update is not processed.
If no third level matching occurs, each first and second level matching container is set with the event type.
The event type must be one of the types below. The event
dateTimein the tracking packet must have a value for the event.ARRIVAL_AT_STOPDEPARTURE_FROM_STOPGATE_IN_FULLGATE_IN_EMPTYGATE_OUT_EMPTYGATE_OUT_FULLLOADDISCHARGEAVAILABLE
The Container Tracking field is set to Off based on the following criteria.
Only one container is set when matching on the first, second, and third (for
Actualevent) level matching as outlined above.If multiple containers are matched and cannot be further matched to a single container, the update is not processed.
If no third level matching occurs, Tracking is set to Off for each first and second level matching container.
The event type must be one of the types below.
TRACKING_END_DUE_TO_TIMEOUTTRACKING_END_BY_USERTRACKING_COMPLETETRACKING_STOP
Container Geolocation and Geolocation as of field values are only set based on the following criteria.
Only one container must match by Container Number on the first, second, and third (for position) level matching as outlined above.
If multiple containers are matched and cannot be further matched to a single container, the update is not processed.
Note: In some cases multiple container events are received in a single tracking event packet. All events are processed with the most recent event responsible for setting the Container Status field value. When a packet includes an event to end the tracking session, all events in for the container in the packet are processed and stored on the container record.
Sample Tracking Update Push Notification
{
"shipment": {
"id": "30e6093a-f9a7-423c-9e94-f307c58a1de6",
"createdDateTime": "2026-03-03T19:31:20+0000",
"identifiers": [
{
"type": "CARRIER_MASTER_ID",
"value": "ZBFWLKGF"
},
{
"type": "CARRIER_NAME",
"value": "MSC-MEDITERRANEAN SHIPPING COMPANY S A"
},
{
"type": "CARRIER_SCAC",
"value": "MSCU"
},
{
"type": "CONTAINER_ID",
"value": "FCIU5942443"
},
{
"type": "CONTAINER_TYPE",
"value": "22GP"
}
],
"shipmentShareLink": "https://movement.project44.com/share/a0249d72-ea56-4900-96b3-535c28fd351d",
"lastModifiedDateTime": "2026-03-03T19:47:47+0000",
"routeInfo": {
"stops": [
{
"id": "71d8437b-2f56-3872-9156-ea0afaa2a38a",
"type": "PICKUP",
"location": {
"id": "16d9f7df-62d9-4cf5-be79-673f63f1dae6",
"name": "Jeddah",
"identifiers": [
{
"type": "PORT_UN_LOCODE",
"value": "SAJED"
}
],
"address": {
"city": "Jeddah",
"state": "Mecca Region",
"country": "SA"
},
"coordinates": {
"latitude": 21.498985,
"longitude": 39.150375
},
"timeZone": "Asia/Riyadh"
}
},
{
"id": "e0aee49c-f13b-3fbb-af10-25cbcf237f5b",
"type": "PORT_OF_LOADING",
"location": {
"id": "16d9f7df-62d9-4cf5-be79-673f63f1dae6",
"name": "Jeddah",
"identifiers": [
{
"type": "PORT_UN_LOCODE",
"value": "SAJED"
}
],
"address": {
"city": "Jeddah",
"state": "Mecca Region",
"country": "SA"
},
"coordinates": {
"latitude": 21.498985,
"longitude": 39.150375
},
"timeZone": "Asia/Riyadh"
}
},
{
"id": "be4c9beb-6b5b-32f7-9d42-6449e74e5cfe",
"type": "TRANSSHIPMENT_PORT",
"location": {
"id": "a3ce0156-2457-4d88-9b66-91a867285b77",
"name": "Barcelona",
"identifiers": [
{
"type": "PORT_UN_LOCODE",
"value": "ESBCN"
}
],
"address": {
"city": "Barcelona",
"state": "Catalonia",
"country": "ES"
},
"coordinates": {
"latitude": 41.35,
"longitude": 2.166667
},
"timeZone": "Europe/Madrid"
}
},
{
"id": "25c38ad7-32c8-337a-96f1-2337e2b68b2a",
"type": "PORT_OF_DISCHARGE",
"location": {
"id": "c96717c6-b201-4511-8462-e70a8aac15ab",
"name": "Houston",
"identifiers": [
{
"type": "PORT_UN_LOCODE",
"value": "USHOU"
}
],
"address": {
"city": "Houston",
"state": "Texas",
"country": "US"
},
"coordinates": {
"latitude": 29.702135,
"longitude": -95.036545
},
"timeZone": "America/Chicago",
"masterLocationId": "eab63e0c-3d50-4e8e-b5f4-1b204987d0b0"
}
}
],
"routeSegments": [
{
"id": "2a68be91-ad85-348c-945c-ada0b18f734f",
"fromStopId": "71d8437b-2f56-3872-9156-ea0afaa2a38a",
"toStopId": "e0aee49c-f13b-3fbb-af10-25cbcf237f5b",
"transportationMode": "UNKNOWN"
},
{
"id": "115c75bb-aee5-3b79-9e23-814e40017af6",
"fromStopId": "e0aee49c-f13b-3fbb-af10-25cbcf237f5b",
"toStopId": "be4c9beb-6b5b-32f7-9d42-6449e74e5cfe",
"transportationMode": "OCEAN",
"identifiers": [
{
"type": "CARRIER_MASTER_ID",
"value": "ZBFWLKGF"
},
{
"type": "CARRIER_NAME",
"value": "MSC-MEDITERRANEAN SHIPPING COMPANY S A"
},
{
"type": "CARRIER_SCAC",
"value": "MSCU"
},
{
"type": "VESSEL_IMO",
"value": "9974503"
},
{
"type": "VESSEL_NAME",
"value": "MSC GHANA"
},
{
"type": "VESSEL_P44_ID",
"value": "66edf366-5795-4fb6-b29d-f00e300c735e"
},
{
"type": "VOYAGE_NUMBER",
"value": "OW601R"
}
]
},
{
"id": "c460ecd8-e852-3c34-aedb-1ee23b2a710c",
"fromStopId": "be4c9beb-6b5b-32f7-9d42-6449e74e5cfe",
"toStopId": "25c38ad7-32c8-337a-96f1-2337e2b68b2a",
"transportationMode": "OCEAN",
"identifiers": [
{
"type": "CARRIER_MASTER_ID",
"value": "ZBFWLKGF"
},
{
"type": "CARRIER_NAME",
"value": "MSC-MEDITERRANEAN SHIPPING COMPANY S A"
},
{
"type": "CARRIER_SCAC",
"value": "MSCU"
},
{
"type": "VESSEL_IMO",
"value": "9480186"
},
{
"type": "VESSEL_NAME",
"value": "MSC BARCELONA"
},
{
"type": "VESSEL_P44_ID",
"value": "ca5f6d14-79f7-4e69-9eb5-198b90e8e4fe"
},
{
"type": "VOYAGE_NUMBER",
"value": "MG609E"
}
]
}
]
},
"relatedShipments": [
{
"id": "2de5e646-60e0-4934-910d-fc6205cd399c",
"createdDateTime": "2026-03-03T19:31:16+0000",
"identifiers": [
{
"type": "BILL_OF_LADING",
"value": "MEDUFF254439"
},
{
"type": "BOOKING_NUMBER",
"value": "EBKG15106940"
},
{
"type": "CARRIER_MASTER_ID",
"value": "ZBFWLKGF"
},
{
"type": "CARRIER_NAME",
"value": "MSC-MEDITERRANEAN SHIPPING COMPANY S A"
},
{
"type": "CARRIER_SCAC",
"value": "MSCU"
},
{
"type": "CONTAINER_ID",
"value": "FCIU5942443"
},
{
"type": "CONTAINER_TYPE",
"value": "22GP"
}
],
"shipmentShareLink": "https://movement.project44.com/share/e9cfd87b-66e8-42bc-90d9-b1a3f5547d60",
"lastModifiedDateTime": "2026-03-03T19:47:44+0000"
}
]
},
"states": [
{
"type": "IN_TRANSIT",
"startDateTime": "2025-12-17T13:48:00+0000",
"endDateTime": "2025-12-28T11:28:00+0000",
"stopId": "71d8437b-2f56-3872-9156-ea0afaa2a38a",
"routeSegmentId": "2a68be91-ad85-348c-945c-ada0b18f734f"
},
{
"type": "AT_STOP",
"startDateTime": "2025-12-28T11:28:00+0000",
"endDateTime": "2026-01-05T12:12:00+0000",
"stopId": "e0aee49c-f13b-3fbb-af10-25cbcf237f5b"
},
{
"type": "IN_TRANSIT",
"startDateTime": "2026-01-05T12:12:00+0000",
"endDateTime": "2026-01-27T22:36:00+0000",
"stopId": "e0aee49c-f13b-3fbb-af10-25cbcf237f5b",
"routeSegmentId": "115c75bb-aee5-3b79-9e23-814e40017af6"
},
{
"type": "AT_STOP",
"startDateTime": "2026-01-27T22:36:00+0000",
"endDateTime": "2026-02-03T08:24:00+0000",
"stopId": "be4c9beb-6b5b-32f7-9d42-6449e74e5cfe",
"routeSegmentId": "115c75bb-aee5-3b79-9e23-814e40017af6"
},
{
"type": "IN_TRANSIT",
"startDateTime": "2026-02-03T08:24:00+0000",
"stopId": "be4c9beb-6b5b-32f7-9d42-6449e74e5cfe",
"routeSegmentId": "c460ecd8-e852-3c34-aedb-1ee23b2a710c"
}
],
"events": [
{
"dateTime": "2025-12-17T13:48:00+0000",
"receivedDateTime": "2026-03-03T19:47:00+0000",
"id": "cc9a1335-479b-4bf5-b2a0-16e140bc2f8b",
"type": "GATE_OUT_EMPTY",
"stopId": "71d8437b-2f56-3872-9156-ea0afaa2a38a",
"routeSegmentId": "2a68be91-ad85-348c-945c-ada0b18f734f",
"dateTimes": [
{
"type": "ACTUAL",
"dateTime": "2025-12-17T13:48:00+0000",
"lastModifiedDateTime": "2026-03-03T19:47:00+0000",
"source": "CARRIER",
"sourceIdentifiers": [
{
"type": "CARRIER_SCAC",
"value": "MSCU"
}
],
"selected": true,
"sequence": 1
}
],
"details": {
"ocean": {
"code": "GATE_OUT_EMPTY_CONTAINER_AT_TERMINAL"
}
}
},
{
"dateTime": "2025-12-28T11:28:00+0000",
"receivedDateTime": "2026-03-03T19:47:00+0000",
"id": "41dbe6ce-b8a7-46da-80ea-13ede83760d1",
"type": "GATE_IN_FULL",
"stopId": "e0aee49c-f13b-3fbb-af10-25cbcf237f5b",
"dateTimes": [
{
"type": "ACTUAL",
"dateTime": "2025-12-28T11:28:00+0000",
"lastModifiedDateTime": "2026-03-03T19:47:00+0000",
"source": "CARRIER",
"sourceIdentifiers": [
{
"type": "CARRIER_SCAC",
"value": "MSCU"
}
],
"selected": true,
"sequence": 1
}
],
"details": {
"ocean": {
"code": "GATE_IN_FULL_AT_PORT_OF_LOADING"
}
}
},
{
"dateTime": "2026-01-04T22:10:00+0000",
"receivedDateTime": "2026-03-03T19:47:00+0000",
"id": "2f2c5f7f-a354-484f-bca0-c9197a54396c",
"type": "LOAD",
"stopId": "e0aee49c-f13b-3fbb-af10-25cbcf237f5b",
"routeSegmentId": "115c75bb-aee5-3b79-9e23-814e40017af6",
"dateTimes": [
{
"type": "ACTUAL",
"dateTime": "2026-01-04T22:10:00+0000",
"lastModifiedDateTime": "2026-03-03T19:47:00+0000",
"source": "CARRIER",
"sourceIdentifiers": [
{
"type": "CARRIER_SCAC",
"value": "MSCU"
}
],
"selected": true,
"sequence": 1
}
],
"details": {
"ocean": {
"code": "LOAD_ONTO_VESSEL_AT_PORT_OF_LOADING"
}
}
},
{
"dateTime": "2026-01-05T12:12:00+0000",
"receivedDateTime": "2026-03-03T19:47:00+0000",
"id": "fc3fab10-9c21-4ff3-91e4-a37beef1e17e",
"type": "DEPARTURE_FROM_STOP",
"stopId": "e0aee49c-f13b-3fbb-af10-25cbcf237f5b",
"routeSegmentId": "115c75bb-aee5-3b79-9e23-814e40017af6",
"dateTimes": [
{
"type": "ACTUAL",
"dateTime": "2026-01-05T12:12:00+0000",
"lastModifiedDateTime": "2026-03-03T19:47:00+0000",
"source": "CARRIER",
"sourceIdentifiers": [
{
"type": "CARRIER_SCAC",
"value": "MSCU"
}
],
"selected": true,
"sequence": 1
}
],
"details": {
"ocean": {
"code": "VESSEL_DEPARTURE_FROM_PORT_OF_LOADING"
}
}
},
{
"dateTime": "2026-01-27T22:36:00+0000",
"receivedDateTime": "2026-03-03T19:47:00+0000",
"id": "1daa987e-d47b-404b-9cad-0730bd8d1912",
"type": "ARRIVAL_AT_STOP",
"stopId": "be4c9beb-6b5b-32f7-9d42-6449e74e5cfe",
"routeSegmentId": "115c75bb-aee5-3b79-9e23-814e40017af6",
"dateTimes": [
{
"type": "ACTUAL",
"dateTime": "2026-01-27T22:36:00+0000",
"lastModifiedDateTime": "2026-03-03T19:47:00+0000",
"source": "CARRIER",
"sourceIdentifiers": [
{
"type": "CARRIER_SCAC",
"value": "MSCU"
}
],
"selected": true,
"sequence": 1
}
],
"details": {
"ocean": {
"code": "VESSEL_ARRIVAL_AT_TRANSSHIPMENT_PORT"
}
}
},
{
"dateTime": "2026-01-28T05:18:00+0000",
"receivedDateTime": "2026-03-03T19:47:00+0000",
"id": "7338bfd8-c319-4490-bfdc-0d4219d8d2f0",
"type": "DISCHARGE",
"stopId": "be4c9beb-6b5b-32f7-9d42-6449e74e5cfe",
"routeSegmentId": "115c75bb-aee5-3b79-9e23-814e40017af6",
"dateTimes": [
{
"type": "ACTUAL",
"dateTime": "2026-01-28T05:18:00+0000",
"lastModifiedDateTime": "2026-03-03T19:47:00+0000",
"source": "CARRIER",
"sourceIdentifiers": [
{
"type": "CARRIER_SCAC",
"value": "MSCU"
}
],
"selected": true,
"sequence": 1
}
],
"details": {
"ocean": {
"code": "DISCHARGE_FROM_VESSEL_AT_TRANSSHIPMENT_PORT"
}
}
},
{
"dateTime": "2026-02-02T23:36:00+0000",
"receivedDateTime": "2026-03-03T19:47:00+0000",
"id": "ef06adb2-f516-4324-a31f-00d2a5d377ec",
"type": "LOAD",
"stopId": "be4c9beb-6b5b-32f7-9d42-6449e74e5cfe",
"routeSegmentId": "c460ecd8-e852-3c34-aedb-1ee23b2a710c",
"dateTimes": [
{
"type": "ACTUAL",
"dateTime": "2026-02-02T23:36:00+0000",
"lastModifiedDateTime": "2026-03-03T19:47:00+0000",
"source": "CARRIER",
"sourceIdentifiers": [
{
"type": "CARRIER_SCAC",
"value": "MSCU"
}
],
"selected": true,
"sequence": 1
}
],
"details": {
"ocean": {
"code": "LOAD_ONTO_VESSEL_AT_TRANSSHIPMENT_PORT"
}
}
},
{
"dateTime": "2026-02-03T08:24:00+0000",
"receivedDateTime": "2026-03-03T19:47:00+0000",
"id": "4ed07e70-a8d7-430d-9220-672b7f210f5a",
"type": "DEPARTURE_FROM_STOP",
"stopId": "be4c9beb-6b5b-32f7-9d42-6449e74e5cfe",
"routeSegmentId": "c460ecd8-e852-3c34-aedb-1ee23b2a710c",
"dateTimes": [
{
"type": "ACTUAL",
"dateTime": "2026-02-03T08:24:00+0000",
"lastModifiedDateTime": "2026-03-03T19:47:00+0000",
"source": "CARRIER",
"sourceIdentifiers": [
{
"type": "CARRIER_SCAC",
"value": "MSCU"
}
],
"selected": true,
"sequence": 1
}
],
"details": {
"ocean": {
"code": "VESSEL_DEPARTURE_FROM_TRANSSHIPMENT_PORT"
}
}
},
{
"dateTime": "2026-03-03T19:47:00+0000",
"receivedDateTime": "2026-03-03T19:47:00+0000",
"id": "04e48469-e190-439a-879f-bd9e99e15ab4",
"type": "TRACKING_START",
"dateTimes": [
{
"type": "ACTUAL",
"dateTime": "2026-03-03T19:47:00+0000",
"source": "CARRIER",
"sourceIdentifiers": [
{
"type": "CARRIER_SCAC",
"value": "MSCU"
},
{
"type": "CONTAINER_ID",
"value": "FCIU5942443"
}
],
"selected": true,
"sequence": 1
}
]
},
{
"receivedDateTime": "2026-03-03T19:47:00+0000",
"id": "9723fac1-284a-43cb-aaf2-a9d16c76454b",
"type": "ARRIVAL_AT_STOP",
"stopId": "25c38ad7-32c8-337a-96f1-2337e2b68b2a",
"routeSegmentId": "c460ecd8-e852-3c34-aedb-1ee23b2a710c",
"estimateDateTime": "2026-03-07T12:00:00+0000",
"estimateLastCalculatedDateTime": "2026-03-03T19:47:43+0000",
"plannedDateTime": "2026-03-07T12:00:00+0000",
"dateTimes": [
{
"type": "PLANNED",
"dateTime": "2026-03-07T12:00:00+0000",
"lastModifiedDateTime": "2026-03-03T19:47:00+0000",
"source": "CARRIER",
"sourceIdentifiers": [
{
"type": "CARRIER_SCAC",
"value": "MSCU"
}
],
"selected": true,
"sequence": 1
},
{
"type": "ESTIMATE",
"dateTime": "2026-03-07T12:00:00+0000",
"lastModifiedDateTime": "2026-03-03T19:47:43+0000",
"source": "P44",
"sourceIdentifiers": [
{
"type": "REFERENCE_NUMBER",
"value": "3"
}
],
"selected": true,
"sequence": 1
}
],
"details": {
"ocean": {
"code": "VESSEL_ARRIVAL_AT_PORT_OF_DISCHARGE"
}
}
},
{
"id": "7c950a1e-1469-4f40-9b37-9669ab62903e",
"type": "DISCHARGE",
"stopId": "25c38ad7-32c8-337a-96f1-2337e2b68b2a",
"routeSegmentId": "c460ecd8-e852-3c34-aedb-1ee23b2a710c",
"estimateDateTime": "2026-03-08T10:10:00+0000",
"estimateLastCalculatedDateTime": "2026-03-03T19:47:43+0000",
"dateTimes": [
{
"type": "ESTIMATE",
"dateTime": "2026-03-08T10:10:00+0000",
"lastModifiedDateTime": "2026-03-03T19:47:43+0000",
"source": "P44",
"sourceIdentifiers": [
{
"type": "REFERENCE_NUMBER",
"value": "3"
}
],
"selected": true
}
],
"details": {
"ocean": {
"code": "DISCHARGE_FROM_VESSEL_AT_PORT_OF_DISCHARGE"
}
}
}
],
"positions": [
{
"dateTime": "2025-12-17T13:48:00+0000",
"routeSegmentId": "2a68be91-ad85-348c-945c-ada0b18f734f",
"latitude": 21.498985,
"longitude": 39.150375
},
{
"dateTime": "2025-12-28T11:28:00+0000",
"routeSegmentId": "2a68be91-ad85-348c-945c-ada0b18f734f",
"latitude": 21.498985,
"longitude": 39.150375
},
{
"dateTime": "2026-01-04T22:10:00+0000",
"routeSegmentId": "2a68be91-ad85-348c-945c-ada0b18f734f",
"latitude": 21.498985,
"longitude": 39.150375
},
{
"dateTime": "2026-01-05T12:12:00+0000",
"routeSegmentId": "2a68be91-ad85-348c-945c-ada0b18f734f",
"latitude": 21.498985,
"longitude": 39.150375
},
{
"dateTime": "2026-01-27T22:36:00+0000",
"routeSegmentId": "115c75bb-aee5-3b79-9e23-814e40017af6",
"latitude": 41.35,
"longitude": 2.166667
},
{
"dateTime": "2026-01-28T05:18:00+0000",
"routeSegmentId": "115c75bb-aee5-3b79-9e23-814e40017af6",
"latitude": 41.35,
"longitude": 2.166667
},
{
"dateTime": "2026-02-02T23:36:00+0000",
"routeSegmentId": "115c75bb-aee5-3b79-9e23-814e40017af6",
"latitude": 41.35,
"longitude": 2.166667
},
{
"dateTime": "2026-02-03T08:24:00+0000",
"routeSegmentId": "115c75bb-aee5-3b79-9e23-814e40017af6",
"latitude": 41.35,
"longitude": 2.166667
}
]
}The following TMS fields may update based on the values received from Project44.
Object | Field | Type | Project44 Unified Tracking Field |
|---|---|---|---|
Container | Actual Arrival Date (D) | Date | events → dateTime |
Container | Actual Arrival Time (D) | Time | events → dateTime |
Container | Actual Departure Date (L) | Date | events → dateTime |
Container | Actual Departure Time (L) | Time | events → dateTime |
Container | Available Date (D) | Date | events → dateTime |
Container | Available Time (D) | Time | events → dateTime |
Container | Booking Number | Formula (Text) | identifiers → value, identifiers → type is |
Container | Container Number | Text(80) | identifiers → value, identifiers → type is |
Container | Container Status | Picklist | events → type |
Container | Container Status Comments | Text Area(255) | events → description |
Container | Discharged Date (D) | Date | events → dateTime |
Container | Discharged Time (D) | Time | events → dateTime |
Container | Estimated Arrival Date (D) | Date | events → estimateDateTime |
Container | Estimated Arrival Time (D) | Time | events → estimateDateTime |
Container | Estimated Departure Date (L) | Date | events → estimateDateTime |
Container | Estimated Departure Time (L) | Time | events → estimateDateTime |
Container | Gated In Empty Date (D) | Date | events → dateTime |
Container | Gated In Empty Time (D) | Time | events → dateTime |
Container | Gated In Full Date (L) | Date | events → dateTime |
Container | Gated In Full Time (L) | Time | events → dateTime |
Container | Gated Out Empty Date (L) | Date | events → dateTime |
Container | Gated Out Empty Time (L) | Time | events → dateTime |
Container | Gated Out Full Date (D) | Date | events → dateTime |
Container | Gated Out Full Time (D) | Time | events → dateTime |
Container | Geolocation | Geolocation | positions → latitude, longitude |
Container | Geolocation as of | Date/Time | positions → dateTime |
Container | Loaded On Board Date (L) | Date | events → dateTime |
Container | Loaded On Board Time (L) | Time | events → dateTime |
Container | Master Bill of Lading Number | Formula (Text) | identifiers → value, identifiers → type is |
Container | Port/Terminal of Discharge | Lookup(Account) | shipment.routeInfo.stops.location.identifiers → value |
Container | Port/Terminal of Load | Lookup(Account) | shipment.routeInfo.stops.location.identifiers → value |
Container | Route Information | Long Text Area(500) | shipment.routeInfo.stops → type, shipment.routeInfo.stops.location → name - |
Container | Scheduled Arrival Date (D) | Date | events → plannedDateTime |
Container | Scheduled Arrival Time (D) | Time | events → plannedDateTime |
Container | Scheduled Departure Date (L) | Date | events → plannedDateTime |
Container | Scheduled Departure Time (L) | Time | events → plannedDateTime |
Container | Tracking | Picklist | events → |
Container | Tracking Number | Text(40) (External ID) | shipment → |
Container | Vessel | Text(100) | identifiers → value identifiers → type is |
Integration Field Mapping
The following table contains fields that are sent to and received from Project44 throughout container tracking.
Object | Field | Type | Project44 Field |
|---|---|---|---|
Container | Actual Arrival Date (D) | Date | events → dateTime |
Container | Actual Arrival Time (D) | Time | events → dateTime |
Container | Actual Departure Date (L) | Date | events → dateTime |
Container | Actual Departure Time (L) | Time | events → dateTime |
Container | Available Date (D) | Date | events → dateTime |
Container | Available Time (D) | Time | events → dateTime |
Container | Booking Number | Formula (Text) | identifiers → value, identifiers → type is |
Container | Container Number | Text(80) | identifiers → value, identifiers → type is |
Container | Container Status | Picklist | events → type |
Container | Container Status Comments | Text Area(255) | events → description |
Container | Discharged Date (D) | Date | events → dateTime |
Container | Discharged Time (D) | Time | events → dateTime |
Container | Estimated Arrival Date (D) | Date | events → estimateDateTime |
Container | Estimated Arrival Time (D) | Time | events → estimateDateTime |
Container | Estimated Departure Date (L) | Date | events → estimateDateTime |
Container | Estimated Departure Time (L) | Time | events → estimateDateTime |
Container | Gated In Empty Date (D) | Date | events → dateTime |
Container | Gated In Empty Time (D) | Time | events → dateTime |
Container | Gated In Full Date (L) | Date | events → dateTime |
Container | Gated In Full Time (L) | Time | events → dateTime |
Container | Gated Out Empty Date (L) | Date | events → dateTime |
Container | Gated Out Empty Time (L) | Time | events → dateTime |
Container | Gated Out Full Date (D) | Date | events → dateTime |
Container | Gated Out Full Time (D) | Time | events → dateTime |
Container | *Geolocation | Geolocation | positions → latitude, longitude |
Container | Geolocation as of | Date/Time | positions → dateTime |
Container | Loaded On Board Date (L) | Date | events → dateTime |
Container | Loaded On Board Time (L) | Time | events → dateTime |
Container | Master Bill of Lading Number | Formula (Text) | identifiers → value, identifiers → type is |
Container | **Port/Terminal of Discharge | Lookup(Account) | shipment.routeInfo.stops.location.identifiers → value |
Container | **Port/Terminal of Load | Lookup(Account) | shipment.routeInfo.stops.location.identifiers → value |
Container | **Route Information | Long Text Area(500) | shipment.routeInfo.stops → type, shipment.routeInfo.stops.location → name |
Container | SCAC | Text(6) | identifiers → value, identifiers → type is |
Container | Scheduled Arrival Date (D) | Date | events → plannedDateTime |
Container | Scheduled Arrival Time (D) | Time | events → plannedDateTime |
Container | Scheduled Departure Date (L) | Date | events → plannedDateTime |
Container | Scheduled Departure Time (L) | Time | events → plannedDateTime |
Container | Tracking | Picklist | events → |
Container | Tracking Number | Text(40) (External ID) | shipment → |
Container | Tracking Provider | Text(40) | set to Project44 Tracking by the TMS |
Container | Vessel | Text(100) | identifiers → value identifiers → type is |
*The Geolocation fields for a container are only set when matched by first, second, or third (by position) matching as outlined above.
**The UN Port/LOCODE codes are added to the Route Information field.
Container Status Events
The following Events are received from Project44 and cause the specified actions within the TMS.
Project44 Event | TMS Action |
|---|---|
|
|
|
|
|
|
Troubleshooting
Retry Failed: Invalid Tracking Identifiers: fcc03378-38ea-45b4-982e-d79059d2e1f9/null/null
When tracking a container, the above error is received.
Issue
Container Tracking data is not sent correctly from Project44. The SCAC and Container Number are confirmed and entered correctly. Tracking is enabled. Dates and Times of arrival/departures are included on the Container.
Resolution
This invalid tracking identifiers error is generated when the Container Tracking is already initiated in a different environment. Disable tracking in the other environment before beginning tracking in the new environment. Check the sandbox for Containers with the Tracking ID from the error message. (ex: fcc03378-38ea-45b4-982e-d79059d2e1f9)
Each Port must have a Seaport TMS type Account. If the Account is populated with the correct UN Code field, the Account automatically pulls in the container. If this field is not populated, the Account must be manually added to the Port/Terminal of Load and Port/Terminal of Discharge fields on the Container. If these fields are not populated with an Account, all dates and times are not added to the container.
