Item Eligibility Updated Webhook
The partner can implement an endpoint that Truemed calls when the HSA/FSA eligibility status of an item changes.
This webhook is triggered when:
- An item’s eligibility is updated (e.g., from
ineligibletoeligible_with_lmn) - An item’s eligibility status is first determined
Authentication: Signed webhooks are HMAC-SHA256 signed. The x-truemed-signature header carries a
timestamp and the signature in the form t=<unix-timestamp>,v0=<hex-signature>. Compute HMAC-SHA256 over
<t>.<raw-request-body> with your webhook signing secret and compare the hex digest to v0. Sign the raw
body bytes exactly as received, since re-serializing the JSON changes the bytes and breaks the signature.
Unsigned (legacy) webhooks instead send the API key verbatim in the x-truemed-api-key header.
Request Notes
The signed body wraps an event envelope inside the delivery envelope, so the catalog item is at
data.data.object:
Fields:
webhook_delivery_id- Delivery id (dlv_…). Retries of the same event repeat the same value; use it to deduplicate. Signed deliveries only.event_type- The event type identifier:product_catalog.item.eligibility_updated. Carried on both the delivery envelope and the inner event envelope, with the same value.data.timestamp- ISO-8601 timestamp of when the event occurreddata.data.object- The item details including:sku- The SKU of the itemname- The name of the itemeligibility- The HSA/FSA eligibility status:eligible- Item is default eligible for HSA/FSAeligible_with_lmn- Item is eligible with a Letter of Medical Necessityineligible- Item is not eligible for HSA/FSA
reviewed_at- ISO-8601 timestamp of when the item’s eligibility was last decided
Unsigned (legacy) webhooks receive the inner event envelope as the top-level body — {event_type, timestamp, data: {object}} — with no webhook_delivery_id. The item is at data.object.
Response Notes
Success Case
HTTP Status: 204
The partner does not need to include any content in the body.
Failure Case
Truemed will retry the requests to your backend with backoff for up to 7 days
Payload
The event envelope, carrying event_type and timestamp. The catalog item itself is at data.data.object.
The event type: product_catalog.item.eligibility_updated.
Deterministic idempotency key for this delivery (dlv_…); stable across retries.
Response
Webhook received successfully (HTTP 204 No Content)