---
name: bijection-wearables
description: "Evaluate and integrate the Wearables component with Bijection."
---

# Wearables

Wearable device data integration

- Package: @bijectionhq/wearables
- Category: Integrations
- Status: Preview
- License: Apache-2.0
- Bijection source (repository access required): https://github.com/bijectionhq/wearables/tree/b56ab217e65feeb5380f8c793da44e5f8aceea57/packages/convex-wearables
- Upstream: https://github.com/clipinfit/convex-wearables/tree/6ca84c2aadbe03b7a1d451a98ec0e6313b3b7f7c/packages/convex-wearables
- Documentation: https://docs.bijection.com/components/using
- Directory: https://bijection.com/components/wearables

## Get the source

Bijection repository access is required. Request access at https://bijection.com/contact.

```sh
git clone https://github.com/bijectionhq/wearables.git
cd wearables
git checkout b56ab217e65feeb5380f8c793da44e5f8aceea57
cd packages/convex-wearables
```

## Before using this component

Read the package README at the recorded revision for setup, dependencies, and API examples. Upstream documentation describes the original package and may differ from the Bijection adaptation. This is a source candidate for evaluation. Catalog inclusion does not establish npm availability or runtime qualification. Check compatibility with your SDK and deployment before adoption. External providers run their own compute.

## Integration workflow

1. Read the source README and package manifest at the recorded revision.
2. Confirm the required SDK, dependency availability, and runtime compatibility.
3. Follow the component's documented setup and configuration. Never invent an npm install command from a catalog package name.
4. Keep credentials in the project's existing secret store.
5. Follow the project's execution rules for verification and report what was actually checked.

## Original upstream skill

The following guidance describes @clipin/convex-wearables. Its installation commands and APIs refer to the upstream package. Evaluate compatibility with the Bijection source separately.


> Agents: read this skill fully before writing code that uses Wearables. Follow the installation and configuration steps exactly.

# Wearables

## Instructions

A Convex component that syncs health and fitness data from 8 wearable providers (Garmin, Strava, Whoop, Polar, Suunto, Apple HealthKit, Samsung Health, Google Health Connect) directly into your Convex database. Handles OAuth flows, automatic data syncing, and provides a normalized TypeScript API for querying workouts, sleep sessions, and 88+ health metrics. Includes configurable time-series storage policies, deduplication, and precomputed daily summaries.

### Installation

```bash
npm install @clipin/convex-wearables
```

Current npm version: `@clipin/convex-wearables@2.0.0`

## Use cases

- **Building fitness apps** that aggregate data from multiple wearables without managing separate API integrations for each provider
- **Creating health dashboards** with unified workout tracking, sleep analysis, and heart rate monitoring across different devices
- **Developing wellness platforms** that need GDPR-compliant user data deletion and automatic token refresh handling
- **Building coaching applications** that analyze time-series health data with configurable retention policies to manage database growth
- **Creating social fitness features** that sync and display activities from users' preferred wearable devices

## How it works

The component installs as a Convex app dependency and exposes a `WearablesClient` that wraps the component API. You configure provider credentials (client IDs and secrets) and use methods like `getEvents()` for workouts, `getTimeSeries()` for metrics, and `getDailySummaries()` for aggregated data.

OAuth flows are handled through `generateAuthUrl()` and `handleCallback()` methods that manage PKCE-secured token exchange and automatic refresh. The component normalizes data from different providers into unified schemas - 40+ workout types, 88 predefined health metrics, and standardized sleep/recovery data.

Data syncing happens through cron jobs via `syncAllActive()` or on-demand sync jobs. The component includes Garmin webhook support and mobile SDK ingestion for real-time updates. Time-series storage policies let you configure raw vs. rollup retention rules per provider and metric type to control database growth while maintaining query performance.

## When NOT to use

- When a simpler built-in solution exists for your specific use case
- If you are not using Convex as your backend
- When the functionality provided by Wearables is not needed

## Resources

- [npm package](https://www.npmjs.com/package/@clipin/convex-wearables)
- [GitHub repository](https://github.com/clipinfit/convex-wearables)
- [Live demo](https://github.com/clipinfit/wearables-demo)
- [Convex Components Directory](https://www.convex.dev/components/clipin/convex-wearables)
- [Convex documentation](https://docs.convex.dev)