TextLocate

Prev Next

The integration with TextLocate allows for sending and receiving text messages and location information to and from Drivers moving a Load. Tracking Loads may be completed using TextLocate or combined with other Load tracking integrations like MacroPoint or Trucker Tools.

Setup

Complete the following steps for configuring the integration with TextLocate to send and receive messages to Drivers.

Enable the TextLocate integration by completing the following steps:

  1. Navigate to TMS Admin.

  2. Select Credentials.

  3. Choose the Global Services tab.

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

  5. Check the Enabled box.

  6. Enter the User ID text field.

    1. The value entered into the User ID field is the Public Key portion of the Public-Private Key pair.

    2. This value is provided by TextLocate.

  7. Enter the Password 1 text field.

    1. The value entered into the Password 1 field is the Private Key portion of the Public-Private key pair.

    2. The Public-Private Key pair is provided by TextLocate.

  8. Check the Receive Updates box.

    1. This field enables the TMS Listener and creates the callback endpoint.

  9. Click the Save button when finished.

When the subscription with TextLocate is completed successfully, the Callback Endpoint Created field is Checked automatically. If the TextLocate are changed a new webhook subscription must be created.

  1. Uncheck Receive Updates field the to delete the old webhook.

  2. Click Save on the TextLocate credentials card.

  3. Check the Receive Updates field.

  4. Click Save on the credentials card to create a new webhook subscription.

User ID

Password 1

Password 2

Customer Number

Public Key

Private Key

The Queued Transaction must be running to perform some actions with the TextLocate integration.

TextLocate may send multiple tracking location updates. In order to process all location updates, TextLocate does not follow the Tracking Update Frequency field setting on TMS Admin → Configuration.

Add the TextLocate LWC to the Load Lightning Record Page where desired. The default Revenova Load Lightning Record Page includes a tab with the component.

Create an API user

Create an API User for the TextLocate integration.

Multiple integrations may require an API User. If an API User already exists in an org., use the existing API User.

  1. Navigate to Setup and then search for and click the Users link.

  2. Click the New User button and add the following:

    1. First Name: API

    2. Last Name: User (The First and Last Name fields may be any value, but should reference the API User for clarity.)

    3. Email: Set to the system admin’s email.

    4. Username: Change if necessary.

    5. User License: Salesforce Integration

    6. Profile: Minimum Access - API Only Integrations

  3. Click Save.

  • If necessary, update the Permission Set for the API user.

  • The API User requires a TMS license. If creating an API User for the first time, assign a TMS license to the API User.

See Salesforce documentation for additional information on creating API Users.

Remote Site Settings

If upgrading from a previous release of the TMS, check that the Remote Site Settings for the TextLocate integration URL are up to date.

  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 TextLocate and click the Edit link.

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

Service URL: https://api.textlocate.com

Test Service URL: https://api.textlocate.com

Profiles/Permissions

Add the following permissions to the profiles/permissions sets for users performing the following actions.

  1. Navigate to Setup → Home and search for Permission Sets.

  2. Select the appropriate permission set(s).

  3. Add full object and field permissions (including Read/Edit Access) for the following objects.

  4. Text Message

    1. Users require access to view text messages.

  5. Ping Schedule

    1. Users require access to create a schedule of ping requests.

Message Prompts

Configure the settings and message prompts a Driver receives from the TextLocate website.

It is recommended to Uncheck the Ask for In/Out Time on Pickup and Delivery setting on the TextLocate settings page. This removes the prompt to Drivers to upload the Proof of Delivery document via the phone web browser. The TMS integration with TextLocate does not support this feature.

The Load ID is sent to TextLocate to reference the updates for each Load.

The Load Number field is sent in the TextLocate “Custom Field 2.” For automated responses, use the “Custom Field 2” tag to include the Load Number.

An example message is shown below.

Load Page Layout

The TextLocate component is found on the default Revenova Load Lightning Record page. If using a custom Load page, add the component where desired.

Send text messages to and request location updates from the Driver on the Load.

  1. Enter the Driver Name and Driver Phone fields to the Load detail section.

  2. Choose the Upload Load to TextLocate button on the TextLocate tab.

TextLocate LWC

