Skip to main content
FleetWorks’ track-and-trace system automates check calls to carriers, collecting location data, arrival times, and delivery information to improve operational efficiency and provide real-time visibility across your supply chain.

How It Works

Track-and-trace calls follow a simple lifecycle:
  1. Call Initiation: Based on a load’s next check times, the system schedules internal check calls. API calls are executed immediately upon request.
  2. Outbound Call: An AI-powered call is made to the carrier or driver at the scheduled time (for internal scheduling) or immediately (for API requests).
  3. Information Collection: The system collects key data points like current location, ETA, and check-in/out times.
  4. Data Delivery: Information is stored and can be sent to your TMS.
  5. Smart Escalation: Calls are automatically transferred to your staff when needed (late drivers, temperature issues, etc.).

Types of Track-and-Trace Calls

FleetWorks offers two types of track-and-trace calls:

Check Calls

Check calls are used to verify the current status and location of a shipment. They collect information about:
  • Current driver location
  • Estimated arrival times
  • Check-in/out status
  • Temperature readings for reefer loads
  • Bill of Lading status

Dispatch Calls

Dispatch calls are used to provide load information to drivers and verify they have the correct details. They:
  • Provide pickup details
  • Confirm the driver’s identity
  • Verify that the driver has the right equipment
  • Confirm temperature requirements for reefer loads
  • Generally, ensure the driver’s pickup will go smoothly

Pickup vs. Delivery Calls

The system supports both pickup and delivery tracking:

Pickup Tracking Calls

  • Focus on confirming driver is on route to pickup location
  • Ask about current location and ETA to the pickup
  • After pickup, verify loaded and unloaded times
  • For reefer loads, confirm temperature settings

Delivery Tracking Calls

  • Focus on delivery status and completion
  • Ask about current location and ETA to delivery
  • After delivery, verify unload time
  • Check for clean BOL or issues
  • For reefer loads, verify temperatures maintained

Multilingual Support

The check calls system provides seamless support for both English and Spanish-speaking drivers:
  1. The system picks up the driver’s language
  2. The conversation continues in the driver’s preferred language
  3. All data collection and escalation logic works identically regardless of language
  4. Logged data is always in English
Multilingual support will be added to dispatch calls system in the future.

Smart Escalation

Calls are automatically transferred to your team when human assistance is needed:
  • Driver is running late to an appointment
  • Temperature discrepancies on reefer loads
  • Bill of Lading (BOL) issues or exceptions
  • Any situation requiring human judgment

Data Collected

All collected data is accessible via end of call webhooks and also viewable in the FleetWorks dashboard. The data collected varies based on the type of call:

Check Call Data

Check calls collect information about the current shipment status:
  • Current location of the driver
  • Estimated arrival time at next stop
  • Check-in and check-out times
  • BOL status (clean or with exceptions)
  • Reefer temperature for temperature-controlled loads
This is the shape of the data that will be sent to the “extractedData” field of the end of call webhook for check calls:
{
  escalatedReason: string | null;
  eta: string | null;
  checkInTime: string | null;
  checkOutTime: string | null;
  currentLocation: string | null;
  reeferTemp: number | null;
  onTimeForNextStop: boolean | null;
  bolClean: boolean | null;
  lumperFees: number | null;
  summary: string | null;
  loadNumber: string | null;
  isTransferred: boolean | null;
  customerResponded: boolean | null;
}
Example check call payload:
{
  "escalatedReason": null,
  "eta": "08/27/2025 14:30",
  "checkInTime": "08/26/2025 09:15",
  "checkOutTime": "08/26/2025 11:45",
  "currentLocation": "Atlanta, GA",
  "reeferTemp": 38.5,
  "onTimeForNextStop": true,
  "bolClean": true,
  "lumperFees": 0,
  "summary": "Caller confirmed check in and out times and is on pace for the next stop in Texas.",
  "loadNumber": "123456",
  "isTransferred": false,
  "customerResponded": true
}

Dispatch Call Data

Dispatch calls collect information to verify driver readiness:
  • Driver name verification (matches records)
  • MC number verification (matches carrier info)
  • Equipment type verification (correct for load)
  • Reefer temperature verification (if applicable)
  • Driver empty status and expected empty time
  • Current location and ETA to pickup
This is the shape of the data that will be sent to the “extractedData” field of the end of call webhook for dispatch calls:
{
  escalatedReason: string | null;
  calleeProvidedDriverNameOnFile: boolean | null;
  calleeProvidedMcNumberOnFile: boolean | null;
  driverEmpty: boolean | null;
  driverExpectedEmptyTime: string | null;
  calleeProvidedReeferTempOnFile: boolean | null;
  calleeProvidedEquipmentOnFile: boolean | null;
  eta: string | null;
  currentLocation: string | null;
  summary: string | null;
}
Example dispatch call payload:
{
  "escalatedReason": null,
  "calleeProvidedDriverNameOnFile": true,
  "calleeProvidedMcNumberOnFile": true,
  "driverEmpty": true,
  "driverExpectedEmptyTime": "08/26/2025 15:00",
  "calleeProvidedReeferTempOnFile": true,
  "calleeProvidedEquipmentOnFile": true,
  "eta": "08/26/2025 16:30",
  "checkInTime": null,
  "currentLocation": "Memphis, TN",
  "summary": "Driver confirmed identity and equipment. Will be empty at 3 PM and arrive for pickup by 4:30 PM."
}
Fields will be null if the corresponding question was not asked during the call.

