Documentation Index

Fetch the complete documentation index at: https://documents.revenova.com/llms.txt

Use this file to discover all available pages before exploring further.

OpenTrack Container Tracking

Prev Next

OpenTrack ocean tracking provides real-time container tracking from global ocean carriers, AIS (Automatic Identification System) signals, vessel schedules, terminal and rail carrier systems, third party providers, and other proprietary sources. The Revenova integration with OpenTrack provides standardized ocean container tracking milestone information for enhanced visibility in the TMS. Container tracking is initiated at the Container record level, allowing for ocean container tracking independent of Load tracking. For example, track a container with OpenTrack 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.

Setup

Experience Cloud Site Setup

OpenTrack provides “push” updates to the TMS via a sites-based API. This service requires a webhook to send container tracking information into the TMS. Create an Experience Cloud API Site to accept inbound API traffic.

  1. Create a Salesforce Site for API Guest User Access.

  2. Set the public access for the Site.

  3. Activate and Publish the Site.

  4. Enter the API URL into the field for Inbound API Community URL under TMS Admin, in the Configuration section.

The Salesforce-generated API Experience Cloud Site URL is case sensitive.

Enter Credentials

Enable the OpenTrack integration by completing the following steps.

  1. Navigate to TMS Admin.

  2. Select Credentials.

  3. Select the Global Services tab.

  4. Find OpenTrack in the list and open the card.

  5. Check the Enabled box field.

    1. The Tracking field may be set to On when the OpenTrack credentials are not Enabled. No actions occur and no warning is shown.

  6. If required, select the Master Bill Tracking box to track all containers associated with a Master Bill of Lading.

    1. To override this behavior for a specific container, select the Individual Container Tracking field on that container.

      1. When Master Bill Tracking is not selected, the Individual Container Tracking field does not impact OpenTrack integration behavior. Containers are tracked individually rather than by Master Bill of Lading.

  7. Enter the OpenTrack API Key into the Password 1 text field.

    1. Any text may be entered into the User ID field. The field is not used by the integration.

  8. Click the Save button.

  9. Select the OpenTrack link again to open the card.

  10. Click the Register OpenTrack Webhook button.

    1. The webhook identifier is stored in the Password 2 field.

    2. OpenTrack does not send webhook events when a webhook is not registered.

Valid credentials are required from an OpenTrack subscription. See examples in the table below.

User ID

Password 1

Password 2

Customer Number

Any text, not used by integration.

Required (API Key provided by OpenTrack)

Read Only, webhook ID

Remote Site Settings

Upgrading from previous versions of the TMS may have outdated Remote Site information. Check that the Remote Site Settings for the OpenTrack integration URL are current.

Two Remote Site Settings are likely included in an org. The Test URL is only required when the Test Mode field is Checked on the credential card. This is likely only required in a sandbox.

  1. Click the Setup gear icon in the top right corner.

  2. From the drop-down, click Setup.

  3. In the Quick Find Toolbar type Remote Site Settings and click the link.

  4. From the list of remote sites find OpenTrack and click the Edit link.

  5. Update the Remote Site URL to match the Service URL below:

    1. Service URL: https://api.opentrack.co

    2. Test Service URL: https://api.opentrack.co

Additional Setup

Only one container tracking integration may be used at a time. Confirm the Project44 Unified Container Tracking feature is not enabled on the Project44 Tracking credential card.

Enable Container information on the Load Configuration Lightning Web Component by Mode.

  1. Navigate to TMS Admin → Modes.

  2. Select the appropriate Mode type for containers.

  3. Check the Show Containers on Load Creation field.

  4. Click Save.

  5. Repeat the steps above for each Mode type as necessary.

OpenTrack sends currency information in USD. For multi-currency orgs, the currency is converted in the TMS to the currency of the container, otherwise to the User’s default currency code. See Hold information for the time used for currency conversions.

Platform Events are used for inbound and outbound requests and when failures occur, a Queued Transaction record is created with details of the failure.

Page Layouts

Assign the packaged Container - Revenova Default page layout for User profiles using the OpenTrack integration.

  1. Select Setup → Object Manager.

  2. Find and choose the Container object.

  3. Select the Page Layouts tab.

  4. Click the Page Layout Assignment button.

  5. Click the Edit Assignment button.

  6. Select all of the profiles and from the Page Layout to Use dropdown, choose Container - Revenova Default.

  7. Click Save.

The Container Events and Holds related lists are configured with TMS-defined sorting. This sorting may not be modified and applies across all Container records.

  • Container Events are sorted by Event Date in descending order with the most recent event first.

    • When multiple events occur on the same Event Date, the relative order is not guaranteed.

  • Holds are sorted by Reported Datetime in ascending order with the earliest first.

For orgs using a custom Container Lightning Record Page (LRP), add the related lists for Container Events and Holds to the Container LRP. If desired, add conditional logic to only display Container fields that are applicable to the OpenTrack integration. See the reference table below for fields used by the integration.

Use the Container Trade Type field to filter list views for import or export team workflows or conditional field filtering for page layouts.

Note: OpenTrack does not return values to populate the Last Free Date - Detention (L) and Last Free Time - Detention (L) fields for export workflows.

Containers must have a valid 11 character length Container Number field value. An LRP error is presented when trying to save an invalid Container Number field value.  

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, Seaport Terminal, or any custom picklist values containing “seaport.”

  • 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 or times for milestone updates.

    • Add any missing values to Account Timezone fields as necessary.

  • 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.

    • It is recommended practice to upload commonly used port locations with the Salesforce data import wizard.

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

  • Load TMS1

    • It is recommended to add the Master Bill of Lading Number field to the Load TMS1 field set. The Master Bill of Lading Number is required to initiate a tracking session.

