> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hyperwisor.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Fleet Field Mapping

> Map any device payload — any shape, any nesting — to Fleet's concepts with dot-notation paths.

Field mapping is what makes one widget work for every vertical. You tell the Fleet
widget which key in your payload means latitude, which means speed, and so on —
once, in the config panel. No code, no redeploy.

## Dot-notation paths

Reach into nested objects with dots and into arrays with numeric indices:

| Payload                                            | Path                     | Resolves to |
| -------------------------------------------------- | ------------------------ | ----------- |
| `{ "gps": { "lat": 18.9 } }`                       | `gps.lat`                | `18.9`      |
| `{ "location": [23.1, 79.9] }`                     | `location.0`             | `23.1`      |
| `{ "telemetry": { "position": { "lat": 28.6 } } }` | `telemetry.position.lat` | `28.6`      |

## Core fields

The Map view needs a device ID and coordinates; everything else is optional.

<ParamField path="Device ID field" type="path" required>
  Unique identifier — e.g. `deviceId`, `id`, `node`, `machine_id`.
</ParamField>

<ParamField path="Latitude / Longitude" type="path">
  e.g. `gps.lat` / `gps.lng`, or `location.0` / `location.1`.
</ParamField>

<ParamField path="Heading" type="path">
  Rotates the marker — e.g. `heading`, `telemetry.yaw`.
</ParamField>

<ParamField path="Speed" type="path">
  Shown in the marker popup.
</ParamField>

<ParamField path="Status" type="path">
  Drives marker/row color (green / amber / red).
</ParamField>

## Extra display fields

Any payload key can surface in the marker popup and detail panel — add an extra
field with a label and a path (`Passengers → meta.passengers`, `Battery →
telemetry.battery`).

## Same widget, four payloads

```json theme={null}
{ "deviceId": "bus-07", "gps": { "lat": 18.92, "lng": 72.83 }, "speed": 42 }
```

```json theme={null}
{ "id": "drone-01", "telemetry": { "position": { "lat": 28.61, "lng": 77.20 } }, "battery": 82 }
```

```json theme={null}
{ "node": "field-A3", "location": [23.18, 79.94], "moisture": 0.42 }
```

```json theme={null}
{ "machine_id": "CNC-7", "coords": { "x": 12.5, "y": 44.1 }, "rpm": 2400 }
```

The same Fleet widget reads all of them — only the mapping differs.

<Card title="Back to Fleet overview" icon="map" href="/fleet/overview">
  The six views and the data contract.
</Card>
