---
title: "API Reference: Webhooks"
description: BloodCOMM API - Webhooks
---

[Skip to content](https://info.deltadevteam.com/bloodcomm-api-webhooks#main-content)

[Customer Support Portal](https://tickets.deltadevteam.com/portal?hsLang=en)

[![DDTResourceCenter](https://info.deltadevteam.com/hs-fs/hubfs/DDTResourceCenter.png?width=204&height=72&name=DDTResourceCenter.png)](https://info.deltadevteam.com/?hsLang=en)

- [Hardware Support Ticket](https://info.deltadevteam.com/technical-support-hardware)
- [BloodCOMM Support Ticket](https://info.deltadevteam.com/technical-support-software)

Open main navigation

Close main navigation

- [Hardware Support Ticket](https://info.deltadevteam.com/technical-support-hardware)
- [BloodCOMM Support Ticket](https://info.deltadevteam.com/technical-support-software)
- [Customer Support Portal](https://tickets.deltadevteam.com/portal)
- [deltadevteam.com](https://deltadevteam.com/)

[deltadevteam.com](https://deltadevteam.com/)

 Welcome to the DDT Resource Center. Use the search below to find articles, or click on a category.

- There are no suggestions because the search field is empty.

1. [Delta Development Resource Center](https://info.deltadevteam.com/?hsLang=en)
2. [BloodCOMM](https://info.deltadevteam.com/bloodcomm?hsLang=en)
3. [API Reference](https://info.deltadevteam.com/bloodcomm?hsLang=en#api-reference)

June 8, 2026

# API Reference: Webhooks

Webhook functionality is available as an **Alpha (Sandbox Only)** release. During this phase, features and behavior are subject to change without notice and should not be relied upon in production environments.

For access or support, contact your **BloodCOMM Engineering Point of Contact**. Prior to development, ensure that a *Sandbox* account has been configured; if one has not been established, setup will be required

BloodCOMM is able to send out webhooks based on specific events, mirroring the user-facing alert functionality. 

**Note:** Webhook functionality mirrors the user-facing alert system. Consequently, Administrative and Blood Bank organizations will not receive webhooks for devices within organizations to which they have been granted remote access.

However, webhooks for blood-related alerts will still be sent on behalf of remote-access organizations.

---

##### HMAC Secrets

BloodCOMM requires an HMAC secret to be generated prior to sending webhooks.  This allows the receiving software to verify the authenticity of the webhook.  

HMAC-SHA256 signatures are sent within the `X-BloodCOMM-Signature` header on every outbound POST.  Pseudocode is below for parsing the signature:

```
// On receipt of a webhook POST:rawBody      = request.body.bytes; // raw bytes — do NOT parse JSON firstheaderSig    = request.headers["X-BloodCOMM-Signature"]  // "sha256=<hex>"expectedSig  = "sha256=" + HMAC_SHA256(key=YOUR_SECRET, message=rawBody).toHex()if not TIMING_SAFE_EQUAL(headerSig, expectedSig):    return 401 Unauthorizedpayload = JSON.parse(rawBody)              // safe to parse now
```

##### Webhook Payloads

All webhooks will POST via standard HTTPS REST commands.  Your software should respond to the POST with a `200` response, such that the webhook can be marked as sent successfully.  Other responses will trigger an automatic retry mechanism, with an exponential backoff.  After 5 tries, the webhook will be marked as "failed". 

Webhooks all contain the following standard set of key/value pairs within the BODY of the request:

```
BaseData = {  /** Alert type discriminator (i.e. device-temperature). */  alert: string;  /** Unix seconds — when the alert was first detected. */  time: number;  /** Owning org UUID */  organization: string;  /** Present (and true) only on test fires — never on real alerts. */  test?: true;}
```

The following webhooks are available:

| Alert | Description |
| --- | --- |
| `device-temperature` | A device has crossed a defined temperature threshold (increasing or decreasing). |
| `device-battery` | A device has crossed a battery threshold, decreasing. |
| `device-duration` | A device has crossed a duration (holdover) threshold, decreasing. |
| `blood-transfusion` | A Blood Bag has been marked as Transfused. |

Additional webhooks are in development, contact BloodCOMM Support for more information.

 

---

##### Device Webhooks

Device webhooks are prepended with `device-` as alert type.  They extend the base webhook data with the following standard set of device-centric data:

```
DeviceBaseData = {  /** Device type (model, i.e. APRU-006L) */  deviceType: string;  /** Device serial number (i.e. 0001234) */  serialNumber: string;  /** Optional human-friendly device nickname. */  nickname?: string;  /** Current temperature (°C). */  temperature: number;  /** Current battery level (%). */  battery: number;  /** Current holdover level (hrs). */  duration: number;  /** Unix seconds — timestamp of the sensor reading that triggered the alert. */  timestamp: number;  /** Threshold value that was crossed (i.e. temperature °C, battery, etc) % */   thresholdCrossed: number;}
```

Each webhook includes additional data, depending on the event type:

#### `device-temperature`

![](https://img.shields.io/badge/https-POST-goldenrod) ![](https://img.shields.io/badge/BloodCOMM-PRO-red?color=red) ![](https://img.shields.io/badge/BloodCOMM-PREMIUM-blue?color=blue)

```
{  ...BaseData,  ...DeviceBaseData,  /** Temperature reading immediately before the threshold crossing. */  previousTemperature: number;}
```

#### `device-battery`

![](https://img.shields.io/badge/https-POST-goldenrod) ![](https://img.shields.io/badge/BloodCOMM-PRO-red?color=red) ![](https://img.shields.io/badge/BloodCOMM-PREMIUM-blue?color=blue)

```
{  ...BaseData,  ...DeviceBaseData,  /** Battery level immediately before the threshold crossing. */  previousBattery: number;}
```

#### `device-duration`

![](https://img.shields.io/badge/https-POST-goldenrod) ![](https://img.shields.io/badge/BloodCOMM-PRO-red?color=red) ![](https://img.shields.io/badge/BloodCOMM-PREMIUM-blue?color=blue)

```
{  ...BaseData,  ...DeviceBaseData,  /** Holdover level immediately before the threshold crossing (hrs). */  previousDuration: number;  /** Unix seconds — predicted time of temperature       excursion based on remaining Duration. */  predictedExcursion: number;}
```

 

---

##### Blood Webhooks

Blood webhooks are prepended with `blood-` as alert type.  They extend the base webhook data with the following standard set of blood-centric data:

```
BloodBaseData = {  /** Unmodified ISBT-128 DIN barcode value. (appppyynnnnnnff) */  din: string;  /** Expiration date in ISBT-128 format (cyyydddhhmm). */  expirationDate: string;  /** ISBT-128 product code (e.g., E00V0000). */  productCode: string;  /** ISBT-128 blood type code (e.g., 5100 => O+). */  bloodType: string;}
```

Each webhook includes additional data, depending on the event type:

#### `blood-transfusion`

![](https://img.shields.io/badge/https-POST-goldenrod)  ![](https://img.shields.io/badge/BloodCOMM-PREMIUM-blue?color=blue)

```
{  ...BaseData,  ...BloodBaseData,  /** Unix seconds — when the transfusion event was recorded. */  transfusionTime: number;  /** Non-PHI receiving facility name (optional). */  receivingFacilityName?: string;  /** Non-PHI facility identifier(optional). */  receivingFacilityID?: string;  /** Non-PHI first responder or clinician identifier(optional). */  firstResponderID?: string;  /** Non-PHI transport agency identifier. */  transportAgencyID?: string;  /** Optional note field for additional context. */  note?: string;}
```

 

 

 

 

 

- [APRU 6L](https://info.deltadevteam.com/apru-6l?hsLang=en)
- [ICE 2L](https://info.deltadevteam.com/ice-2l?hsLang=en)
- [BloodCOMM](https://info.deltadevteam.com/bloodcomm?hsLang=en#main-content)

    - [Overview](https://info.deltadevteam.com/bloodcomm?hsLang=en#overview)
    - [Bluetooth connectivity](https://info.deltadevteam.com/bloodcomm?hsLang=en#bluetooth-connectivity)
    - [Organization](https://info.deltadevteam.com/bloodcomm?hsLang=en#organization)
    - [Device Dashboard](https://info.deltadevteam.com/bloodcomm?hsLang=en#device-dashboard)
    - [Device Reports](https://info.deltadevteam.com/bloodcomm?hsLang=en#device-reports)
    - [Blood Dashboard](https://info.deltadevteam.com/bloodcomm?hsLang=en#blood-dashboard)
    - [Cold Chain Events](https://info.deltadevteam.com/bloodcomm?hsLang=en#cold-chain-events)
    - [Blood Reports](https://info.deltadevteam.com/bloodcomm?hsLang=en#blood-reports)
    - [GPS Dashboard](https://info.deltadevteam.com/bloodcomm?hsLang=en#gps-dashboard)
    - [Metrics Dashboard](https://info.deltadevteam.com/bloodcomm?hsLang=en#metrics-dashboard)
    - [User Preferences](https://info.deltadevteam.com/bloodcomm?hsLang=en#user-preferences)
    - [Alerts](https://info.deltadevteam.com/bloodcomm?hsLang=en#alerts)
    - [Device Manager](https://info.deltadevteam.com/bloodcomm?hsLang=en#device-manager)
    - [Subscriptions](https://info.deltadevteam.com/bloodcomm?hsLang=en#subscriptions)
    - [Integrations](https://info.deltadevteam.com/bloodcomm?hsLang=en#integrations)
    - [Legal](https://info.deltadevteam.com/bloodcomm?hsLang=en#legal)
    - [API Reference](https://info.deltadevteam.com/bloodcomm?hsLang=en#api-reference)
- [Cybersecurity & Trust](https://info.deltadevteam.com/cybersecurity-trust?hsLang=en)
- [Procurement & Pricing](https://info.deltadevteam.com/procurement-pricing?hsLang=en)
- [Support & Service](https://info.deltadevteam.com/support-service?hsLang=en)

[![DDT\_Logo\_White](https://info.deltadevteam.com/hs-fs/hubfs/DDT_Logo_White.png?width=194&height=56&name=DDT_Logo_White.png "DDT_Logo_White")](https://info.deltadevteam.com/?hsLang=en)

[Contact Us](https://deltadevteam.com/contact-us)

<https://www.facebook.com/deltadevelopmentteam> <https://www.youtube.com/channel/UCx8CewBO4fGfN4tufwUN7vQ?view_as=subscriber> <https://twitter.com/DeltaDev_Team> <https://www.instagram.com/deltadevelopmentteam/> <https://www.linkedin.com/company/delta-development-team-llc> <https://test.deltadevteam.com/news>

Copyright © 2026, Delta Development Team, Inc.  
[Privacy Policy](https://deltadevteam.com/privacy-policy/)