The TextLocate component contains the Driver Name and Driver Phone displayed in the top left. The buttons in the top right perform the following actions.

  • Keep Refreshing: Click this button to continuously listen for incoming messages while viewing the LWC.

    • Messages refresh and appear when returning to the LWC from other tabs or Loads.

    Refresh: Click this button to refresh any new messages, images, or location updates from the Driver.

    • Drivers must send images via text message and not through the phone browser.

  • Update Driver Phone: Enter new field values on the Load Detail section for the Driver Name and/or Driver Phone. Click this button to update the fields with TextLocate.

  • Toggle Text Events: When the button is selected (blue background), location updates and text messages are displayed in the component.

    • Unselect the button (gray background) to only display text messages in the component.

  • Send Location Request: This button sends a link to the Driver’s phone requesting the current location in the phone’s browser.

A Load may only have one phone number associated with it. Messages cannot be sent to multiple phone numbers.

Enter messages from the Text tab and click the Send button to send the message to the Driver.

Messages to the Driver appear in a blue field. Response messages from the Driver appear in a gray field. Additional message appear in the component confirming that a file was received from the Driver.

Images sent by the Driver are stored on the Load in the Files & Attachment section on the Documents tab.

All files received from the Driver are saved as images to the Load.

Location Requests

Location requests are displayed in the text tab. The Load location is set according to the location received from the Driver. An example of the request the Driver receives is shown below.

Testing Alt Text

Schedule Requests

Location requests may be scheduled in advance for Drivers to automatically receive location requests. These requests may be set on intervals set on the component.

  1. Select the Schedule tab on the component.

  2. Enter values in the Start Date and End Date and Times.

  3. Add the Interval (Hours) to set the frequency requests are sent to the Driver.

  4. Include Quiet Time Start and End times to prevent Drivers from receiving request updates in the scheduled period.

    1. TextLocate supports quiet time durations between 2 and 24 hours.

    2. A reminder message is sent when a Driver does not respond to a location request within an hour. These reminder messages do not follow the Quiet Time settings.

Loads may also be tracked with TextLocate from the Load Tracking Administration modal on the Carrier Banner.

Enter fields on the Load Tracking Administration modal first. These values automatically populate into the TextLocate LWC. Stop Status updates are based on the geolocation of the driver.

The Driver Phone, Driver Name, and Start Day fields populate automatically. The Start Day and Start Time are set according to the first Stop Appointment Time or Shipping/Receiving Hours.

Enter a Timezone and select a Tracking Update Interval (in hours).

The Quiet Time Start and End fields control when Drivers do not receive location update requests. Enter values as necessary.

Load locations update based on the following cases.

Two Stop Loads (1 pickup, 1 delivery)

When a Driver sends a status of At Pickup, Stop 1 is updated.

  • The Arrived Date and Time for Stop 1 is set to the current date.

  • The Stop Status is set to Arrived.

When a Driver sends a status of Delivered, the last Stop is updated.

  • The Stop Departed Date and Time fields are set.

  • The Stop Status is set to Departed.

Multi-Stop Loads

TextLocate does not include the Stop Number when sending location updates from Drivers. Additional TMS logic is used to determine the current stop.

When a Driver sends a status of At Pickup, Stop 1 is updated.

  • The Arrived Date and Time for Stop 1 is set to the current date.

  • The Stop Status is set to Arrived.

When a Driver sends a status of Delivered, the last Stop is updated.

  • The Stop Departed Date and Time fields are set.

  • The Stop Status is set to Departed.

For multi-Stop Loads, when a Driver submits a status of At Pickup or Delivered, the appropriate Stop is determined by matching the Driver location to the Stop. Locations are not matched to Stops in the following scenarios.

Location Mismatches

Driver locations are matched to Stops based on the following criteria.

In cases when a location update does not match to a stop, the Stop Pickup and Delivery Date/Time and Status fields do not update.

  • Stop location matches are based on the Country, City, and State when a Stop has an Address.

  • Stop location matches are based on Geolocation and the Driver must be within a 1 mile radius of the coordinates.

When location mismatches occur and Stop information is not updated, the Load Last Reported Location field does update.

Time Zones

The following logic is used to determine the time zone for a Stop location.

  1. Time Zones are first set based on the Stop object Timezone field.

  2. The Stop location Account Timezone field is confirmed to match the Stop Timezone.

  3. If one or both fields do not contain a value for a time zone, GMT is used for the Stop Departure Date.

In Transit Updates

In Transit updates are updated according to the Last Reported Location logic. The location of the Driver phone browser is used to update the Last Reported Location. When location updates are received in the TMS, the text tab displays that information.

