ONVY webhooks let your integration react to changes without polling.Documentation Index
Fetch the complete documentation index at: https://docs.onvy.health/llms.txt
Use this file to discover all available pages before exploring further.
Configuration shape
Webhook delivery is configured per project:urlmust be HTTPSeventsmust contain only supported event namesenabledmust betrueto send deliverieshmac_secretmust be at least 16 characters
Delivery payload
One POST can contain multiple matching events. Up to10 events are batched into a single delivery:
id, created_at, project_id, org_id, api_version, per-event name, optional user_id) is always plain JSON, even when individual event payloads are externalized.
Headers
X-Webhook-SignatureX-Webhook-TimestampX-Webhook-ID
sha256=<hex_digest>.
Verify signatures
Delivery semantics
- Delivery is asynchronous and at-least-once: your endpoint must be idempotent.
- Failed deliveries are retried with exponential backoff. The HTTP dispatch path retries on
429,500,502,503, and504withtotal=3andbackoff_factor=1. Internal EventBridge dispatch into the webhook path is also retry-based and protected by a DLQ. - Action semantics are encoded in the event
name(for exampledaily_records:created,daily_records:updated,daily_records:deleted).
Idempotency
Use these fields to deduplicate on your side:- The envelope
id, also delivered as theX-Webhook-IDheader, is unique per delivery. - Per-event payloads carry stable resource IDs (for example a
daily_recordsevent’sdata.idmatches the resource ID returned by the API).
Large payloads
Large event payloads can be externalized. When this happens, the event carries aurl pointing to the full payload while routing metadata stays in the envelope. Your handler should fetch the URL when present rather than rely on inline data only.
Event families
The current public webhook catalog includes:users:*users.data_syncs:updatedfor provider sync state changes (for example deep-history loads)facts:*daily_records:*ai_summaries:*for meal, sleep, workout, daily, weekly, nutrition, trend, and impact summariesmeals:*, includingmeals:updatedwhen async nutrition analysis completes and asummary_idbecomes availablecustom_records:*workouts:*lab_tests:*- Batch lifecycle events such as
batch.succeeded