Create Mode-specific field sets as necessary for further customization. For example, TMS1_Drayage.

Objects and Tabs

Container information is managed with the Container, Container Event, Hold, 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.

Confirm that field history tracking is enabled for the Container object, or at least the Geolocation and Geolocation As Of fields.

Add the Containers related list to the Load Lightning Record Page with a Mode-based visibility filter to view container information on relevant Loads.

Container Console

The Container Console Lightning Web Component is available to create or edit Container or Container Event records. Create views for managing Containers and Container Events.

The Container Console displaying various container numbers and their statuses for transportation.

Note that the Container Event Is Estimate field is included in the name for each Event (ESTIMATED or ACTUAL).

The Event Time field for 12:00 A.M. is displayed as 0:00:00 and 12:00 P.M. as 12:00:00 in the Container Console.

Container console displaying tracking information highlighting container event selections.

Edit the Container or Container Event field with the pencilA pencil icon for editing field values in the component.icon for the field.

Check multiple Container records and select a field to update with the pencil icon. The option to update the single container or all selected containers is chosen with the checkbox in the edit modal.

If no Container Event record exists for a Container, a new record is created. Changes made to records in the Container Console update the records when saved.

Update Container or Container Event records individually or in bulk. For Container Events, all updates are applied to each selected Container.

The Container console modal showing multiple selected items for update with the checkbox to confirm updating multiple records.

Load Map

The Load Map displays container locations and breadcrumb tracking updates received from OpenTrack. Click the Show Container Map button to display container locations.

A single container is displayed on the Load Map at a time. Loads with multiple containers only display the first container ordered by Container Name.

Load Map component showing the container location.

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

The integration with OpenTrack is specific to their ocean container tracking features. If containers are moving via rail as part of an ocean tracking session, updates are included in the information packets sent to the TMS. Containers moving only via domestic rail do not provide status updates to the TMS.

The Container Individual Container Tracking field allows for overriding the Checked Master Bill Tracking field on the credential card. If the Master Bill Tracking field is not Checked on the credential card, all containers are tracked individually.

Begin a tracking session when all of the following fields contain a value. If any of the following Container fields do not have a value an error message is displayed and tracking does not begin.

  • Master Bill of Lading Number

  • Container Number

  • SCAC

Set the Container Tracking field to On to begin the tracking session for a container. Manually set the field or configure a flow.

Tracking sessions are initiated by a Platform Event in the TMS. If the Platform Event fails, a Queued Transaction is created to log the failure.

  • When container tracking is successfully initiated, the Container Status field is set to Discovering and the Tracking Provider is set to OpenTrack.

    • OpenTrack makes up to 200 attempts to locate the shipment over the course of two weeks. These attempts occur in logarithmically decreasing values frequently at first, and as time passes, less frequently.

    • If the container cannot be located in the two week window, the tracking session fails and the Container Status field is updated to Not Found. The failure is stored in the Container Status Comments field.

Container status updates are published to the webhook and are then processed in the TMS as Platform Events.

Tracking Failures

If a tracking session fails to initiate, OpenTrack sends a failure response that sets the Container Status field to Tracking Failed. The Tracking field is set to Off. When a tracking session fails to initiate, OpenTrack includes a reason for the failure. One of two possible failures is returned.

  • The Master Bill of Loading is not found. (Shipment.Tracking.Failed)

    • All container records that share the same Master Bill of Lading Number value update with the following field values.

      • The Container Status field is set to Tracking Failed.

      • The Container Status Comments field is set to Master Bill of Lading was not found.

  • The Container is not found for a valid Master Bill of Lading. (Container.Tracking.Failed)

    • The Container Status field is set to Tracking Failed.

    • The Container Status Comments field is set to Unable to locate this container on Master BOL.

Any additional tracking failures received from OpenTrack are stored in the Container Status Comments field.

Tracking Completed

Container tracking sessions are completed when OpenTrack sends a tracking stopped even that includes a reason for completion. The following Container fields are updated with the values received from OpenTrack.

  • Container Status is set to Tracking Stop.

  • The Container Status Comments field is updated with the completion reason.

  • Tracking is set to Off.

See the table of tracking completion reasons below.

Note: Tracking sessions cannot be manually ended via the integration as OpenTrack does not offer a stop tracking API call. Contact OpenTrack or visit their website to stop a tracking session. Manually setting the Container Tracking field to Off results in an error.

Container Events

Container Event records store milestone information received from OpenTrack. The following Container Event fields are populated with milestone information.

  • Event Date

  • Event Time

    • The local time of the container milestone event.

  • Event Type

    • Informational field.

  • Geolocation

    • The latitude and longitude for the milestone.

  • Is Estimate

    • When Checked, the milestone is an estimated event.

    • When Unchecked, the milestone is an actual event.

  • Location Summary

    • The location type (Port or Locality), name, and UN/LOCODE values. See the reference below for an example.

    • OpenTrack does not usually send UN/LOCODE values for a locality. Values are displayed when included with the milestone.

  • Timezone

    • The timezone for the milestone is provided in UTC and converted by the TMS.

Container Event records contain a fingerprint that consists of the milestone name and status. The fingerprint is matched against container event information received from OpenTrack to determine if the Container Event is new, is an update to an existing record, or already exists. When Container Event information matches an existing record by fingerprint, the record is updated with new field values. If any portion of the fingerprint is different, the TMS creates a new Container Event record.

The fingerprint prevents creating two Container Events with the same milestone and Is Estimate value. For existing Container Event records, new timestamp or location information updates the record.

See the container milestone references for the list of rail and container milestones sent by OpenTrack.

Holds

