When Frotcom receives new tracking data* from your vehicles, a message is sent to your system.
* The lowest time interval is 1 minute; all events received in the 1 minute are grouped and sent in the next message.
You can read more information about webhooks here
This webhook is a natural evolution of the PVT tracking data with more telematic data. Take into consideration when implementing this webhook that it is prepared to have more information: more fields or more groups of telematic data as needed by others.
Authentication
Frotcom will send webhook requests with an authentication token in the request headers. Your application must validate this token before processing the request.
Request Headers
| Header | Description | Format | Mandatory | Example |
| Authorization | Token generated during configuration. | GUID | Yes | 1234-5678-9097-8466 |
| Content-Type | Specifies the format of the request payload. |
Text | Yes | application/json |
Your system should reject any request that does not contain a valid Authorization token.
Webhook Request Format
HTTPS Method and Endpoint
- Method: POST
- Content-Type: application/json
- Example Endpoint: https://yourdomain.com/webhooks/frotcom
JSON Payload Structure
Frotcom will send a JSON object containing vehicle telematic data:
Simple example:
A more complex message with two vehicles:
TelematicWebhookMessage (Root Object)
| Field | Type | Description |
| telematicDataMessages | Array | List of telematic data messages grouped by vehicle |
TelematicDataMessage
| Field | Type | Required | Description |
| vehicleId | string | Yes | Unique identifier for the vehicle |
| licensePlate | string | Vehicle license plate | |
| vehicleStatus | Array | Yes | List of vehicle status snapshots |
TelematicVehicleStatus
| Field | Type | Required | Description |
| position | Object | Yes | Position and GPS data |
| drivers | Object | Driver and co-driver information | |
| telematicData | Object | Yes | Additional telematic metrics |
Position
| Field | Type | Required | Description |
| timeStamp | DateTime | Yes | UTC timestamp when the data was collected |
| latitude | double | Yes | GPS latitude coordinate |
| longitude | double | Yes | GPS longitude coordinate |
| direction | double | Yes | Vehicle heading in degrees (0-360) |
| isValidGps | boolean | Yes | Indicates if GPS data is valid |
| isIgnitionOn | boolean | Yes | Indicates if vehicle ignition is on |
speed |
double |
Yes |
Drivers
| Field | Type | Required | Description |
driverId |
integer |
No |
Unique identifier for the driver (null if unknown) |
driverName |
string |
No |
Driver's name from card/system (null if unknown) |
coDriverId |
integer |
No |
Unique identifier for co-driver (null if no co-driver) |
coDriverName |
string |
No |
Co-driver's name (null if no co-driver) |
TelematicData
| Field | Type | Required | Description |
odometerGPS |
double |
No |
GPS-based odometer reading in kilometers (null if unavailable) |
odometerCANBus |
double |
No |
CAN Bus odometer reading in kilometers (null if unavailable) |
chronometer |
double |
No |
Engine hours from CAN Bus (null if unavailable) |
isStopped |
boolean |
Yes |
Indicates if vehicle is stopped (speed below threshold) |
hasNoPower |
boolean |
Yes |
Indicates if vehicle has no external power |
hasInvalidMovement |
boolean |
Yes |
Indicates if vehicle is moving without ignition on |
Calculated Fields:
isStopped: True when vehicle speed is below the configured stop speed limit (typically 5 km/h)
hasInvalidMovement: True when vehicle is moving (speed > 0) with ignition off (may indicate towing or unauthorized movement)
hasNoPower: True when vehicle has no external power supply