Skip to main content
The Body lens pulls data from your connected devices into a unified biometrics workspace. HRV, resting heart rate, sleep score, readiness, steps, weight, blood pressure, SpO₂, and more can appear in the Body lens and in the Biometrics Overview dashboard widget. If you do not own a wearable, you can log weight, blood pressure, and resting heart rate manually.

Body lens and Biometrics Overview

Each selected metric appears as a card in Body and in the dashboard’s Biometrics Overview widget. Tap any card to open a 90-day chart with statistics and a full reading history. Cards for metrics your device does not measure are hidden automatically. Metrics surfaced on the strip include:
  • HRV (RMSSD), resting heart rate, sleep score, readiness
  • Activity and steps
  • Weight, blood pressure, SpO₂, body-temperature delta
  • Body composition (body fat %, fat mass, muscle mass, bone mass, lean mass, water, visceral fat)
  • Vascular health (pulse wave velocity, vascular age, cardio fitness)
  • Sleep architecture (deep, light, REM, awake durations; average HR; breathing rate; snoring; apnea-class disturbance)

Supported vendors

How to connect a wearable

1

Open Settings

Click the gear icon to open Settings, then select Wearables.
2

Click Connect

Find the vendor row you want and click Connect.
3

Authorize on the vendor's site

For OAuth-based vendors, you are redirected to the vendor’s authorization page. Approve access and you are redirected back automatically.
4

Wait for the initial sync

getbased fetches the last 90 days of data. Raw daily rows are stored in your browser’s local database; a compact summary populates the Body lens and Biometrics Overview widget.
Google says the legacy Fitbit Web API will stop syncing in September 2026, but has not published an exact shutdown day. Existing getbased connections are retained as a temporary bridge; do not assume they will work through September 30. Google Health is the replacement only on self-hosted deployments configured with their own Google Cloud OAuth project. See Google’s migration notice.

Apple Health setup

Apple Health uses a file export instead of OAuth.
1

Export from your iPhone

Open the Health app → tap your profile photo (top right) → Export All Health Data.
2

Transfer the file

AirDrop or email the export.zip to your computer.
3

Import into getbased

In Settings → Wearables, drop the .zip file onto the Apple Health row.
Parsing runs entirely in your browser. The file is never sent to a server. Large exports (multi-year history) can take 30–60 seconds to parse.

Manual entry

You can log weight, blood pressure, and resting heart rate without any wearable. The Body lens and Biometrics Overview widget show empty cards for these metrics when no device provides them. To log a reading:
1

Tap the empty card

Tap the card (for example, the Weight – card with a + Log affordance at the bottom).
2

Enter the value

Type the number into the inline input — weight in kg, blood pressure as systolic/diastolic with optional pulse, resting HR in bpm.
3

Add context (optional)

Tap a context chip — resting, morning-fasted, post-workout, or stress — to help the AI interpret the reading correctly.
4

Save

Press Enter or tap Save. The card updates immediately with a via Manual badge.
To edit or delete past readings: tap any card to open its detail modal, then scroll past the chart to the Manual entries list. Each row has a × button to delete it. To correct a value, delete the old reading and log the correct one with the + Add reading button (which accepts backfilled dates). To delete all manual entries: go to Settings → Wearables, expand the Manual row, and click Delete all manual entries. Wearable data from Oura, Withings, and other connected vendors is not affected.

Multi-vendor metric ownership

When two vendors report the same metric — for example, Oura HRV and Fitbit HRV — getbased displays the most recent non-null value by default and shows a via badge on the card. To switch sources:
  1. Tap the via badge on a card.
  2. Select the source you want from the picker.
Your choice is saved per metric, per profile, and syncs across your devices. Vendors that are the sole provider of a metric (for example, only Withings measures weight) do not show a badge.

Sync controls

Each current supported vendor row in Settings → Wearables normally has two sync actions:
  • Sync now — refetches the last 7 days. Use this when you’ve just synced your device and want the dashboard to update immediately.
  • Backfill 90 days — refetches the full 90-day window. Use this after returning from a trip, switching devices, or noticing a gap in the chart. This is slower — some vendors apply rate limits that add 30 seconds or more to the request.
