> 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/help-center/help-topics/webhook/payload-content-and-provider-quirks/garmin-activity-placeholder.md).

# Why does a Garmin activity read right after connecting come back with only a name and no data?

Garmin sends an activity's file and its details separately, and a read made between the two can return a name-only placeholder.

**Garmin sends an activity's file and its details separately, and a read made between the two can return a name-only placeholder.**

The placeholder has the same `metadata.summary_id` as the full activity, with:

* `metadata.name` populated,
* `metadata.start_time` equal to `metadata.end_time`,
* `metadata.type` 108 (Other),
* no distance, heart rate, calorie or sample data.

When the activity details arrive from Garmin, they are merged into the same `summary_id` and the full record replaces the placeholder. JSON destinations don't receive the placeholder on its own, so webhook deliveries carry the merged activity.

This mostly shows up when an onboarding flow calls `GET /v2/activity` in the first seconds after a Garmin connection, while Garmin is still sending the user's history. To avoid it:

* read the history a little later rather than in the first seconds after the connection,
* upsert on `metadata.summary_id`, so a later read or delivery replaces any placeholder you stored.

Field definitions and the activity type list are in the [data models reference](https://docs.tryterra.co/reference/health-and-fitness-api/data-models).