OpenTrack sends container hold information in the “push” events that is stored in the TMS. Both active and resolved holds are stored on the Hold record associated with the container. A hold is considered active when it does not have the Resolved Date field populated. Multiple holds may apply to a single container. View each hold from the related list on the Container Lightning Record Page.

Hold records contain a fingerprint that consists of the Hold Type, Code, and Reported Datetime fields. The fingerprint is matched against hold information received from OpenTrack to determine if the hold is new, is an update to an existing record, or already exists. Hold information that matches an existing record by the fingerprint is updated with new field values. If any portion of the fingerprint is different, the TMS creates a new Hold record.

Hold Reported Datetime and Resolved Datetime fields are stored in GMT values and are displayed in the User’s timezone.

Currencies are reported from OpenTrack in USD. Any currency conversions for Holds occur at the following times.

  • The currency conversion occurs based on the timestamp of the push event for the following fields.

    • Demurrage Incurred

    • Demurrage Incurred at Rail

    • Demurrage Owed

    • Demurrage Owed at Rail

  • The currency conversion for the Amount Due field occurs based on the reportedAt value received in the hold push event.

Integration Calls

The following three calls control the flow of container tracking information into the TMS. Additionally, OpenTrack sends “push” events that provide container tracking information for active tracking sessions. Container, Container Event, and Hold object fields are populated with values received from OpenTrack in the following calls.

The “push” events from OpenTrack require a registered webhook. If a webhook is not registered, OpenTrack does not send any events.

Register Webhook

Register webhooks from the OpenTrack credentials card. Click the Register OpenTrack Webhook button when the password information is entered in the password field to initiate the call to OpenTrack.

When no webhook is registered, container tracking sessions may still be initiated. Container information is returned and populated to the appropriate records, but no additional updates are sent from OpenTrack. Register a new webhook to begin receiving container “push” events.

Caution: There is no warning or error message presented when no webhook is registered. If tracking updates are not processing and updating Container records, confirm the webhook is created.

TMS Operation

OpenTrack Endpoint

Request Type

Response

  • Register OpenTrack Webhook button on OpenTrack credentials card.

  • Only available when the Password 2 field does not contain a value.

Register a Webhook

POST

201: Success,

400: Webhook registration error,

429: Usage error,
500: Server error

The webhook identifier (ID) is stored in the Password 2 field on the credential card. When a value is stored in this field, the webhook is successfully registered. This field is not editable.

Unregister Webhook

Existing webhooks may be unregistered to prevent OpenTrack from sending container updates to the TMS. Use the Unregister OpenTrack Webhook button on the OpenTrack credential card to unregister the webhook.

Security or operational issues may arise that necessitate temporarily unregistering a webhook. For example, a secret key may need to change. In these security scenarios, unregister the webhook with the button on the credential card.

TMS Operation

OpenTrack Endpoint

Request Type

Response

  • Unregister OpenTrack Webhook button on OpenTrack credentials card.

  • Only available when a webhook ID is populated in the Password 2 field.

Unregister a Webhook

DELETE

200: Success,

404: Webhook not found,

429: Usage error,
500: Server error

The webhook identifier (ID) is stored in the Password 2 field on the credential card. When no value is stored in this field, the webhook is successfully unregistered.

Start Container Tracking

The OpenTrack Track a Container endpoint is called to send container information to OpenTrack to begin collecting location information.

Three Container fields are required to begin a tracking session.

  • Container Number

  • Master Bill of Lading Number

  • SCAC

Note: The Container SCAC field must be set manually. This field is not populated from the the Steamship Line values returned from OpenTrack.

OpenTrack provides tracking information for all containers included on a Master Bill of Lading when the Master Bill Tracking field is Checked on the credential card. Override the Master Bill Tracking setting for an individual container by Checking the Container Individual Container Tracking field. Create a flow or set this field during Load creation to enable single container tracking.

When a container tracking session is started, the response from OpenTrack contains fields that are populated on the applicable Container records. The following Container fields are populated with a TMS Account when the OpenTrack tracking payload location matches an Account in the TMS.

  • Port/Terminal of Load

  • Port/Terminal of Discharge

For the Port/Terminal of Load or Discharge to match Accounts in the TMS, the Account fields below must contain the following field values.

  • TMS Type must contain the word Seaport.

  • The Timezone must contain a value.

  • The UN/LOCODE must contain a value.

When the Container Port/Terminal of Discharge or Load fields are already populated on the container record, the corresponding Timezone fields are populated from the Account record.

OpenTrack milestones are included in UTC and the TMS converts them to the local time zone of the event.

Note: If an Account is not populated in the Container Port/Terminal fields, some operational date and time values may not process properly. See the Container Timezone Settings table below for a list of fields that do not process.

Additional fields are set based on the Timezone field for the appropriate Account location. See the table below for a reference of the field impacts.

TMS Operation

OpenTrack Endpoint

Request Type

Response

Start new container tracking session

Track a Container

POST

201: Success,

400: Tracking request rejected,

429: Usage error,
500: Server error

TMS fields sent in Track a Container Request

Object

Field

Type

OpenTrack Field

TMS Admin → Credentials

Master Bill Tracking

True/False

trackOnlyRequestedContainers

Container

Container Number

Text(80)

customFields → containerReferences

Container

Master Bill of Lading Number

Formula (Text)

masterBillNumber

Container

SCAC

Text(6)

scacCode

Container

SFID

SFID

containerReferences

Sample Track a Container Request Payload

{
  "settings": {
    "trackOnlyRequestedContainers": true
  },
  "scacCode": "ONEY",
  "referenceNumbers": {},
  "masterBillNumber": "ONEYHANFE1934400",
  "customFields": {
    "containerReferences": [
      "a0icb000004TgegAAC",
      "true"
    ]
  }
}

Sample Track a Container Response Payload

