as

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

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.1 includes account_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_press for 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

  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. Handle duplicates: Implement idempotency using request_id or event id
  4. Respond quickly: Return HTTP 200 within 5 seconds to avoid timeout
  5. Trigger video: Consider initiating a live video session after button press for visual verification