Domestic Rail Visibility

Get OpenTrack's industry-leading rail visibility on shipments moving on domestic rail waybills.

📘

Domestic Rail Visibility is an add-on to OpenTrack. If you do not already have it enabled, please contact [email protected] to modify your subscription.

How It Works

Domestic Rail Visibility has simplified tracking requirements:

  1. You provide the equipment number only (container or railcar)
  2. OpenTrack automatically discovers the waybill number and railroad
  3. We fetch data directly from the relevant Class 1 railroad, or from traditional rail data aggregators for Class 2 and 3 carriers

No waybill or additional identifiers are required, just the equipment number.


Tracking via API

To track domestic rail equipment via API, use the /containers endpoint with only the equipment number.

POST https://api.opentrack.co/v1/containers/{containerId}

Replace {containerId} with your equipment number, for example EMHU1234567.

Here's an example request in cURL (replace EMHU1234567 in the url with your equipment number):

curl --request POST \
     --url https://api.opentrack.co/v1/containers/EMHU1234567 \
     --header 'accept: application/json' \
     --header 'content-type: application/json'

The request body is optional, but you can add one if you want to include custom fields to be stored on the equipment level in OpenTrack for later use.

Here's an example request that includes custom fields (replace EMHU1234567 in the url with your equipment number):

curl --request POST \
     --url https://api.opentrack.co/v1/containers/EMHU1234567 \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "customFields": {
    "customer": "Your Value"
  }
}
'

The equipment number in the path accepts both intermodal containers and non-containerized railcar equipment numbers. OpenTrack will automatically identify the equipment type and discover the active waybill, then automatically retrieve its data from the rail line.

Unlike international intermodal tracking, you do not need to provide a waybill number, carrier SCAC, or booking reference. Equipment number is all that's required.


Data Included

FieldDescription
railCarrierRailroad transporting the equipment to final rail facility
finalRailStationRail station at final destination (includes name, fsac, unlocode, firmsCode)
lastFreeDayAtRailStationDate by which equipment should be picked up to avoid demurrage fees
detentionLastFreeDayDate by which equipment should be returned to avoid detention per diem fees
etaAtDestinationETA to final rail facility
demurrageOwedAtRailStationAmount of demurrage currently owed at the final rail station
demurrageIncurredAtRailStationTotal amount of demurrage incurred at the final rail station
chassisNumberIdentifier of the chassis used to pull the container from the rail facility
containerSizeSize of the equipment (TWENTY_FT, FORTY_FT, FORTY_FT_HC, FORTY_FIVE_FT_HC)
containerTypeType of the equipment (DRY, FLAT_RACK, OPEN, REEFER, TANK, VENTILATED)
loadStatusEMPTY or LADEN. Tells an empty domestic rail voyage from a laden one. Omitted when unknown.
grossWeightGross weight of the container in kilograms

Milestones Included

Status ValueDescription
FULL_INGATED_TO_RAIL_FACILITYContainer ingated to departure ramp facility.
Also maps Release From Industry for non-containerized railcars.
LOADED_ON_RAILEquipment placed on rail car to destination
DEPARTED_ON_RAILEquipment departed on rail to final destination
ARRIVED_AT_RAIL_FACILITYEquipment arrival at final rail facility
UNLOADED_FROM_RAILEquipment deramped from rail
AVAILABLE_AT_RAIL_FACILITYEquipment was placed for release
Also maps Constructive Placement.
ACTUAL_PLACEMENTEquipment is placed and ready for pickup. Container and railcar voyages both report this milestone, and a domestic rail voyage often ends here.
FULL_OUTGATED_FROM_RAIL_FACILITYEquipment outgated from the final rail facility

Full and empty voyages

Empty and laden domestic rail voyages use the same milestone names. Do not use EMPTY_OUTGATED_FROM_RAIL_FACILITY or EMPTY_RETURNED to decide that a voyage is empty. Those milestones are not how an empty voyage is identified.

Read loadStatus on the container payload and on webhook data:

ValueMeaning
EMPTYEmpty voyage
LADENLaden voyage

loadStatus is omitted when it is not yet known.

A voyage often ends at ACTUAL_PLACEMENT. With continuous tracking, that voyage then closes because a new waybill started, and the next voyage is tracked on its own. The next voyage has its own loadStatus.

Contact support to enable empty voyage tracking in your account.

Continuous tracking for long-term leased or owned equipment

Continuous, long-term equipment tracking is available for owned or leased equipment. OpenTrack automatically detects the end of each voyage and restarts tracking on the new waybill.

How to start continuous tracking

First things first: Make sure you've contacted support to enable continuous tracking in your account.

To enable continuous tracking on a container, set the "leased" custom field to "true".

You can tag containers via API, bulk upload, or manually.

To stop continuous tracking on a container, you can also pass "leased": "false" in a similar way.

Via bulk upload or manually

Here's the guide to updating custom fields on containers via bulk upload and manually in-app.

Via API

Here's a sample POST container tracking request that shows how to set the "leased" flag on a container:

curl --location 'https://api.opentrack.co/v1/containers/NAHX123456' \
--header 'Content-Type: application/json' \
--header 'Opentrack-API-Key: ***' \
--data '
{
     "customFields": {
          "leased": "true"
     }
}
'


Did this page help you?