Example Check Call Conversation

ASSISTANT: Hi, this is FleetWorks Logistics, calling about your load going to Lodi, California.

DRIVER: Hey.

ASSISTANT: Hey, are you still on your way to Mendota, California?

DRIVER: I'm I'm, uh, just passed Cromir. Don't you guys have me macro point?

ASSISTANT: Just manually verifying while I have you here. Cromir, California?

DRIVER: Yes sir.

ASSISTANT: Gotcha, Cromir, California. Let me log that. Cool, so your about 9 minutes away from Mendota?

DRIVER: No I did check-in already. At 11 PM.

ASSISTANT: You said 11 PM Pacific, right?

DRIVER: Yea. What was my appointment window starting?

ASSISTANT: Appointment window starts at 10 pm. Let me put in 11 pm for you, one sec. And have you loaded yet at Mendota?

DRIVER: Hang on.

ASSISTANT: Sure thing, take your time.

DRIVER: Yeah. I loaded I'm already on my way to Lodi.

ASSISTANT: Awesome, and what time did ya finish loading?

DRIVER: About 5 minutes ago.

ASSISTANT: That would be around 11:25 PM, right?

DRIVER: Something like that, sure.

ASSISTANT: Alright, uh. Let me put that in. Everything looks good. Are ya on track to make it to the next dropoff?

DRIVER: Yep.

ASSISTANT: And what's your reefer temp set at right now?

DRIVER: Set a 34 I think, but let me double check.

ASSISTANT: Alright.

DRIVER: Yeah. 34.

ASSISTANT: Great, let me put that in. Sorry, did you say 34 degrees?

DRIVER: No. No, sorry. 24.

ASSISTANT: Gotcha, let me update that real quick. Perfect, thanks for confirming that. Everything's all set on my end. Thanks for the update! Drive safe!

DRIVER: Okay.

Example Dispatch Call Conversation

ASSISTANT: Hi, this is FleetWorks Logistics, calling about your pickup in Memphis, Tennessee.

DRIVER: Yeah, what's up?

ASSISTANT: Hey, I need to confirm a few details we have. Can I get your name and MC number?

DRIVER: Sure, this is Robert. MC number is 478923.

ASSISTANT: One sec... can I get your ETA for the pickup?

DRIVER: Should be there around 3:30 this afternoon.

ASSISTANT: That's 3:30 PM today, September 5th?

DRIVER: Yeah, that's right.

ASSISTANT: One moment... Are you empty, and where are you right now?

DRIVER: Yeah I'm empty. Currently about 45 miles west of Memphis on I-40.

ASSISTANT: Can you tell me the reefer temp?

DRIVER: Should be set at 35 degrees.

ASSISTANT: Okay, logging that temp. Thank you for the update. Everything's been logged. Have a safe drive!

DRIVER: Alright, thanks.

Triggering Track & Trace Calls

Track & trace calls can be initiated by either campaigns or using the API.

Check Calls

You can trigger a track & trace call using the API endpoint. The request body must match the following schema:
{
  "toPhone": "+19876543210",  // Required: E.164 format
  "callType": "pickup",             // Required: "pickup" or "dropoff"
  "loadNumber": "L12345",          // Required: Your load reference
  "nextStopCity": "Chicago",      // Required
  "nextStopState": "IL",          // Required
  "nextStopApptStart": "2025-01-01T01:00:00Z",  // Required: ISO 8601 format
  "nextStopApptEnd": "2025-01-01T06:00:00Z",    // Required: ISO 8601 format
  "loadStops": [                   // Required: Minimum 2 stops
    {
      "type": "pickup",             // "pickup" or "dropoff"
      "address": {
        "city": "Chicago",
        "state": "IL",
        "country": "US",            // Optional
        "zip": "60601",             // Optional
        "timezone": "America/Chicago" // Optional
      },
      "windowStart": "2025-01-01T01:00:00Z",
      "windowEnd": "2025-01-01T06:00:00Z"     // Can be null
    },
    {
      "type": "dropoff",
      "address": {
        "city": "Los Angeles",
        "state": "CA"
      },
      "windowStart": "2025-01-02T08:00:00Z",
      "windowEnd": null
    }
  ],
  "reeferTemp": "34",              // Optional: Can be string or number
  "waitingAtFacility": false,     // Optional
  "trackingOperatorPhone": "+15559876543",  // Optional
  "metadata": {                    // Optional: Custom metadata for webhook mapping
    "internal_load_id": "ABC123",
    "customer_id": "12345",
    "priority": 1
  }
}
Read more on how to trigger a check call using the API.

Dispatch Calls

