Webhooks

Real-time health data.
No polling required.

Webhooks push health events to your backend the moment they happen. A workout completes, sleep is recorded, a timeseries batch lands. Your endpoint fires immediately.

Register an endpoint in one request.

Polling health data doesn't work.

Health events are unpredictable

Sleep ended 06:47 AM
Workout synced 11:03 AM
HRV batch 11:04 AM
Your poll 11:15 AM

You're always late

If you poll every few minutes, you're either wasting requests or missing the window entirely.

Polling overhead per 1,000 users

Polls per day 288,000
With actual events ~3,000
Wasted requests 99%
Webhooks: 0 wasted requests

Wasted infrastructure

Polling at scale is expensive. Most requests return empty. Your backend processes load that produces no value.

Pull vs. push

// Polling
GET /events every 5 min
// 99% empty responses
// Webhook
POST your-app.com/webhooks
// Fires exactly when data arrives

Push, not pull

Open Wearables sends an HTTP POST when the event occurs. Your system processes it once, immediately.

Every health event.
One delivery mechanism.

Open Wearables fires webhooks across the full data model. Timeseries payloads include the complete samples array. No follow-up API call needed.

Example payload

{

"type": "workout.created",

"data": {

"user_id": "u_123",

"provider": "garmin",

"duration_s": 3720,

"avg_hr": 142

}

}

Session events one per completed activity
  • Workout created
  • Sleep recorded
  • Daily activity summary
  • New provider connection
Timeseries events samples array included
  • Heart rate, HRV, steps, calories
  • SpO2, respiratory rate, temperature
  • Stress, glucose, blood pressure
  • Body composition, fitness metrics, recovery scores
  • Activity timeseries, workout metrics, environmental data

Delivery you can rely on.

Open Wearables handles the hard parts of webhook delivery for you.

If your endpoint is temporarily unavailable, data ingestion continues unaffected. Events queue and can be resent manually.

  • Automatic retries on failed deliveries

  • Cryptographic verification on every incoming request

  • Deduplication to prevent double-processing

  • Delivery logs with full attempt history

  • Test events to validate your integration before going live

Every payload is signed.
Verification is built in.

Each webhook delivery comes with a cryptographic signature. You can verify incoming requests with a single SDK call in Python or Node.js.

No forged requests get through. Stale deliveries older than 5 minutes are rejected automatically.

Python

from svix import Webhook

wh = Webhook(secret)

payload = wh.verify(body, headers)

# Raises exception if invalid or expired

Only receive what you need.

Scope each endpoint to exactly the events and users that matter. Useful for multi-tenant architectures where different services handle different data streams.

Event filtering

Subscribe to specific event types only. Ignore what your service doesn't need.

filter_types: ["workout.created"]

User scoping

Restrict an endpoint to a single user's events only.

user_id: "u_123"

Combined routing

Combine both for granular, per-user, per-event routing.

filter_types + user_id

Register an endpoint in one request.

POST your URL, retrieve your signing secret, send a test event. That's the full setup.

terminal

# 1. Register your endpoint

$ curl -X POST localhost:8000/api/v1/webhooks/endpoints \

-d '{"url": "https://your-app.com/webhooks"}'

# 2. Get your signing secret

$ curl localhost:8000/api/v1/webhooks/endpoints/{id}/secret

{"key": "whsec_..."}

# 3. Send a test event to verify delivery

$ curl -X POST localhost:8000/api/v1/webhooks/endpoints/{id}/test

Read the full webhook guide →

Start receiving health events today.

Deploy Open Wearables, register your endpoint, and your backend starts receiving real-time data from every connected provider.

Self-hosted. Zero per-user fees. MIT licensed.

Built by

Healthcare software & AI development agency specializing in turning health data into intelligent applications.

themomentum.ai

Common questions.

What is a webhook?

A webhook is an HTTP POST request sent by Open Wearables to your endpoint when a health event occurs. Instead of your backend polling for new data, Open Wearables pushes it to you the moment a workout is saved, sleep is recorded, or a timeseries batch is ingested.

What happens if my endpoint is down?

Data ingestion continues unaffected. Failed deliveries are retried with exponential backoff. Events queue and can be resent manually from the delivery logs once your endpoint is back online.

How do I verify webhook payloads?

Each delivery includes a cryptographic signature in the request headers. Retrieve your signing secret from /api/v1/webhooks/endpoints/{id}/secret and verify incoming payloads using the Svix SDK for Python or Node.js, or implement manual HMAC-SHA256 verification. Deliveries older than 5 minutes are automatically rejected.

Can I filter which events my endpoint receives?

Yes. Use filter_types to subscribe only to specific event types, and user_id to restrict an endpoint to a single user. Combine both for per-user, per-event routing.

Do timeseries webhooks include the full data?

Yes. Timeseries event payloads include the complete samples array. You do not need to make a follow-up API call to fetch the data after receiving the webhook.

Is Open Wearables free to use?

Yes. Open Wearables is open source (MIT license) with zero per-user fees. You pay for the infrastructure you deploy it on and nothing else.

Never miss an update

Stay updated with the latest in open wearables, developer tools, and health data integration.

Join our Community. No spam ever.