as

Settings
Sign out
Notifications
Alexa
Amazon Appstore
Ring
AWS
Documentation
Support
Contact Us
My Cases
Ring

Device Offline Notifications

Device offline notifications are sent when a Ring device goes offline and is no longer reachable. These real-time notifications enable partners to handle device unavailability gracefully and inform users.

Webhook Delivery

Ring delivers all webhook notifications with an HMAC-SHA256 signature in the X-Signature header. Partners must verify this signature before processing the payload. See Notifications for signature verification details.

Webhook Payload

{
  "meta": {
    "version": "1.1",
    "time": "2026-02-13T23:26:49.710448203Z",
    "request_id": "343385ae-1de8-4b29-85aa-07bd4b7112fd",
    "account_id": "ava1.ring.account.XXXYYY"
  },
  "data": {
    "id": "<device_id>_device_offline_<timestamp>",
    "type": "device_offline",
    "attributes": {
      "source": "<device_id>",
      "source_type": "devices",
      "timestamp": 1771025206000
    },
    "relationships": {
      "devices": {
        "links": {
          "self": "/v1/devices/<device_id>"
        }
      }
    }
  }
}

When Device Offline Occurs

Device offline notifications are triggered when:

  • A device loses network connectivity
  • A device powers off or runs out of battery
  • A device experiences a hardware or firmware issue preventing communication

Processing Device Offline Events

def handle_device_offline(payload):
    device_id = payload['data']['attributes']['source']
    account_id = payload['meta']['account_id']
    offline_timestamp = payload['data']['attributes']['timestamp']
    
    update_device_status(device_id, account_id, 'offline', offline_timestamp)
    terminate_active_streams(device_id)
    pause_device_operations(device_id)
    
    return {'status': 'processed'}

Best Practices

  1. Verify HMAC signature: Always verify the X-Signature header before processing
  2. Use account_id: Associate events with the correct Ring user via meta.account_id
  3. Update status tracking: Mark the device as offline in your system
  4. Terminate active sessions: Close any active video streams for the device
  5. Pause operations: Suspend scheduled operations until the device comes back online
  6. Handle duplicates: Implement idempotency using request_id or event id
  7. Respond quickly: Return HTTP 200 within 5 seconds to avoid timeout