{
  "account": {
    "domain": "acme.com",
    "region": "LAX"
  },
  "timestamp": "2026-02-24T14:03:28.924Z",
  "containerId": "MRKU2642087",
  "completionReason": "string",
  "scacCode": "MRKU",
  "masterBillNumber": "MAEU589677982",
  "masterBill": {
    "number": "string",
    "referenceNumbers": [
      {
        "name": "assigneeId",
        "value": "branch-1"
      }
    ]
  },
  "tradeType": "import",
  "steamshipLine": "Maersk",
  "vessel": {
    "name": "MAERSK EMERALD",
    "imo": "9347566",
    "mmsi": "538007481",
    "operator": {
      "name": "ONE",
      "scacCode": "ONEY"
    }
  },
  "currentVessel": {
    "name": "MAERSK EMERALD",
    "imo": "9347566",
    "mmsi": "538007481",
    "operator": {
      "name": "ONE",
      "scacCode": "ONEY"
    }
  },
  "loadingVessel": {
    "name": "MAERSK EMERALD",
    "imo": "9347566",
    "mmsi": "538007481",
    "operator": {
      "name": "ONE",
      "scacCode": "ONEY"
    }
  },
  "loadingVoyageNumber": "string",
  "voyageNumber": "string",
  "containerSize": "FORTY_FT",
  "containerType": "DRY",
  "grossWeight": 0,
  "itNumber": "string",
  "status": "AVAILABLE",
  "carrierReleasedDate": "2026-02-24T14:03:28.924Z",
  "customsReleasedDate": "2026-02-24T14:03:28.924Z",
  "etaAtTerminal": "2026-02-24T14:03:28.924Z",
  "etdFromOrigin": "2026-02-24T14:03:28.924Z",
  "earlyReturnDate": "2026-02-24T14:03:28.924Z",
  "cutoffDate": "2026-02-24T14:03:28.924Z",
  "railEarlyReturnDate": "2026-02-24T14:03:28.924Z",
  "railCutoff": "2026-02-24T14:03:28.924Z",
  "shippingInstructionCutoff": "2026-02-24T14:03:28.924Z",
  "lastFreeDay": "2026-02-24T14:03:28.924Z",
  "lineLastFreeDay": "2026-02-24T14:03:28.924Z",
  "detentionLastFreeDay": "2026-02-24T14:03:28.924Z",
  "appointmentDate": "2026-02-24T14:03:28.924Z",
  "demurrageOwedAtPort": 250,
  "demurrageOwedAtPortDecimal": 25000,
  "demurrageIncurred": 250,
  "demurrageIncurredDecimal": 25000,
  "origin": {
    "name": "string",
    "type": "port",
    "unlocode": "string",
    "timezone": "string",
    "coordinates": {
      "latitude": 40.678858019,
      "longitude": -74.118213003
    }
  },
  "originPort": {
    "name": "string",
    "type": "port",
    "unlocode": "string",
    "timezone": "string",
    "coordinates": {
      "latitude": 40.678858019,
      "longitude": -74.118213003
    }
  },
  "terminalAtPortOfDischarge": "PCT",
  "destinationPort": {
    "name": "string",
    "type": "port",
    "unlocode": "string",
    "timezone": "string",
    "coordinates": {
      "latitude": 40.678858019,
      "longitude": -74.118213003
    }
  },
  "finalDestination": {
    "name": "string",
    "type": "port",
    "unlocode": "string",
    "timezone": "string",
    "coordinates": {
      "latitude": 40.678858019,
      "longitude": -74.118213003
    }
  },
  "currentLocation": {
    "name": "string",
    "type": "port",
    "unlocode": "string",
    "timezone": "string",
    "coordinates": {
      "latitude": 40.678858019,
      "longitude": -74.118213003
    }
  },
  "lastKnownPosition": {
    "coordinates": {
      "latitude": 40.678858019,
      "longitude": -74.118213003
    }
  },
  "lastKnownPositionDate": "2026-02-24T14:03:28.924Z",
  "terminalAtDestinationPort": {
    "name": "TTI",
    "address": "301 Mediterranean Way, Long Beach, CA 90802, United States",
    "firmsCode": "Z952"
  },
  "terminalAtOriginPort": {
    "name": "TTI",
    "address": "301 Mediterranean Way, Long Beach, CA 90802, United States",
    "firmsCode": "Z952"
  },
  "yardLocation": "E7W",
  "holds": [
    {
      "type": "Terminal",
      "code": "TMF",
      "remarks": "Please pay online",
      "amountDue": 200,
      "reportedAt": "2026-02-24T14:03:28.924Z",
      "resolvedAt": "2026-02-24T14:03:28.924Z"
    }
  ],
  "timeline": [
    {
      "milestone": "AVAILABLE",
      "location": {
        "name": "string",
        "type": "port",
        "unlocode": "string",
        "timezone": "string",
        "coordinates": {
          "latitude": 40.678858019,
          "longitude": -74.118213003
        }
      },
      "timestamp": "2026-02-24T14:03:28.924Z",
      "vessel": {
        "name": "MAERSK EMERALD",
        "imo": "9347566",
        "mmsi": "538007481",
        "operator": {
          "name": "ONE",
          "scacCode": "ONEY"
        }
      }
    }
  ],
  "etaAtDestination": "2026-02-24T14:03:28.924Z",
  "etnAtDestination": "2026-02-24T14:03:28.924Z",
  "isRailMove": true,
  "railCarrier": {
    "name": "UNION PACIFIC RAILROAD COMPANY",
    "scacCode": "UP"
  },
  "finalRailStation": {
    "name": "GLOBAL 4",
    "fsac": "72804",
    "unlocode": "USCHI",
    "firmsCode": "I206"
  },
  "lastFreeDayAtRailStation": "2026-02-24T14:03:28.924Z",
  "demurrageOwedAtRailStation": 250,
  "demurrageIncurredAtRailStation": 250,
  "customFields": {
    "customer": "CustomerABC",
    "poNumber": "PO12345"
  },
  "trackingPage": "string",
  "truckingCarrier": {
    "name": "Trucking Carrier INC",
    "scac": "TCI"
  },
  "dispatchedTruckingCarrier": {
    "name": "Trucking Carrier INC",
    "scac": "TCI"
  },
  "chassisNumber": "string",
  "pickupNumber": "string",
  "sealNumber": "string",
  "deliveryAppointmentDate": "2026-02-24T14:03:28.924Z",
  "receivingFacility": {
    "name": "2163 S Riverside Ave, Colton, CA 92324, USA",
    "firmsCode": "WBK5"
  }
}

