igloo
Docs / igloohome / Articles on Webhook / Bridge Event Webhooks

Bridge Webhook Events

Bridge devices send webhook notifications for two kinds of events: events the Bridge generates automatically on its own, and events triggered by a job you sent to the Bridge (see Jobs for Lock (Bridge Proxied) and Jobs for Bridge (Bridge Targeted)).

All webhook requests are signed — see Webhook Security for how to validate them.

Bridge Automated Events

These events are caused by the Bridge device itself and occur automatically, without user intervention.

Event Type Number Mapping
Job Complete 3
Activity Log Received 5
Bridge Connection 10

Job Complete Event

{
  "payload": {
    "event": {
      "id": "string",
      "type": 3,
      "data": {
        "jobId": "string",
        "jobStatus": 0
      },
      "date": "ISODATE",
      "proxyTransportMethod": 2,
      "proxyId": "string"
    },
    "product": {
      "id": "string",
      "type": 1
    }
  }
}

type is always 3 for Job Complete events. data also carries job-specific fields — see Job-Specific Webhook Data below. proxyId is the Bridge device ID that relayed the command; product.id is the target lock device ID.

Job Status Codes

Code Status Description
0 Success Job completed successfully
1 Generic Error Job failed due to generic error
2 Operation In Progress Another operation is currently running on the device

Supported Job Types

The following job types trigger Job Complete Event webhooks:

Job Type ID Operation Name Description
1 Lock Engage the lock mechanism
2 Unlock Disengage the lock mechanism
4 Create PIN Add a new custom PIN code to the device
5 Delete PIN Remove an existing custom PIN code
9 Get Battery Level Retrieve current battery percentage
10 Get Status Fetch current lock state and diagnostics
15 Get Logs Get device activity logs

Activity Log Received Event

{
  "payload": {
    "event": {
      "id": "string",
      "type": 5,
      "data": {
        "activityLogs": [
          {
            "logType": 0,
            "entryDate": 0,
            "operationId": 0,
            "keyId": 0,
            "pin": "string",
            "newPin": "string",
            "pinType": 0,
            "value1": 0,
            "value2": 0,
            "value3": 0,
            "value4": 0,
            "value5": 0,
            "time1": 0,
            "time2": 0
          }
        ]
      },
      "date": "ISODATE",
      "proxyTransportMethod": 2,
      "accessoryId": "string"
    },
    "product": {
      "id": "string",
      "type": 1
    }
  }
}

activityLogs is an array of lock activity objects. Fields on each activity object other than pin, newPin, pinType, and value1-value5/time1-time2 are always present; those are populated only for the log types that use them.

Every lock activity object has these common fields:

Common Field Description
logType An integer indicating the type of event
entryDate The time since UNIX epoch in seconds that the event occurred
keyId Identifier of the Bluetooth Guest key used for guest operations, or 0 if it was an event initiated via a Bluetooth Admin key or via the lock's keypad
operationId An identifier of the Bluetooth command operation that generated this activity log, or undefined if there was no operationId defined for that particular command

Some log types are populated with additional fields:

Log Type Translation Additional Fields Description
11 Bluetooth unlock N/A N/A
13 Bluetooth set time time1 The time the clock was set to
14 Change volume via keypad value1, value2 Previous volume, new volume
15 Change volume via Bluetooth value1, value2 Previous volume, new volume
16 Wrong PIN pin The wrong PIN that was attempted
17 PIN exceeded maximum length pin The PIN that was attempted
18 Unlock with master PIN pin The master PIN
19 Unlock with generated PIN previously used at least once (permanent, duration, weekly etc) pin The PIN used to unlock
20 Use a one-time PIN pin The PIN that was used
21 Use a permanent PIN for the first time pin The PIN that was used
22 Use a duration PIN for the first time pin The PIN that was used
23 Use a weekly PIN for the first time pin The PIN that was used
24 Use a monthly PIN for the first time pin The PIN that was used
25 Use a weekday PIN for the first time pin The PIN that was used
26 Use a weekend PIN for the first time pin The PIN that was used
27 Create a new PIN via Bluetooth pin, time1, time2, pinType The PIN that was used; start time if sent via Bluetooth; end time if sent via Bluetooth; the type of PIN used
28 Change PIN via keypad pin, newPin The original PIN; the new PIN it is changed to
29 Change PIN via Bluetooth pin, newPin, time1, time2, pinType The original PIN; the new PIN, if sent via Bluetooth; start/end time if sent via Bluetooth; the PIN type if sent via Bluetooth
30 Delete PIN via keypad pin The PIN that was deleted
31 Delete PIN via Bluetooth pin The PIN that was deleted
32 Change Master PIN pin, newPin The old master PIN; the new master PIN
33 Change auto-relock via keypad value1, value2 Time of timer autorelock in seconds; time of sensor autorelock in seconds
34 Change auto-relock via Bluetooth value1 Time of sensor autorelock in seconds, or 0 if disabled
35 Change incorrect PIN lockout count via keypad value1, value2 Previous value of incorrect PIN lockout count; new value
36 Change incorrect PIN lockout count via Bluetooth value1, value2 Previous value, or 0 if disabled; new value, or 0 if disabled
37 Bluetooth lock N/A N/A
38 Enable auto-unlock value1, value2 1 if enabled, 0 if disabled; minimum RSSI to unlock when touched, actual RSSI value = value2 + 256
39 Blacklist Bluetooth Guest key value3 Guest key id
40 Unblacklist Bluetooth Guest key value3 Guest key id
41 Change daylight savings time N/A N/A
42 Add key card value5 Card UID
43 Key card unlock value5 Card UID
44 Delete key card value5 Card UID
45 Set LED brightness value1 Brightness
46 Set relock alarm value1 Time before alarm sounds after opening in seconds, or 0 if disabled
47 Auto-relock lock (after opening and closing the lock) N/A N/A
48 Auto-relock lock (without first opening the lock) N/A N/A
49 Lock via keypad/button N/A N/A
50 Unlock via button N/A N/A
51 Lock with key/thumbturn N/A N/A
52 Unlock with key/thumbturn N/A N/A
53 Attempted break-in N/A N/A
54 Add fingerprint value2 Fingerprint UID
55 Delete fingerprint value2 Fingerprint UID
56 Fingerprint unlock value1, value2 0 if unlock was successful, else a Bluetooth command result code; fingerprint UID (null if unsuccessful)
57 Invalid key card unlock attempt value5 Card UID

