New: deterministic data with Synth

Every wearable.
One clean schema.

Production-ready wearable ingestion for Convex. Connect cloud APIs, receive native health data, generate realistic fixtures, and query it all through one typed interface.

9providers
88health metrics
1normalized model
live ingestion
heart_rate · normalized
72bpm
streaming
WorkoutMorning run42 min
ProviderSynthDeviceready
provider: "synthetic",seriesType: "heart_rate"
Cloud, native, or generatedsame API on the other side
  • GarminCloud
  • StravaCloud
  • WHOOPCloud
  • PolarCloud
  • SuuntoCloud
  • Apple HealthSDK
  • Health ConnectSDK
  • Samsung HealthSDK

From first payload to production scale.

The provider-specific complexity stays inside the component. Your app gets typed data, explicit lifecycle controls, and room to grow.

New in v0.5

Build against believable data before the first device connects.

Synth creates deterministic workouts, sleep, heart rate, HRV, SpO₂, steps, recovery, and summaries in the exact normalized model used by live providers.

activesedentaryrecoverymixed
Explore Synth
Storage engine

Keep the signal. Control the rows.

Retain raw data, roll older points into useful buckets, and assign storage presets per user.

Design a policy
Developer experience

TypeScript from OAuth to query.

One client for connections, events, time series, summaries, sync, backfills, and lifecycle cleanup.

await wearables.getTimeSeries(ctx, args)
Browse the API
Operationally ready

Safe sync and clean exits.

Durable backfills, deduplication, provider-aware summaries, and a cascading delete path for user data.

See sync controls

Ship the integration, not the plumbing.

Read the docs