TMS field updates from a Track a Container Response

Object

Field

Type

OpenTrack Field

Container

Appointment Date (D)

Date

appointmentDate

Container

Appointment Time (D)

Time

appointmentDate

Container

Carrier Release Date

Date

carrierReleaseDate

Container

Carrier Release Time

Time

carrierReleaseDate

Container

Container Status

Picklist

status

Container

Current Vessel

Text(50)

currentVessel → name

Container

Current Vessel IMO Number

Text(30)

currentVessel → imo

Container

Customer Container Tracking Link

URL(255)

trackingPage

Container

Customs Release Date

Date

customsReleasedDate

Container

Customs Release Time

Time

customsReleasedDate

Container

Demurrage Incurred

Number(16, 2)

demurrageIncurred

Container

Demurrage Incurred at Rail

Number(16, 2)

demurrageIncurredAtRailStation

Container

Demurrage Owed

Number(16, 2)

demurrageOwedAtPort

Container

Demurrage Owed at Rail

Number(16, 2)

demurrageOwedAtRailStation

Container

Destination Timezone

Picklist

finalDestination → timezone

Container

Document Cutoff Date

Date

shippingInstructionCutoff

Container

Document Cutoff Time

Time

shippingInstructionCutoff

Container

Earliest Return Date - Demurrage (L)

Date

earlyReturnDate

Container

Earliest Return Time - Demurrage (L)

Time

earlyReturnDate

Container

Estimated Arrival Date (D)

Date

etaAtTerminal

Container

Estimated Arrival Time (D)

Time

etaAtTerminal

Container

Estimated Departure Date (L)

Date

etdFromOrigin

Container

Estimated Departure Time (L)

Time

etdFromOrigin

Container

Final Rail Station Info

Text(50)

finalRailStation → name, firmsCode

Container

Geolocation

Geolocation

lastKnownPosition → coordinates → Latitude, Longitude

Container

Geolocation as of

Date/Time

lastKnownPositionDate

Container

Inland Transit Number

Text(30)

itNumber

Container

Is Rail Move

Checkbox

isRailMove

Container

Last Free Date - Demurrage (D)

Date

lastFreeDay

Container

Last Free Time - Demurrage (D)

Time

lastFreeDay

Container

Last Free Date - Detention (D)

Date

detentionLastFreeDay

Container

Last Free Time - Detention (D)

Time

detentionLastFreeDay

Container

Last Handling Facility Info

Text(50)

currentLocation → name, unlocode

Container

Loading Vessel

Text(50)

loadingVessel → name

Container

Loading Vessel IMO Number

Text(30)

loadingVessel → imo

Container

Origin Timezone

Picklist

orign → timezone

Container

Port of Discharge Geolocation

Geolocation

destinationPort → coordinates → Latitude, Longitude

Container

Port of Load Geolocation

Geolocation

originPort → coordinates → Latitude, Longitude

Container

Rail Carrier Name

Text(50)

railCarrier → name

Container

Rail Cutoff Date

Date

railCutoff

Container

Rail Cutoff Time

Time

railCutoff

Container

Rail Earliest Return Date

Date

railEarlyReturnDate

Container

Rail Earliest Return Time

Time

railEarlyReturnDate

Container

Rail Last Free Date - Demurrage (D)

Date

lastFreeDayAtRailStation

Container

Rail Last Free Time - Demurrage (D)

Time

lastFreeDayAtRailStation

Container

Receiving Facility Info

Text(50)

receivingFacility → name, firmsCode

Container

Route Information

Long Text Area(500)

origin → name, origin → unlocode, finalDestination → name, finalDestination → unlocode

Container

Seal Number

Text(30)

sealNumber

Container

SFID

SFID

customFields

Container

SL Last Free Date - Demurrage (D)

Date

lineLastFreeDay

Container

SL Last Free Time - Demurrage (D)

Time

lineLastFreeDay

Container

Steamship Line

Text(30)

steamshipLine

Container

Terminal Cut-Off Date (L)

Date

cuoffDate

Container

Terminal Cut-Off Time (L)

Time

cutoffDate

Container

Terminal of Discharge Info

Text(50)

terminalAtDestinationPort → name, address, firmsCode

Container

Terminal of Load Info

Text(50)

terminalAtOriginPort → name, address, firmsCode

Container

Trade Type

Picklist

tradeType

Container

Trucking Carrier Name

Text(50)

truckingCarrier → name

Container

Vessel

Text(100)

vessel → name

Container

Vessel IMO Number

Text(30)

vessel → imo

Container

Voyage Number

Text(30)

voyageNumber

Container

Yard Location Info

Text(50)

yardLocation

Container Event

Container Event Name

Text(80)

timeline → milestone

Container Event

Event Date

Date

timeline → timestamp

Container Event

Event Time

Time

timeline → timestamp

Container Event

