# Data Feeds: Mapping the response

> From JSON payload to store paths.

Glider documentation · Data · Web page: https://cgglider.com/docs/pollers/mapping/

Sections of this page: [Transports](https://cgglider.com/docs/pollers.md) · [JSON, XML & text](https://cgglider.com/docs/pollers/formats.md) · [Webhooks](https://cgglider.com/docs/pollers/webhook.md) · [WebSockets](https://cgglider.com/docs/pollers/websocket.md) · [HTTP requests](https://cgglider.com/docs/pollers/compose.md) · [Auth & secrets](https://cgglider.com/docs/pollers/auth.md) · [Mapping the response](https://cgglider.com/docs/pollers/mapping.md) · [Schedule & freshness](https://cgglider.com/docs/pollers/schedule.md) · [Probe & diagnostics](https://cgglider.com/docs/pollers/probe.md)

A feed carries a list of field mappings. Each one reads a path out of the payload and writes it to a store path, with a guard for when the value is missing.

| Part | Meaning |
| --- | --- |
| from | A path into the response. Same grammar as the Binder tree: $.a.b and a[0].b both work. |
| to | The store path to write. |
| onMissing | hold — leave the previous value; blank — write an empty string; zero — write 0. |

A value counts as missing when it is undefined, null or NaN. Any missing field in a cycle marks the unit degraded, so the amber dot tells you the feed is answering but the shape has drifted.

> **Let the Binder write these:** Picking a field in the Binder creates the mapping for you and reuses an existing one rather than minting a second writer for the same value. Hand-writing mappings is the path to multi-writer conflicts.

![Field mappings with guards.](https://cgglider.com/docs-shots/poller-mapping.png)