Use the dispatch call endpoint to provide load information to drivers:
{
  "toPhone": "+19876543210",      // Required: E.164 format
  "loadNumber": "L12345",         // Required: Your load reference
  "driverName": "John Smith",     // Required: Driver's name to verify
  "dotNumber": 1234567,           // Required: Carrier's DOT number
  "metadata": {                   // Optional: Custom metadata for webhook mapping
    "dispatch_id": "DISP-456",
    "internal_load_id": "ABC123",
    "priority": 1
  }
}
The dispatch call will:
  • Retrieve load details automatically from FleetWorks based on the loadNumber
  • Verify the driver’s identity matches the provided name
  • Verify the driver by their MC number
  • Confirm that the driver’s equipment (and reefer settings if applicable) are correct
Read more on how to trigger a dispatch call using the API.

Campaign-Based

Create a campaigns using the Track and Trace Check Call agent. Upload a CSV file with your load data to run multiple calls at once. The system automatically runs the track and trace calls and emails you a summary of the results when complete.

CSV Format

A sample CSV file can be downloaded from the Campaigns page of the Fleetworks dashboard. Your CSV should include the following columns: Required Columns:
ColumnDescriptionExample
toPhoneDriver/carrier phone number in E.164 format+19876543210
callTypeEither “pickup” or “dropoff”pickup
loadNumberYour load reference numberL12345
nextStopCityCity of the next stopChicago
nextStopStateState of the next stopIL
nextStopApptStartAppointment window start time (ISO 8601)2025-01-01T01:00:00Z
nextStopApptEndAppointment window end time (ISO 8601)2025-01-01T06:00:00Z
loadStopsJSON array of load stops (minimum 2 stops)See example below
Optional Columns:
ColumnDescriptionExample
reeferTempTarget trailer temperature34
waitingAtFacilityWhether driver is already at facilitytrue
trackingOperatorPhonePhone number for escalations+15559876543

Load Stops Format

The load_stops column should contain a JSON array with the following structure for each stop:
[
  {
    "type": "pickup",
    "address": {
      "street": "123 Main Street",
      "city": "Chicago",
      "state": "IL",
      "country": "US",
      "zip": "60601",
      "timezone": "America/Chicago"
    },
    "windowStart": "2025-01-01T01:00:00Z",
    "windowEnd": "2025-01-01T06:00:00Z"  // Can be null
  },
  {
    "type": "dropoff",
    "address": {
      "street": "456 Commerce Blvd",
      "city": "Los Angeles",
      "state": "CA",
      "country": "US",
      "zip": "90001",
      "timezone": "America/Los_Angeles"
    },
    "windowStart": "2025-01-02T08:00:00Z",
    "windowEnd": null
  }
]

Example CSV Row

to_phone,call_type,reefer_temp,waiting_at_facility,next_stop_appt_start,next_stop_appt_end,next_stop_city,next_stop_state,tracking_operator_phone,load_number,load_stops
+19876543210,pickup,,,2025-06-17T08:00:00Z,2025-06-17T12:00:00Z,Los Angeles,CA,,LOAD123456,"[{""type"":""pickup"",""address"":{""street"":""123 Industrial Way"",""city"":""Los Angeles"",""state"":""CA"",""country"":""US"",""zip"":""90001"",""timezone"":""America/Los_Angeles""},""windowStart"":""2025-06-17T08:00:00Z"",""windowEnd"":""2025-06-17T12:00:00Z""},{""type"":""dropoff"",""address"":{""street"":""456 Distribution Center Dr"",""city"":""Phoenix"",""state"":""AZ"",""country"":""US"",""zip"":""85001"",""timezone"":""America/Phoenix""},""windowStart"":""2025-06-18T10:00:00Z"",""windowEnd"":""2025-06-18T14:00:00Z""}]"
+19876543210,pickup,28,true,2025-06-16T09:00:00Z,2025-06-16T13:00:00Z,Chicago,IL,+19876543210,12345678,"[{""type"":""pickup"",""address"":{""street"":""789 Bay Area Blvd"",""city"":""San Francisco"",""state"":""CA"",""country"":""US"",""zip"":""94102"",""timezone"":""America/Los_Angeles""},""windowStart"":""2025-06-15T07:00:00Z"",""windowEnd"":""2025-06-15T11:00:00Z""},{""type"":""dropoff"",""address"":{""street"":""321 Mountain View Rd"",""city"":""Denver"",""state"":""CO"",""country"":""US"",""zip"":""80202"",""timezone"":""America/Denver""},""windowStart"":""2025-06-16T12:00:00Z"",""windowEnd"":""2025-06-16T16:00:00Z""},{""type"":""dropoff"",""address"":{""street"":""654 Gulf Coast Ave"",""city"":""Houston"",""state"":""TX"",""country"":""US"",""zip"":""77001"",""timezone"":""America/Chicago""},""windowStart"":""2025-06-17T09:00:00Z"",""windowEnd"":""2025-06-17T13:00:00Z""}]"
Note: In CSV format, JSON strings must have their quotes escaped by doubling them (e.g., "" instead of ").
I