Background sync runs automatically every 6 hours while the tab is open, so the dashboard typically stays current on its own. Legacy Fitbit connections remain eligible for background sync while their current authorization works, but their row offers migration and disconnection instead of a legacy reconnect flow. If Fitbit rejects the token, that connection cannot be reauthorized in getbased.
An “as of ” hint on a card means that metric’s most recent reading is older than other data from the same vendor. This is usually the vendor’s processing pipeline finishing late — Oura’s HRV often lags its sleep score by several hours. Hover the hint for an explanation.

Choosing dashboard metrics

Use Add metrics in the Biometrics Overview widget to choose which wearable and manual metrics appear on the dashboard. The full Body lens remains the dedicated workspace for sources, sync state, and metric history.

Privacy

  • Raw daily rows never leave your device. They are stored in your browser’s IndexedDB, encrypted at rest.
  • Compact summary data syncs to your other devices via Evolu CRDT, which is end-to-end encrypted using your mnemonic identity.
  • OAuth refresh tokens stay local. They are not included in the sync payload — you reconnect each vendor on each device.
  • AI chat context includes a compact wearable summary by default when Insight → Manage → Context → Data sources → Body → Wearable recovery context is on. Turn that source off to keep wearables out of in-app chat and Body-related score modifiers.
  • Personal Agent (MCP) is controlled separately in Settings → Agent Access. When Agent Access is enabled, the agent receives the compact wearable summary; you can optionally push a daily time series there for richer time-series reasoning.

Self-hosting OAuth

If you self-host getbased, the OAuth client_id values bundled with the app are registered for *.getbased.health redirect URIs only. To use any OAuth-based wearable on your own instance, register your own OAuth app with each provider and set the corresponding environment variable: Register your actual redirect URI (for example, http://localhost:8000/app for local dev and your production hostname) in each provider’s developer portal. For a custom hostname that is not already listed, add the same URI to the provider’s oauth.redirectUris entry in js/wearable-adapters.js in your fork. Apple Health is file-import only and requires no credentials on any install.
When provider variables are set, the app picks them up at startup and uses your client_id for authorization and token exchange. Google Health, WHOOP, and Ultrahuman stay disabled unless their *_ENABLED=true flag and both OAuth credential variables are present. The browser receives only public client IDs and availability flags; secrets stay behind /api/proxy.
On localhost, WHOOP and Ultrahuman appear as experimental · setup required until configured. On other unconfigured hosted domains, they are hidden. A fully configured self-host shows experimental · self-hosted and enables Connect. If an operator later disables either provider, existing connections remain removable but sync and reconnect pause. Google Health requests three restricted, read-only scopes: activity and fitness, health metrics and measurements, and sleep. The operator of each self-hosted OAuth project is responsible for Google’s consent-screen, verification, user-limit, and any security-assessment requirements. Personal testing can use Google’s testing mode; a public rollout may require verification and an annual Cloud App Security Assessment. Follow the Google Health setup guide for the current requirements.

Troubleshooting

The OAuth handshake succeeded, but Polar’s API uses a transactions model that returns no data until your device has uploaded a sync to Polar Flow. Open the Polar app on your phone, sync your watch, then click Sync now in getbased.
The OAuth refresh token expired or was revoked. Click Reconnect on a current supported vendor row to re-authorize. Legacy Fitbit is the exception: its old authorization cannot be reconnected in getbased.
The official hosted app intentionally does not provide Google Health OAuth. On a self-hosted deployment, confirm that GOOGLE_HEALTH_ENABLED=true, GOOGLE_HEALTH_CLIENT_ID, and GOOGLE_HEALTH_CLIENT_SECRET are all present on the server, then restart the deployment. Existing Google Health credentials remain removable when host access is unavailable, but sync and reconnect stay paused.
The vendor doesn’t expose that metric through their API. For example, WHOOP does not provide weight data, and Withings does not provide HRV (RMSSD). Only vendors that actually report a given metric appear in the source picker for that metric.
Large Apple Health exports can be 100 MB or more for multi-year history. Parsing runs entirely in your browser — no server is involved — so expect 30–60 seconds for large files.
These are experimental self-host integrations and are hidden on an unconfigured hosted domain. Set WHOOP_ENABLED=true with WHOOP_CLIENT_ID and WHOOP_CLIENT_SECRET, or ULTRAHUMAN_ENABLED=true with ULTRAHUMAN_CLIENT_ID and ULTRAHUMAN_CLIENT_SECRET, then restart the deployment. localhost shows the disabled setup rows even before configuration.