Device Addition Notifications
Device addition notifications are sent when a new Ring device becomes available for partner access. This occurs when users add devices to their account or grant additional permissions to the partner integration.
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-13T12:20:20.935994571Z",
"request_id": "216c97be-4d57-45c1-a9f0-28c9f5442e8c",
"account_id": "ava1.ring.account.XXXYYY"
},
"data": {
"id": "<device_id>_device_added_<timestamp>",
"type": "device_added",
"attributes": {
"source": "<device_id>",
"source_type": "devices",
"timestamp": 1770985219558
},
"relationships": {
"devices": {
"links": {
"self": "/v1/devices/<device_id>"
}
}
}
}
}
When Device Addition Occurs
Device addition notifications are triggered when:
- User installs a new Ring device and grants partner access
- User modifies integration settings to include additional devices
- Device permissions are restored after being temporarily revoked
Processing Device Addition
def handle_device_addition(payload):
device_id = payload['data']['attributes']['source']
account_id = payload['meta']['account_id']
# Fetch full device information
device_info = fetch_device_details(device_id)
if device_info:
store_new_device(device_info, account_id)
setup_device_monitoring(device_id)
return {'status': 'device_added'}
else:
return {'status': 'error', 'message': 'Failed to fetch device details'}
Best Practices
- Verify HMAC signature: Always verify the
X-Signatureheader before processing - Use account_id: Associate events with the correct Ring user via
meta.account_id - Immediate processing: Process device additions promptly to enable functionality
- Fetch device info: Call
GET /v1/devices/{id}?include=capabilities,statusafter receiving the notification - Handle duplicates: Implement idempotency using
request_idor eventid - Respond quickly: Return HTTP 200 within 5 seconds to avoid timeout