Bridge Connection Event

Sent when a Bridge (EB1X) connects to or disconnects from the server. Use it to update device status, trigger alerts, or drive automation when connectivity changes.

{
  "payload": {
    "event": {
      "id": "string",
      "type": 10,
      "data": {
        "isOnline": true
      },
      "date": "ISODATE",
      "proxyTransportMethod": 2
    },
    "product": {
      "id": "string",
      "type": 1
    }
  }
}

type is always 10 for Bridge Connection events. data.isOnline is true when the bridge is online (connected), false when offline (disconnected). product.id is the Bridge device ID.

Bridge Targeted Events

Bridge Targeted Events are sent when a Bridge device processes a job that targets the Bridge itself (see Jobs for Bridge (Bridge Targeted)).

Event Type Number Mapping
Job Processed 3

Get Device Status

{
  "payload": {
    "event": {
      "id": "string",
      "type": 3,
      "data": {
        "jobId": "string",
        "jobStatus": 0,
        "wifiNetworkStatus": 0,
        "wifiNetworkSsid": "string",
        "wifiNetworkIpaddr": "string",
        "wifiNetworkDns": "string",
        "wifiNetworkChannel": 0,
        "wifiNetworkBand": 0,
        "wifiNetworkRssi": 0,
        "lockRssiList": [0],
        "locksMaxCapacity": 0,
        "locksCurrentAdded": 0
      },
      "date": "ISODATE",
      "proxyTransportMethod": 0
    },
    "product": {
      "id": "string",
      "type": 2
    }
  }
}

Job Status

Job Status Number Mapping
Success 0
Generic failure 1
Another operation is in progress 2

WiFi Network Status

WiFi Network Status Number Mapping
Connected 0
Disconnected/SSID not found/Invalid Password 2
No Internet Connectivity 5

Job-Specific Webhook Data

Each Bridge Proxied Job's Job Complete Event webhook (type: 3) carries job-specific fields in data, alongside the common fields (jobId, jobStatus, date, proxyTransportMethod, accessoryId) and a product object identifying the device. All timestamps are ISO 8601 (e.g. 2023-04-05T12:34:56Z); proxyTransportMethod is always 2.

Common Job Status Codes (shared across all job types unless a job overrides them below)

Job Status Number Mapping
Success 0
Generic failure 1
Another operation is in progress 2

Lock / Unlock Device

No job-specific fields — data carries only jobId and jobStatus.

{
  "event": {
    "id": "string",
    "type": 3,
    "data": {
      "jobId": "string",
      "jobStatus": 0
    },
    "date": "ISO_DATE",
    "proxyTransportMethod": 2,
    "accessoryId": "string"
  },
  "product": {
    "id": "string",
    "type": 1
  }
}

Create Custom PIN

No job-specific data fields beyond jobId/jobStatus, but adds these jobStatus codes:

Job Status Number Mapping
Invalid Custom PIN length 5
Duplicate PIN 9
Insufficient PIN Storage 12

Delete PIN

Adds this jobStatus code:

Job Status Number Mapping
PIN not found 3

Get Battery Level

data adds batteryLevel:

{
  "event": {
    "id": "string",
    "type": 3,
    "data": {
      "jobId": "string",
      "jobStatus": 0,
      "batteryLevel": 75
    },
    "date": "ISO_DATE",
    "proxyTransportMethod": 2,
    "accessoryId": "string"
  },
  "product": {
    "id": "string",
    "type": 1
  }
}
Device Battery Level Range Description
0 - 100 Represents battery level as a percentage

Get Device Status

data adds lockOpen and doorOpen:

{
  "event": {
    "id": "string",
    "type": 3,
    "data": {
      "jobId": "string",
      "jobStatus": 0,
      "lockOpen": false,
      "doorOpen": true
    },
    "date": "ISO_DATE",
    "proxyTransportMethod": 2,
    "accessoryId": "string"
  },
  "product": {
    "id": "string",
    "type": 1
  }
}
Lock Open Boolean Mapping
Locking Mechanism Not Open false
Locking Mechanism Open true
Door Open Boolean Mapping
Door Closed false
Door Open true