Geolocation

Geolocation

timeline → location → Coordinates → latitude, longitude

Container Event

Is Estimate

Checkbox

timeline → status

Container Event

Location Summary

Text(100)

timeline → location → name, type, unlocode

Container Event

Timezone

Picklist

timeline → location → timezone

Hold

Amount Due

Number(16, 2)

holds → amountDue

Hold

Code

Text Area(255)

holds → code

Hold

Comments

Long Text Area(500)

holds → remarks

Hold

Reported Datetime

Date/Time

holds → reportedAt

Hold

Resolved Datetime

Date/Time

holds → resolvedAt

Hold

Type

Text(50)

holds → type

The TMS attempts to parse information from the OpenTrack response payload to populate the following fields. When a value is already present in the fields below, they are not overwritten with values received from OpenTrack. The field values entered in the TMS are retained.

  • Port/Terminal of Discharge

  • Port/Terminal of Discharge Timezone

  • Port/Terminal of Load

  • Port/Terminal of Load Timezone

The Account fields in the table below are used for matching the Container Port/Terminal of Discharge or Load fields to OpenTrack payload values.

Object

Field

Type

OpenTrack Field

Account

Account Name

Name

destinationPort → name, finalDestination → name,
origin → name,
originPort → name

Account

UN Location Code

Text(6)

destinationPort → unlocode, finalDestination → unlocode, origin → unlocode,
originPort → unlocode

See OpenTrack documentation here.

Tracking Push Events

Push events published to the OpenTrack webhook are identical to the Track a Container payload response. As the container moves, updates are sent from OpenTrack and processed by the TMS.

The container SFID is included in the Start Container Tracking call outlined above as a containerReferences field value. This value is used to match webhook events from OpenTrack to the appropriate containers.

  • If Master Bill Tracking is Checked, but Individual Container Tracking is not, containers are matched based on the Container Number field.

    • If no containers or multiple containers match to a single Container Number value, an error is generated and saved as a Queued Transaction.

OpenTrack sends validation errors that, when processed, are stored on the Container record in the TMS. The following fields are updated.

  • The Container Status Comments field is updated with the error text from OpenTrack.

  • The Container Status field is set to Exception.

  • The Tracking field is set to Off.

A container tracking session is automatically ended when any of the values listed in the table below are received in a push event from OpenTrack.

Note: Tracking sessions cannot be stopped manually.

When the tracking session is ended prematurely, the Container Status updates to Tracking Stop and the Container Status Comments field is populated with the tracking completion reason.

When the final milestone is received from OpenTrack, the tracking session is complete and the Container Status updates to Tracking Complete.

See OpenTrack endpoint documentation for more information.

Integration Reference

A list of commonly used Terminals with the UN/LOCODE values is provided here for creating Seaport Accounts.

Tracking Completion Reasons

The following table contains the values and descriptions provided by OpenTrack that end a container tracking session.

OpenTrack Value

Description

reachedLastReportableMilestone

The container has reached the expected final milestone in its journey. Usually this is EMPTY_RETURNED, with the exception of carriers which don't report EMPTY RETURNED.

noMoreReports

The steamship line has stopped returning data for this container on this master bill.

unsupportedTradeType

OpenTrack supports Import, Export, and International shipments, but inland Domestic shipments (inland between two points in the US) are not supported.

invalidTradeTypeForAccount

When the tradeType of the container does not match the tradeType of your account. If your account is set to Imports only, then this completionReason can occur if you track an Export, for example.

timeOutAtAlternateMilestone

We received the same status from the ocean carrier for over 55 days and have terminated tracking.

trackingCanceled

Tracking was canceled by someone on your team.

containerLost

The steamship line cannot locate this container.

containerDamaged

The steamship line has indicated that this container has been damaged.

outdatedShipment

This container is an old shipment.

newVoyageHasStarted

The steamship line has reported that this container is on a new voyage with a new master bill.

containerMovedToNewMbl

This container was moved to a new master bill.

bookingCanceled

The container's booking has been canceled.

containerStripped

The cargo has been unloaded from this container mid-voyage (at a transshipment or destination port), leaving it inactive with no further tracking updates. The shipment may continue in a different container.

Container Timezone Settings

The following table outlines how Container field values are populated setting the timezone based on Account location or OpenTrack payload values. The payload values populate the Container Destination Timezone and Origin Timezone fields in UTC. The value of the Container Is Rail Move field is also considered and sometimes determines the source for setting the timezone value.

Container Fields

Is Rail Move

Timezone Source

Appointment Date (D), Appointment Time (D)

Checked  

finalDestination → timezone (OpenTrack)

Appointment Date (D), Appointment Time (D)

Unchecked

Port/Terminal of Discharge

Carrier Release Date, Carrier Release Time

Checked

finalDestination → timezone (OpenTrack)

Carrier Release Date, Carrier Release Time

Unchecked

Port/Terminal of Discharge

Customs Release Date, Customs Release Time

Checked

finalDestination → timezone (OpenTrack)

Customs Release Date, Customs Release Time

Unchecked

Port/Terminal of Discharge

Document Cutoff Date, Document Cutoff Time

origin → timezone (OpenTrack)

Estimated Arrival Date (D), Estimated Arrival Time (D)

Port/Terminal of Discharge

Last Free Date - Demurrage (D), Last Free Time - Demurrage (D)

Port/Terminal of Discharge

Last Free Date - Detention (D), Last Free Time - Detention (D)

Checked

finalDestination → timezone (OpenTrack)

Last Free Date - Detention (D), Last Free Time - Detention (D)

Unchecked

Port/Terminal of Discharge

Rail Cutoff Date, Rail Cutoff Time

origin → timezone (OpenTrack)

