Stress data from every wearable, in one schema

Vendor stress scores and the electrodermal and HRV-derived signals underneath them.

2 / 3

Providers connectable today

3

Webhook events in this family

provider-defined score; EDA in microsiemens

Canonical units

What stress looks like through one API

Stress scores on consumer wearables are almost always a transformation of heart-rate variability, sometimes combined with activity and, on a few devices, electrodermal activity. No device measures stress; they measure autonomic arousal and label it.

That labelling is the problem. Autonomic arousal from a hard interval session and arousal from a difficult meeting look similar to the sensor, and vendors handle the ambiguity differently — some suppress stress scoring during detected exercise, some do not. A user who trains hard will see a "high stress" day that reflects training load.

WearLink delivers the vendor score attributed to its source and keeps Garmin's continuous stress level as its own series, alongside electrodermal activity where the hardware reports it. If you need a signal you can explain to users, the HRV streams are the more honest foundation.

Where providers disagree

The part that costs you weeks if you build this yourself. None of the following is a WearLink limitation — it is how the underlying providers actually behave.

Exercise and stress are hard to separate

Both raise arousal. Vendors differ in whether they mask stress scoring during workouts. Cross-referencing against the workout stream before surfacing a "stressed" state avoids telling users their training session was a bad day.

Scales are proprietary and not comparable

Garmin, Fitbit and Samsung each define their own range and thresholds. A 60 on one is not a 60 on another, and there is no published mapping.

EDA is session-based, not continuous

Electrodermal activity on consumer hardware is captured during a deliberate short session rather than passively all day, so it produces sparse point-in-time data rather than a timeline.

Coverage collapses whenever the device comes off

Stress scoring needs near-continuous heart-rate variability sampling, which stops the moment a watch goes on the charger. Vendors handle the resulting hole differently — some emit nulls, some carry the last value forward, some quietly interpolate — and none of them label which they did. A user who charges mid-afternoon every day will show a systematic pattern that is an artefact of their charging habit rather than their life. Check sample density before averaging a day, and treat a sparse day as missing rather than calm.

Providers that supply stress

Status is read from the same provider table the rest of the site uses, so nothing here can claim a provider is connectable when it is not. Coverage also varies by hardware generation within a brand.

ProviderCategoryStatus
GarminCloud OAuthOnboarding
FitbitCloud OAuthLive
Samsung HealthMobile SDKMobile SDK

Webhook events for stress

Subscribe to the summary event for settled records, and to the series streams when you need the underlying samples. Event names below are generated from the backend enum, so they cannot drift out of date relative to the API.

Summary object

stress.created

Series streams

series.garmin_stress_level.createdseries.electrodermal_activity.created

Frequently asked questions

What is a wearable stress score actually measuring?
Autonomic arousal, derived mostly from heart-rate variability. It is a proxy with a marketing name, not a direct measurement of psychological stress.
Which providers report stress through WearLink?
Garmin, Fitbit and Samsung Health. Garmin's continuous stress level is delivered as its own series rather than folded into a generic field.
Should I show users the vendor score or build my own?
If your users are on mixed hardware, build your own from normalised HRV so the number means the same thing for everyone. If they are single-vendor, the native score matches what their own app shows, which reduces confusion.

Related data types

15 normalised data families in total — see them all or browse integrations by provider.