The Stop Miles Away field is updated when an In Transit update is received from the Driver.

Location updates received from the Driver trigger the following customer tracking updates.

Text messages and/or location updates may appear multiple times in the TextLocate LWC. This is due to TextLocate sending multiple status updates when a Driver performs certain actions with the TextLocate link.

API Calls

Performing actions in the TextLocate LWC initiates calls to the TextLocate end points. See individual the individual calls below for information required to send and/or receive in each API call.

Login

The Login Operation sends the org credentials to TextLocate.

TMS Action

TextLocate Endpoint

Request Type

Response

Login

Authenticate

POST

200: Success

No TMS fields are sent in the Login request.

No TMS fields are updated from the Login response.

Session tokens are returned in the response.

Subscribe

The Subscribe operation subscribes to a webhook to receive message updates from TextLocate.

TMS Action

TextLocate Endpoint

Request Type

Response

Webhook/subscribe

POST

200: Success

TMS fields sent in the Subscribe request.

Object

Field

Type

TextLocate Field

TMS Admin → Configuration

Inbound API Community URL

URL

receivingUrl

No TMS fields updated from the Subscribe response.

Get Subscriptions

The Get Subscriptions Operation returns a list of active webhook subscriptions from TextLocate.

TMS Operation

TextLocate Endpoint

Request Type

Response

Webhook

GET

200: Success

No TMS fields sent in the Get Subscriptions request.

No TMS fields are updated in the Get Subscriptions response.

Upload Load

The Upload Load Operation sends the Load to TextLocate for messaging.

TMS Operation

TextLocate Endpoint

Request Type

Response

Load Tracking Administration LWC On button;
TextLocate LWC Upload Load button.

Load

POST

200: Success

TMS Fields sent in the Upload Load request.

Object

Field

Type

TextLocate Field

“Upload”

action

“Standard”

messageService

Load

Driver Name

Text(50)

firstName

Load

Driver Name

Text(50)

lastName

Load

Driver Phone

Phone

phoneNumber

Load

Load Number

Name

custom2

Load

SFID

SFID

loadId

Stop

(Last Stop) Address

Formula (Text)

destinationAddress

Stop

(First Stop) Address

Formula (Text)

originAddress

Stop

(Last Stop) Expected Date

Date

destinationTime

Stop

(First Stop) Expected Date

Date

originTime

Time zones are determined for each Stop based on the following logic.

  1. Stop object record.

  2. Stop location Account time zone.

  3. Noon GMT (Salesforce default).

TMS field updates from the Upload Load response.

Object

Field

Type

TextLocate Field

Load

Text Messaging Id

Text(20)

textLocateId

Sample Request Payload

{
  "loadId": "a1zEc000001BsVxIAK",
  "phoneNumber": "2223334444",
  "firstName": "Test",
  "lastName": "Driver",
  "custom2": "L-16",
  "action": "Upload",
  "messageService": "Standard",
  "originAddress": "2333 Waukegan Rd., Bannockburn, Illinois 60015",
  "originTime": "2025-05-09T12:00:00Z",
  "destinationAddress": "415 W. Ocean Blvd, Long Beach, California 90802",
  "destinationTime": "2025-05-13T12:00:00Z"
}

Sample Response Payload

{
  "driver": {
    "driverId": 1489075,
    "phoneNumber": "+12223334444",
    "whatsAppConversationExpiration": "0001-01-01T00:00:00",
    "whatsappConversationStatus": 0,
    "language": "en",
    "validationErrors": null,
    "lastValidation": "2025-04-30T02:02:23.646309Z",
    "validationService": 0,
    "type": "mobile",
    "carrierName": "Verizon Wireless",
    "mobileCountryCode": 310,
    "mobileNetworkCode": 12,
    "isoCountryCode": "US"
  },
  "textlocateId": 7516494,
  "loadId": "a1zEc000001BsVxIAK",
  "phoneNumber": "+12223334444",
  "firstName": "Test",
  "lastName": "Driver",
  "custom2": "L-16",
  "custom3": "",
  "enabled": true,
  "customerId": 1566,
  "userId": 0,
  "lastInteraction": "2025-05-06T13:53:00.091833Z",
  "created": "2025-05-06T13:53:00.091833Z",
  "pingStatus": -1,
  "loadsCount": 0,
  "hasHistory": false,
  "driverId": 1489075,
  "messageService": "Standard",
  "metaData": null,
  "latestPingId": null,
  "latestSmsId": null,
  "latestWhatsappId": null,
  "latestSmsImageId": null,
  "assignError": null,
  "highwayStatus": null,
  "originAddress": null,
  "originCity": null,
  "originState": null,
  "originZip": null,
  "originLat": null,
  "originLong": null,
  "originTime": null,
  "destinationAddress": null,
  "destinationCity": null,
  "destinationState": null,
  "destinationZip": null,
  "destinationLat": null,
  "destinationLong": null,
  "destinationTime": null,
  "notes": ""
}