Rail Earliest Return Date, Rail Earliest Return Time

origin → timezone (OpenTrack)

Rail Last Free Date - Demurrage (D), Rail Last Free Time - Demurrage (D)

finalDestination → timezone (OpenTrack)

SL Last Free Date - Demurrage (D), SL Last Free Time - Demurrage (D)

Checked

finalDestination → timezone (OpenTrack)

SL Last Free Date - Demurrage (D), SL Last Free Time - Demurrage (D)

Unchecked

Port/Terminal of Discharge

Earliest Return Date - Demurrage (L), Earliest Return Time - Demurrage (L)

Port/Terminal of Load

Estimated Departure Date (L), Estimated Departure Time (L)

Port/Terminal of Load

Terminal Cut-Off Date (L), Terminal Cut-Off Time (L)

Port/Terminal of Load

Route and Terminal Formatting

Route Information

The Container Route Information field is formatted in the following order and format.

  1. Origin

  2. Origin Port

  3. Destination Port

  4. Final Destination

<origin>: name - unlocode (type)

Example

Origin: Los Angeles Lighting - USLAX (locality)

Note that the UN/LOCODE value is only included when received from OpenTrack.

Terminal Information

The Container Terminal of Discharge Info and Terminal of Load Info is formatted as shown.

Name - FirmsCode (address)

Example

BNSF Terminal - Z978 (100 Address Lane, Citytown, IL 60000)

Container and Rail Milestones

Container Milestones

Milestone

Description

EMPTY OUTGATED

Container empty outgated at shipper at origin.

FULL INGATED

Container full ingated from shipper at origin.

LOADED ON BARGE AT ORIGIN

Container loaded onto barge at origin.

BARGE DEPARTED FROM ORIGIN

Container departed from origin to port of lading.

BARGE BERTHED AT ORIGIN PORT

Container berthed at port of lading.

DISCHARGED FROM BARGE AT ORIGIN PORT

Container discharged from barge at port of lading.

LOADED

Container loaded onto vessel at port of lading (ATD).

VESSEL DEPARTED

Container’s vessel has departed from origin at port of lading (ATD).

VESSEL ARRIVED AT TRANSSHIPMENT PORT

Container’s vessel has arrived at transshipment port anchorage area.

VESSEL BERTHED AT TRANSSHIPMENT PORT

Container’s vessel has berthed at transshipment port terminal.

DISCHARGED AT TRANSSHIPMENT PORT

Container discharged at transshipment port.

LOADED AT TRANSSHIPMENT PORT

Container loaded at transshipment port.

VESSEL DEPARTED FROM TRANSSHIPMENT PORT

Container’s vessel has departed from transshipment port.

VESSEL ARRIVED

Container’s vessel has arrived at final port of discharge anchorage area.

VESSEL BERTHED

Container’s vessel has berthed at terminal at final port of discharge (this is the true vessel ATA).

DISCHARGED

Container discharged from vessel at terminal at final port of discharge.

LOADED ON BARGE AT DESTINATION PORT

Container loaded onto barge at port of discharge.

BARGE DEPARTED FROM DESTINATION PORT

Container departed from port of discharge to final destination.

BARGE BERTHED AT DESTINATION

Container berthed at final destination.

DISCHARGED FROM BARGE AT DESTINATION

Container discharged from barge at final destination.

AVAILABLE

Container available for pick at terminal.

FULL OUTGATED

Container full outgated from terminal.

FULL INGATED TO OFFDOCK FACILITY

Container full ingated at off-dock facility.

AVAILABLE AT OFFDOCK FACILITY

Container available for pick up at off-dock facility.

FULL OUTGATED FROM OFFDOCK FACILITY

Container full outgated from off-dock facility.

FULL DROPPED OFF AT TRUCKER YARD

Container full dropped off at trucker yard.

FULL PICKED UP FROM TRUCKER YARD

Container full picked up from trucker yard.

DELIVERED

Container delivered to final destination.

EMPTY READY FOR PICKUP

Container empty available for pick up at final destination.

EMPTY PICKED UP FOR RETURN

Container empty picked up at final destination.

EMPTY DROPPED OFF AT TRUCKER YARD

Container empty dropped off at trucker yard.

EMPTY PICKED UP FROM TRUCKER YARD

Container empty picked up from trucker yard.

EMPTY RETURNED

Container ingated empty to terminal.

Rail Milestones

Port

Milestone

Description

Origin

FULL INGATED AT ORIGIN RAIL FACILITY

Container full ingated from shipper at origin rail facility.

Origin

LOADED ON RAIL AT ORIGIN

Container placed on rail car to the ocean port of loading.

Origin

DEPARTED ON RAIL FROM ORIGIN

Container departed on rail to the ocean port of loading.

Origin

ARRIVED AT ORIGIN PORT RAIL FACILITY

Container arrival at rail facility of the ocean port of loading.

Origin

UNLOADED FROM RAIL AT ORIGIN PORT

Container deramped from rail at the ocean port of loading.

Destination

FULL INGATED TO RAIL FACILITY

Container ingated at departure ramp facility.

Destination

LOADED ON RAIL

Container placed on rail car to destination.

Destination

DEPARTED ON RAIL

Container departed on rail to final destination.

Destination

ARRIVED AT RAIL FACILITY

Container arrival at final rail facility.

Destination

UNLOADED FROM RAIL

Container deramped from rail.

Destination

AVAILABLE AT RAIL FACILITY

Container was released by customs.

Destination

FULL OUTGATED FROM RAIL FACILITY

Container outgated from final rail facility.

Integration Field Mapping

The following table contains fields that are referenced in the calls to and payloads received from OpenTrack.

Object

Field

Type

OpenTrack Field

Account

Account Name

Name

