> For the complete documentation index, see [llms.txt](https://docs.tryterra.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tryterra.co/faq/help-topics/webhook/payload-content-and-provider-quirks/garmin-two-pass-provisional-final.md).

# Why do I get multiple Garmin sleep sessions for one night, or a sleep payload that looks incomplete?

Two separate things commonly look like a problem with Garmin sleep, but both are expected.

**1. Multiple sleep sessions from the same night**

Garmin can send more than one sleep session for a single night (this is device-dependent, and includes naps). Each session is its own payload with its own `metadata.summary_id`, and naps are flagged with `metadata.is_nap`. Treat each `summary_id` as a distinct sleep session rather than assuming one night equals one payload, and store them independently. Field locations are in the [data models reference](https://docs.tryterra.co/reference/health-and-fitness-api/data-models).

**2. A sleep payload that arrives looking incomplete**

A sleep session can be delivered more than once with the **same `summary_id`**, where a later push fills in fields (durations, efficiency, hypnogram, score) that the first push left empty. Per the [data models reference](https://docs.tryterra.co/reference/health-and-fitness-api/data-models), when a session comes in again with the same `summary_id` you should update the previous entry with the newer data.

A night can look stuck on `null` if:

* Your dedup key includes `end_time` (it can shift between pushes), or
* You treat the first webhook for a `summary_id` as final and drop the later one.

**Key on `summary_id` alone and let the later payload overwrite the earlier one.** If a session still shows missing fields after the later push, contact support with the `summary_id`.