Send SMS

The Send SMS operation sends a text message to the Driver phone number assigned to the Load.

TMS Operation

TextLocate Endpoint

Request Type

Response

Send button in the TextLocate LWC

Message

POST

200: Success

Fields sent in the Send SMS request.

Object

Field

Type

TextLocate Field

Text Message

Body

Long Text Area(1024)

body

Sample Request Payload

{
  "body": "Test Message",
  "textlocateId": "7516494"
}

No TMS fields received in the Send SMS response are updated.

Inbound SMS Messages

Text messages are received from Drivers and processed as platform events.

The SmsId field indicates that a message is a text message.

The Text Message Type field is set to Text Message when a message is received and Event when an image is received.

TMS Field updates from incoming SMS Messages.

Object

Field

Type

TextLocate Field

Payload

SmsId

Timestamp

Load

SFID

SFID

loadId

Load

Text Messaging Id

Text(20)

textLocateId

Queued Transaction

Payload 1

Long Text Area(130,000)

twilioMedia

Text Message

Author

Text(100)

driverName

Text Message

*Body

Long Text Area(1024)

body

Text Message

**From Driver

Checkbox

fromTL

Text Message

Load

Lookup(Load)

loadId, textLocateId

Text Message

Type

Picklist

Set by the TMS.

*When the body of the text is more than the 1024 character limit, the message body is split into multiple text messages.
**Always Checked.

Sample Response (from Driver) Payload

{
  "smsId": 0,
  "to": "+12223334444",
  "from": "+18883460804",
  "body": "Test Message",
  "fromTL": true,
  "timestamp": "2025-05-06T14:21:54.8042764Z",
  "textlocateId": 7516494,
  "loadId": "a1zEc000001BsVxIAK",
  "twilioMedia": null,
  "unreadCount": 0,
  "tagID": null,
  "translateData": null,
  "driverName": "Test",
  "userName": "",
  "userEmail": null,
  "driver": {
    "driverId": 1489075,
    "phoneNumber": "+12223334444",
    "whatsAppConversationExpiration": "0001-01-01T00:00:00",
    "whatsappConversationStatus": 0,
    "language": "en",
    "validationErrors": null,
    "lastValidation": "2025-04-30T02:02:23.646309Z",
    "validationService": 0,
    "type": "mobile",
    "carrierName": "Verizon Wireless",
    "mobileCountryCode": 310,
    "mobileNetworkCode": 12,
    "isoCountryCode": "US"
  },
  "hasImages": false
}

Send Schedule

The Send Schedule operation sends multiple scheduled messages or ping requests over a period of time. The frequency is set in the TextLocate LWC.

TMS Operation

TextLocate Endpoint

Request Type

Response

Send Schedule to TextLocate button in the TextLocate LWC.

MultipleScheduledMessages

POST

200: Success

TMS fields sent in the Send Schedule request.

Object

Field

Type

TextLocate Field

Load

Text Messaging Id

Text(20)

textlocateId

Ping Schedule

End Date

Date/Time

endDate

Ping Schedule

Interval (Hours)

Number(2, 0)

cadenceInHours

Ping Schedule

Quiet Time End

Time

quietTimeEnd

Ping Schedule

Quiet Time Start

Time

quietTimeStart

Ping Schedule

Start Date

Date/Time

startDate

“True” when Quiet Time Start and End have values.

quietHoursEnabled

“PING”

messageType

No TMS fields received in the Send Schedule response are updated.

Sample Request Payload

{
  "startDate": "2025-05-09T14:35:00.000Z",
  "endDate": "2025-05-14T20:30:00.000Z",
  "textlocateId": "7574274",
  "cadenceInHours": 2,
  "quietHoursEnabled": true,
  "quietTimeStart": "2025-05-09T23:30:00.000Z",
  "quietTimeEnd": "2025-05-09T11:00:00.000Z",
  "messageType": "PING"
}