destinationPort → name, finalDestination → name,
origin → name,
originPort → name

Account

UN Location Code

Text(6)

destinationPort → unlocode, finalDestination → unlocode, origin → unlocode,
originPort → unlocode

Container

Appointment Date (D)

Date

appointmentDate

Container

Appointment Time (D)

Time

appointmentDate

Container

Carrier Release Date

Date

carrierReleaseDate

Container

Carrier Release Time

Time

carrierReleaseDate

Container

Container Number

Text(80)

customFields → containerReferences

Container

Container Status

Picklist

status

Container

Current Vessel

Text(50)

currentVessel → name

Container

Current Vessel IMO Number

Text(30)

currentVessel → imo

Container

Customer Container Tracking Link

URL(255)

trackingPage

Container

Customs Release Date

Date

customsReleasedDate

Container

Customs Release Time

Time

customsReleasedDate

Container

Demurrage Incurred

Number(16, 2)

demurrageIncurred

Container

Demurrage Incurred at Rail

Number(16, 2)

demurrageIncurredAtRailStation

Container

Demurrage Owed

Number(16, 2)

demurrageOwedAtPort

Container

Demurrage Owed at Rail

Number(16, 2)

demurrageOwedAtRailStation

Container

Destination Timezone

Picklist

finalDestination → timezone

Container

Document Cutoff Date

Date

shippingInstructionCutoff

Container

Document Cutoff Time

Time

shippingInstructionCutoff

Container

Earliest Return Date - Demurrage (L)

Date

earlyReturnDate

Container

Earliest Return Time - Demurrage (L)

Time

earlyReturnDate

Container

Estimated Arrival Date (D)

Date

etaAtTerminal

Container

Estimated Arrival Time (D)

Time

etaAtTerminal

Container

Estimated Departure Date (L)

Date

etdFromOrigin

Container

Estimated Departure Time (L)

Time

etdFromOrigin

Container

Final Rail Station Info

Text(50)

finalRailStation → name, firmsCode

Container

Geolocation

Geolocation

lastKnownPosition → coordinates → Latitude, Longitude

Container

Geolocation as of

Date/Time

lastKnownPositionDate

Container

Inland Transit Number

Text(30)

itNumber

Container

Is Rail Move

Checkbox

isRailMove

Container

Last Free Date - Demurrage (D)

Date

lastFreeDay

Container

Last Free Time - Demurrage (D)

Time

lastFreeDay

Container

Last Free Date - Detention (D)

Date

detentionLastFreeDay

Container

Last Free Time - Detention (D)

Time

detentionLastFreeDay

Container

Last Handling Facility Info

Text(50)

currentLocation → name, unlocode

Container

Loading Vessel

Text(50)

loadingVessel → name

Container

Loading Vessel IMO Number

Text(30)

loadingVessel → imo

Container

Master Bill of Lading Number

Formula (Text)

masterBillNumber

Container

Origin Timezone

Picklist

orign → timezone

Container

Port of Discharge Geolocations

Geolocation

destinationPort → coordinates → Latitude, Longitude

Container

Port of Load Geolocation

Geolocation

originPort → coordinates → Latitude, Longitude

Container

Rail Carrier Name

Text(50)

railCarrier → name

Container

Rail Cutoff Date

Date

railCutoff

Container

Rail Cutoff Time

Time

railCutoff

Container

Rail Earliest Return Date

Date

railEarlyReturnDate

Container

Rail Earliest Return Time

Time

railEarlyReturnDate

Container

Rail Last Free Date - Demurrage (D)

Date

lastFreeDayAtRailStation

Container

Rail Last Free Time - Demurrage (D)

Time

lastFreeDayAtRailStation

Container

Receiving Facility Info

Text(50)

receivingFacility → name, firmsCode

Container

SCAC

Text(6)

scacCode

Container

Seal Number

Text(30)

sealNumber

Container

SFID

SFID

customFields

Container

SL Last Free Date - Demurrage (D)

Date

lineLastFreeDay

Container

SL Last Free Time - Demurrage (D)

Time

lineLastFreeDay

Container

Steamship Line

Text(30)

steamshipLine

Container

Terminal Cut-Off Date (L)

Date

cuoffDate

Container

Terminal Cut-Off Time (L)

Time

cutoffDate

Container

Terminal of Discharge Info

Text(50)

terminalAtDestinationPort → name, firmsCode

Container

Terminal of Load Info

Text(50)

terminalAtOriginPort → name, firmsCode

Container

Trade Type

Picklist

tradeType

Container

Trucking Carrier Name

Text(50)

truckingCarrier → name

Container

Vessel

Text(100)

vessel → name

Container

Vessel IMO Number

Text(30)

vessel → imo

Container

Voyage Number

Text(30)

voyageNumber

Container

Yard Location Info

Text(50)

yardLocation

Container Event

Container Event Name

Text(80)

timeline → milestone

Container Event

Event Date

Date

timeline → timestamp

Container Event

Event Time

Time

timeline → timestamp

Container Event

Geolocation

Geolocation

timeline → location → Coordinates → latitude, longitude

Container Event

Is Estimate

Checkbox

timeline → status

Container Event

Location Summary

Text(100)

timeline → location → name, type, unlocode

Container Event

Timezone

Picklist

timeline → location → timezone

Hold

Amount Due

Number(16, 2)

holds → amountDue

Hold

Code

Text Area(255)

holds → code

Hold

Comments

Long Text Area(500)

holds → remarks

Hold

Reported Datetime

Date/Time

holds → reportedAt

Hold

Resolved Datetime

Date/Time

holds → resolvedAt

Hold

Type

Text(50)

holds → type

TMS Admin → Credentials

Master Bill Tracking

True/False

trackOnlyRequestedContainers