PulseWatch
A personal companion for the Fitbit Air. It notices when the tracker has been left off your wrist — after a shower, say — and reminds you on your phone, with a short summary of sleep and recovery each morning.
Not a medical device. PulseWatch is informational. It does not diagnose, treat or monitor any medical condition and must not be relied on in an emergency.
What it does
Off-wrist reminders
If the tracker keeps syncing but records no heart rate for about half an hour, you get one reminder, dismissed again when you put it back on (where the ntfy app supports it). It tells a removed tracker apart from one that is out of range or out of battery.
Movement nudges
A gentle prompt after about 90 minutes without a movement break, only during waking hours.
Morning brief
Last night's sleep, resting heart rate, heart-rate variability, respiratory rate and yesterday's steps, in one notification. Anything unavailable is simply left out.
Personal trends
A notice when resting heart rate or heart-rate variability has been outside your own usual range for several days in a row — compared with your own history, never population norms.
How it works
- Your Fitbit Air syncs to the Google Health app as usual.
- Every 10 minutes, PulseWatch — a small program running on Cloudflare Workers — reads a minimal set of recent data through the Google Health API, using read-only access that you grant through Google's consent screen.
- Simple, transparent rules decide whether anything is worth telling you. Usually nothing is.
- When it is, a notification is delivered to your phone through the ntfy notification service.
Why PulseWatch asks for Google Health access
PulseWatch requests four read-only permissions and uses each for a specific feature:
| Permission | Used for |
|---|---|
| Health metrics and measurements (read-only) | The time of your most recent heart-rate reading and, for the last few hours, whether heart rate was recorded in each 5-minute window (to tell whether the tracker is being worn), plus daily resting heart rate, heart-rate variability and respiratory rate for the morning brief and personal trends. |
| Activity and fitness (read-only) | Recent step counts for movement nudges, and yesterday's total steps for the brief. |
| Sleep (read-only) | Last night's main sleep: when it started and ended and how long you slept. |
| Settings (read-only) | When your tracker last synced and its battery level, so a flat battery or an unsynced phone is not mistaken for a removed tracker. |
PulseWatch never writes to your Google Health data, and does not request location, ECG, nutrition, profile or reproductive-health data.
Privacy at a glance
- Read-only access, limited to what the features above need.
- To detect a removed tracker, PulseWatch downloads only the time of the latest heart-rate reading, not the reading itself.
- Only one summary value per metric per day is stored, for up to 120 days. Minute-by-minute readings are never stored.
- No advertising, no selling of data, no analytics or tracking, and no AI or machine-learning training.
- You can revoke access at any time from your Google Account permissions.
The privacy policy describes exactly what is accessed, stored and shared.
Who runs PulseWatch
PulseWatch is a personal, non-commercial project, built and operated by its developer (GitHub: @usmanmateen) for personal use. It is not sold or offered as a public service. See the terms of service.