Sample Response Payload

[
  {
    "scheduledMessageId": 256760926,
    "when": "2025-05-09T14:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073973Z"
  },
  {
    "scheduledMessageId": 256760927,
    "when": "2025-05-09T16:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073975Z"
  },
  {
    "scheduledMessageId": 256760928,
    "when": "2025-05-09T18:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073976Z"
  },
  {
    "scheduledMessageId": 256760929,
    "when": "2025-05-09T20:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073976Z"
  },
  {
    "scheduledMessageId": 256760930,
    "when": "2025-05-09T22:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073977Z"
  },
  {
    "scheduledMessageId": 256760931,
    "when": "2025-05-10T00:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073978Z"
  },
  {
    "scheduledMessageId": 256760932,
    "when": "2025-05-10T02:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073978Z"
  },
  {
    "scheduledMessageId": 256760933,
    "when": "2025-05-10T04:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073979Z"
  },
  {
    "scheduledMessageId": 256760934,
    "when": "2025-05-10T06:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073979Z"
  },
  {
    "scheduledMessageId": 256760935,
    "when": "2025-05-10T08:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.907398Z"
  },
  {
    "scheduledMessageId": 256760936,
    "when": "2025-05-10T10:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073981Z"
  },
  {
    "scheduledMessageId": 256760937,
    "when": "2025-05-10T12:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073981Z"
  },
  {
    "scheduledMessageId": 256760938,
    "when": "2025-05-10T14:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073982Z"
  },
  {
    "scheduledMessageId": 256760939,
    "when": "2025-05-10T16:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073982Z"
  },
  {
    "scheduledMessageId": 256760940,
    "when": "2025-05-10T18:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073983Z"
  },
  {
    "scheduledMessageId": 256760941,
    "when": "2025-05-10T20:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073983Z"
  },
  {
    "scheduledMessageId": 256760942,
    "when": "2025-05-10T22:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073984Z"
  },
  {
    "scheduledMessageId": 256760943,
    "when": "2025-05-11T00:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073984Z"
  },
  {
    "scheduledMessageId": 256760944,
    "when": "2025-05-11T02:35:00Z",
    "lastMarkedToSend": null,
    "textlocateId": 7574274,
    "userId": 0,
    "textMessage": null,
    "scheduledMessageCount": 63,
    "messageType": "Ping",
    "attachments": null,
    "createdAt": "2025-05-09T14:39:11.9073985Z"
  }
]

Incoming Location Update(s) from Driver (Platform Event)

The PingId field indicates a message is a location update.

The Text Message Type field is set to Text Message when a message is received and Event when an image is received.

TMS field updates from incoming Location Updates.

Object

Field

Type

TextLocate Field

Payload

PingId

Timestamp

Load

*Last Reported City

Text(40)

Latitude, Longitude

Load

*Last Reported Country

Picklist

Latitude, Longitude

Load

Last Reported Geolocation

Geolocation

Latitude, Longitude

Load

*Last Reported State/Province

Picklist

Latitude, Longitude

Load

Last Tracking Update

Date/Time

Set to Date/Time Now by the TMS.

Load

Last Tracking Update Source

Text(50)

Set to “TextLocate” by the TMS.

Load

Load Status

Picklist

**Set to “Dispatched” by the TMS.

Load

Load Status Comments

Text(255)

LongAddress

Load

SFID

SFID

loadId

Load

Text Messaging Id

Text(20)

textLocateId

Stop

Arrival Date

Date

Today’s Date

Stop

Arrival Time

Text(5)

Time update received set in the Stop time zone.

Stop

Carrier Status as of

Date/Time

Set to Date/Time Now by the TMS.

Stop

Carrier Status Comments

Text(255)

Set to “Location Update: City, State” by the TMS.

Stop

Departure Date

Date

Today’s Date

Stop

Departure Time

Text(5)

Time update received set in the Stop time zone.

Stop

Kilometers Away

Number(10, 3)

Calculated by the TMS.

Stop

Miles Away

Number(10, 3)

Calculated by the TMS.

Stop

Stop Status

Picklist

UpdateStatus

Text Message

Author

Text(100)

driverName

Text Message

Body

Long Text Area(1024)

ShortAddress, LongAddress, Latitude, Longitude

