Issue testing staging app with motion events

My staging app receives device_added/device_removed webhooks correctly, but never receives motion_detected, even though the official Ring app shows the motion alert firing. Is there an additional certification or subscription step required for motion event delivery to staging apps?

Hi,

There is no additional certification or subscription step required for motion_detected webhook delivery. Since your app is already receiving device_added/device_removed webhooks correctly, your webhook endpoint and HMAC verification are working fine. The issue is almost certainly on the device settings side.

The most common reason for not receiving motion_detected events while the Ring app still shows motion alerts is the Smart Alerts setting on the device. If the user has Smart Alerts configured, it can filter which motion types are delivered to partner apps. There is currently no API support to check whether Smart Alerts is enabled, so your app cannot detect this programmatically.

Here’s what to check, in order of likelihood:

  1. Smart Alerts (most common cause) - In the Ring app, go to your device settings and check if Smart Alerts is filtering motion types. Try disabling Smart Alerts temporarily to see if motion_detected events start flowing to your webhook.

  2. Motion Recording - Ensure Motion Recording is enabled for the device in the Ring app under Device Settings > Motion Settings. If this is off, motion events won’t be generated for partner apps even though the Ring app may still show alerts.

  3. Motion Zones - If motion zones are configured too narrowly, motion occurring outside those zones won’t trigger webhook events. You can check the current zone configuration via the Device Configuration API (GET /v1/devices/{device_id}/configurations), but the zones themselves can only be changed in the Ring app.

  4. Ring Protection Subscription - Confirm that your staging user’s Ring account has an active Ring Protection plan. This is a prerequisite for the testing phase.

  5. Device Online Status - Verify the device is online via the Device Discovery API. If the device is offline, it won’t generate motion events.

All of the settings in items 1-3 are device-level configurations that can only be changed in the Ring app. They’re not accessible or modifiable through the Partner API.

Let me know if disabling Smart Alerts resolves it. If you’ve checked all of the above and still aren’t receiving events, please open a support ticket through the Developer Portal and we can look into delivery logs on our end.

Thanks for the detailed checklist — I went through all five items:

1. Smart Alerts: disabled
2. Motion Recording: confirmed on
3. Motion Zones: expanded to cover the entire camera frame (in case the original zone was excluding part of the room)
4. Ring Protection subscription: active “Premium Legacy with Alarm Professional Monitoring” plan
5. Device online status: the device is clearly online and responsive (motion light behavior, live view, and Ring app alerts all working normally), though I couldn’t confirm this via the Partner API directly — both GET /v1/devices/{id} and GET /v1/devices/{id}/configurations return 403 Forbidden for my app’s current OAuth scope (ava.v1:read).

After addressing all five, motion_detected still never reaches my webhook endpoint, even though a real motion alert fires in the Ring app at the same moment. device_added/device_removed continue to work reliably through the same endpoint. Could you check delivery logs on your end for my staging app (client_id: RingAudioTranscription_z0cwqWJ64WnL9oEHLiOfV)?

Hi Justin,

Thanks for working through all of those. The 403 Forbidden on GET /v1/devices/{id} and GET /v1/devices/{id}/configurations is a significant clue, and I think it points to the root cause.

The ava.v1:read scope on your token is correct for those endpoints. A 403 there typically means the device is not yet accessible to your partner app, even though the user has linked their Ring account. This can happen if your app has not yet received a subscription_activated webhook for that device (either a paid subscription or a free trial enrollment through your app).

Here’s the distinction: the Ring Protection plan on the user’s Ring account is a prerequisite for testing, but there is also a separate per-app subscription or trial that must be active for your app to have full device access (including motion event delivery). The device_added and device_removed webhooks are account-linking events that fire regardless, but motion_detected delivery and device API access are gated by whether the device has an active subscription or trial associated with your partner app specifically.

To confirm this theory:

  1. Check whether you have ever received a subscription_activated webhook for this staging user. If not, that’s the missing piece.
  2. Try calling GET /v1/accounts/me/subscriptions with your access token. If it returns an empty data array or a 403, then no partner app subscription or trial is active for this user.
  3. If no subscription is active, you’ll need to ensure your app’s subscription/trial flow is set up correctly in the Developer Portal so that staging users can activate a trial.

Regarding the 403 on device endpoints specifically: that error is documented as “Not authorized to access this device,” which aligns with the device not being covered by an active partner subscription.

One more note: please avoid sharing your client_id in public forums. While it is not a secret on the level of your client_secret or HMAC key, it is still an identifier that should be kept to secure channels. For delivery log investigations, please open a support ticket through the Developer Portal where we can handle credentials safely.

Let me know if checking the subscription state clears things up.

Thanks - I confirmed the subscriptions endpoint is empty (GET /v1/accounts/me/subscriptions returns data: []) and device access is still 403. I also completed my account’s payment/tax profile (the one gated behind the “paid app/in-app purchasing” warning) in case that was a prerequisite, but neither the subscriptions list nor device access changed after that.

I’ve looked through every section I can find in the Developer Portal - App information (General, Media assets, Compatibility, Additional tabs), Account linking (staging URLs), and the account payment/tax settings - but I can’t find where to actually configure a subscription or trial tier for my app, free or otherwise, so my staging account has something to activate. Could you point me to the specific place in the portal where that gets set up?

Hi Justin,

Thanks for confirming. The empty subscriptions response and the 403 on device endpoints are the root cause of your missing motion events.

Here’s what’s happening: the subscription or trial for your partner app is normally activated by end users during the app installation flow in the Ring app. When a user installs your app from the Appstore, there’s a step where they enroll in a trial or purchase a subscription. That activation is what grants your app full device access and enables motion event delivery.

For staging, this creates a chicken-and-egg problem. Your app isn’t published yet, so your staging users can’t go through that normal installation flow to trigger a subscription activation.

There isn’t a self-service screen in the Developer Portal to configure subscription tiers for staging. This is a known gap in the testing experience.

Next steps:

Open a support ticket through the Developer Portal and request that a trial subscription be manually provisioned for your staging user’s account against your app.

Once a subscription or trial is active, you should see:

  • subscription_activated webhook delivered to your endpoint
  • Device API calls returning 200 instead of 403
  • motion_detected webhooks arriving when motion occurs

Apologies for the runaround on this one.