Button Press Notifications
Button press notifications are sent when a Ring doorbell button is pressed. These real-time notifications enable partners to respond immediately to doorbell press events.
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-14T00:02:53.027052438Z",
"request_id": "c83081fc-2f1b-4cb7-8b18-b18a318b8bab",
"account_id": "ava1.ring.account.XXXYYY"
},
"data": {
"id": "<device_id>_button_press_<timestamp>",
"type": "button_press",
"attributes": {
"source": "<device_id>",
"source_type": "devices",
"timestamp": 1771027372393
},
"relationships": {
"devices": {
"links": {
"self": "/v1/devices/<device_id>"
}
}
}
}
}
Payload Fields
Meta Information
- version: Webhook payload version (
1.1includesaccount_id) - time: ISO 8601 timestamp when Ring sent the webhook
- request_id: Unique identifier for this webhook request (use for idempotency)
- account_id: The Account ID of the Ring user associated with this event
Event Data
- id: Unique identifier (format:
<device_id>_button_press_<timestamp>) - type: Always
button_pressfor doorbell press events - source: Device ID of the doorbell that was pressed
- source_type: Always
devices - timestamp: Epoch milliseconds when the button was pressed
When Button Press Occurs
Button press notifications are triggered when:
- A visitor presses the Ring doorbell button
- The doorbell hardware button is physically activated
Processing Button Press Events
def handle_button_press(payload):
device_id = payload['data']['attributes']['source']
account_id = payload['meta']['account_id']
press_timestamp = payload['data']['attributes']['timestamp']
event_id = payload['data']['id']
log_button_press(device_id, account_id, press_timestamp, event_id)
trigger_doorbell_response(device_id, account_id, press_timestamp)
return {'status': 'processed'}
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 - Handle duplicates: Implement idempotency using
request_idor eventid - Respond quickly: Return HTTP 200 within 5 seconds to avoid timeout
- Trigger video: Consider initiating a live video session after button press for visual verification