Text Message

***From Driver

Checkbox

fromTL

Text Message

Load

Lookup(Load)

loadId, textLocateId

Text Message

Type

Picklist

Set by the TMS.

*City, State, and Country values are calculated with reverse geolocation code lookup with PC Miler.
**Load Status must be first set to Assigned to update to Dispatched.
***Always Checked.

Arrival/Departure Dates/Times are set based on the Text Message created date and time.

Send Ping Request

The Send Ping Request operation schedules a message or location update request to send to a Driver for a Load.

TMS Operation

TextLocate Endpoint

Request Type

Response

Send Ping Request

Schedulemessage

POST

200: Success

TMS fields sent in the Send Ping Request request.

Object

Field

Type

TextLocate Field

Load

Text Messaging Id

Text(20)

textlocateId

“PING”

messageType

Datetime 1 minute after button press

when

No TMS field updates from the Send Ping Request response.

Sample Request Payload

{
  "scheduledMessageId": 256712568,
  "when": "2025-05-06T21:01:02.002Z",
  "lastMarkedToSend": null,
  "textlocateId": 7516494,
  "userId": 0,
  "textMessage": null,
  "scheduledMessageCount": 0,
  "messageType": "Ping",
  "attachments": null,
  "createdAt": "0001-01-01T00:00:00"
}

Inbound Location Update

Location updates are received from Drivers and processed as platform events.

Sample Location Update Payload

{
  "Timestamp": "2025-05-06T21:04:44.4986546Z",
  "Payload": {
    "Custom1": "Driver",
    "Custom2": "L-16",
    "Custom3": "",
    "MetaData": null,
    "Driver": {
      "DriverId": 1489075,
      "PhoneNumber": "u002B11112223333",
      "WhatsAppConversationExpiration": "0001-01-01T00:00:00",
      "WhatsappConversationStatus": 0,
      "Language": "en",
      "ValidationErrors": null,
      "LastValidation": "2025-04-30T02:02:23.646309Z",
      "ValidationService": 0,
      "Type": "mobile",
      "CarrierName": "Verizon Wireless",
      "MobileCountryCode": 310,
      "MobileNetworkCode": 12,
      "IsoCountryCode": "US"
    },
    "Origin": {
      "Address": "2333 Waukegan Rd., Bannockburn, Illinois 60015",
      "City": null,
      "State": null,
      "Zip": null,
      "Latitude": null,
      "Longitude": null,
      "Time": "2025-05-09T12:00:00Z"
    },
    "Destination": {
      "Address": "415 W. Ocean Blvd, Long Beach, California 90802",
      "City": null,
      "State": null,
      "Zip": null,
      "Latitude": null,
      "Longitude": null,
      "Time": "2025-05-13T12:00:00Z"
    },
    "PingId": 8806863,
    "Latitude": 41.8817113,
    "Longitude": -87.6334587,
    "PingTime": "2025-05-06T21:01:02",
    "ResponseTime": "2025-05-06T21:04:34",
    "LoadId": "a1zEc000001BsVxIAK",
    "HasHistory": false,
    "TextlocateId": 7516494,
    "ShortAddress": "Chicago, IL 60603",
    "LongAddress": "189 W Madison St, Chicago, IL 60602, USA",
    "Status": 0,
    "UserId": 0,
    "ScheduledMessageId": 256712568,
    "UpdateStatus": "InTransit",
    "DriverId": 1489075,
    "InTime": null,
    "OutTime": null,
    "FromIntegration": false,
    "IntegrationSource": null
  }
}

Update Driver Phone

The Update Driver operation sends updated Driver Name and/or Phone field information to TextLocate.

TMS Operation

TextLocate Endpoint

Request Type

Response

Update Driver Phone button on TextLocate LWC

Load/updateDriver

POST

200: Success

TMS fields sent in the Update Driver Phone request.

Object

Field

Type

TextLocate Field

Load

Driver Name

Text(50)

firstName

Load

Driver Phone

Phone

phoneNumber

Load

Text Messaging Id

Text(20)

textLocateId

Sample Request Payload

{
  "textlocateId": "7516494",
  "phoneNumber": "2223334444",
  "firstName": "Another Driver"
}

No TMS fields are updated from the Update Driver Phone response.

Sample Response Payload

true

Get Image

The Get Image operation retrieves an image stored on external servers. These images are sent by drivers from the messaging conversation. The server URL for image storage locations is included when Driver’s send images. The image is saved from the server URL and added to the Load.

Image files are stored on the Load Documents tab.

TMS Operation

TextLocate Endpoint

Request Type

Response

Get Images (No TMS action)

(NO API ENDPOINT)

GET

200: Success

No TMS Fields are sent in the Get Image call request.

No TMS fields are updated from the Get Image call response.

Delete Ping Schedule

The Delete Ping Schedule operation removes all scheduled messages and ping requests for a single Load.

TMS Operation

TextLocate Endpoint

Request Type

Response

Remove Carrier button on the Carrier Banner LWC.

ScheduledMessage

DELETE

200: Success

TMS fields sent in the Delete Ping Schedule request.

Object

Field

Type

TextLocate Field

Load

Text Messaging Id

Text(20)

textlocateId

Sample Request URL

https://api.textlocate.com/ScheduledMessage?scheduledMessageId=12345

No TMS fields are updated from the Delete Ping Schedule call response.

Unsubscribe

The Unsubscribe operation deletes a webhook subscription based on the subscription id received in the Get Subscriptions request.

TMS Operation

TextLocate Endpoint

Request Type

Response

Unsubscribe

Webhook

DELETE

200: Success

TMS fields sent in the Unsubscribe request.

Object

Field

Type

TextLocate Field

webhookSubscriptionId

No TMS fields are updated from the Unsubscribe response.

Field Reference Table

The following table relates TMS fields with the equivalent fields included in TextLocate API calls.

Object

Field

Type

TextLocate Field

“Upload”

action

“Standard”

messageService

“PING”

messageType

“True” when Quiet Time Start and End have values.

quietHoursEnabled

Payload

PingId

SmsId

Timestamp

webhookSubscriptionId

Datetime 1 minute after button press

when

Load

Driver Name

Text(50)

firstName

Load

Driver Name

Text(50)

lastName

Load

Driver Phone

Phone

phoneNumber

Load

SFID

SFID

loadId

Load

Last Reported City

Text(40)

Latitude, Longitude

Load

Last Reported Country

Picklist

Latitude, Longitude

Load

Last Reported Geolocation

Geolocation

Latitude, Longitude

Load

Last Reported State/Province

Picklist

Latitude, Longitude

Load

Last Tracking Update

Date/Time

Set to Date/Time Now by the TMS.

Load

Last Tracking Update Source

Text(50)

Set to “TextLocate” by the TMS.

Load

Load Number

Name

custom2

Load

Load Status

Picklist

**Set to “Dispatched.”

Load

Load Status Comments

Text(255)

LongAddress

Load

Text Messaging Id

Text(20)

textLocateId

Ping Schedule

End Date

Date/Time

endDate

Ping Schedule

Interval (Hours)

Number(2, 0)

cadenceInHours

Ping Schedule

Quiet Time End

Time

quietTimeEnd

Ping Schedule

Quiet Time Start

Time

quietTimeStart

Ping Schedule

Start Date

Date/Time

startDate

Queued Transaction

Payload 1

Long Text Area(130,000)

twilioMedia

Stop

Arrival Date

Date

Today’s Date

Stop

Arrival Time

Text(5)

Time update received in the Stop time zone.

Stop

Carrier Status as of

Date/Time

Set to Date/Time Now by the TMS.

Stop

Carrier Status Comments

Text(255)

Set to “Location Update: City, State” by TMS.

Stop

Departure Date

Date

Today’s Date.

Stop

Departure Time

Text(5)

Time update received in the Stop time zone.

Stop

Kilometers Away

Number(10, 3)

Calculated by the TMS.

Stop

(Last Stop) Address

Formula (Text)

destinationAddress

Stop

(First Stop) Address

Formula (Text)

originAddress

Stop

(Last Stop) Expected Date

Date

destinationTime

Stop

(First Stop) Expected Date

Date

originTime

Stop

Miles Away

Number(10, 3)

Calculated by the TMS.

Stop

Stop Status

Picklist

UpdateStatus

Text Message

Author

Text(100)

driverName

Text Message

Body

Long Text Area(1024)

body

Text Message

From Driver

Checkbox

fromTL

Text Message

Load

Lookup(Load)

loadId, textLocateId

Text Message

Type

Picklist

Set by the TMS.

TMS Admin → Configuration

Inbound API Community URL

URL

receivingUrl