ProofClock

Data Flow & Architecture

Prepared for Ring certification · Last updated: 9 October 2026

ProofClock is metadata-only. The architecture below has no media pipeline: no video, image, or audio is ever requested, transferred, or stored. The only Ring data in the system is motion-event timestamps, device metadata, and the account email captured at linking.

1. Data storage locations and systems

All data is stored in AWS us-east-1 (N. Virginia), encrypted at rest with AWS-managed encryption. Customer data is not stored anywhere else, with these exceptions. On the person’s own device, the app keeps the signed-in email and session token in the phone’s secure storage (iOS Keychain / Android Keystore), or in the browser’s local storage for the web dashboard; the phone also keeps a sign-out the server has not yet confirmed until it can send it, and any CSV report the person chooses to export. Push notifications are delivered to and shown on the phones registered for them, and Apple or Google may hold one until an offline phone reconnects (section 2).

AWS us-east-1 Amazon DynamoDB (encrypted at rest) • users — Ring account id, linked email, tokens (server-side) • devices — id, name, type, online/offline status • sites & schedules — customer configuration • events — motion timestamps (auto-expire ~90 days) • visits/verdicts — derived attendance results • memberships — invited users and roles • audit — access log (~1 year) • webhook-dedupe — request ids • users › push devices — phone push tokens (once allowed) AWS Lambda + API Gateway Stateless compute — webhook intake, API, scheduled verdict computation. No data at rest. Amazon S3 + CloudFront Static web dashboard only (HTML/JS/CSS). Private bucket, Origin Access Control, HTTPS. No customer data stored here.

Not stored anywhere: video, images, audio, media clips, snapshots, faces, or biometric data. Ring OAuth tokens are stored server-side in DynamoDB and never reach the browser.

Push notifications. For each phone that allowed notifications, the users row holds its push token, with the platform (iOS/Android), the registering member’s email, a one-way fingerprint of the session it was registered with and its SNS endpoint reference. Amazon SNS, in us-east-1, holds a delivery endpoint with the same token and nothing else. Removing the token from the users row — on sign-out of that session, when the owner removes that member, on account deletion or unlink, when the session it was registered with expires, or at the first send after Apple or Google have refused the token — stops all sending to that phone and deletes its SNS endpoint.

2. Data flow between systems

Ring Partner API webhooks + account linking Lambda: webhook intake HMAC verify (raw body) + dedupe DynamoDB timestamp + device status HTTPS POST metadata only Lambda: scheduler (cron) clusters timestamps → verdicts DynamoDB visits + verdicts Customer browser dashboard (CloudFront) Lambda: REST API session token + role checks HTTPS Resend (email) sign-in codes, invitations, account notices address + message content (no media)
Push registration — only after the person allows notifications Phone app raw APNs / FCM token Lambda: REST API PUT /api/push-token DynamoDB users · push devices Push delivery — a settled verdict, typically 10–20 min after a window closes Lambda: scheduler title, body, ids AWS SNS us-east-1 endpoint APNs / FCM Apple / Google Phone notification shown No video, images, audio or Ring device identifiers on either path, and no email address on the delivery path.
HopData transferredProtection
Ring → Lambda (webhook)Motion-event timestamp, device id/status, request idTLS; HMAC-SHA256 signature verified on raw body; dedupe
Ring → Lambda (linking)OAuth code → tokens; account id + email via Users APITLS; 60-second code; tokens stored server-side only
Lambda ↔ DynamoDBMetadata and derived verdictsTLS; IAM least-privilege; encrypted at rest
Browser ↔ APISites, schedules, verdicts for the signed-in accountTLS; bearer session token; per-account scoping + roles
Lambda → ResendRecipient address and message content: sign-in codes, team invitations (which name the inviting owner), account service notices, and — only if the customer turns it on — a weekly summary listing that customer’s own site names and verdict countsTLS; no video, images or audio, and no Ring device identifiers
Phone app → Lambda (push registration)The phone’s push token issued by Apple or Google and its platform (iOS/Android) — sent only after the person allows notifications; stored on the account’s users row with the registering member’s email and a one-way session fingerprintTLS; bearer session token; per-account scoping; deleted on sign-out, member removal, account deletion and when Apple or Google reject the token
Lambda → AWS SNSEndpoint registration: the push token only. Each notification: title and body naming the site and the verdict, with visit details such as the schedule name, window, arrival / last-seen times and time on site, plus internal site, schedule and visit idsTLS; IAM scoped to creating, publishing to and deleting endpoints of ProofClock’s own platform applications
AWS SNS → Apple APNs / Google FCM → phoneThe push token and the notification (title, body, internal ids) onlyTLS; no account ID, email address, Ring device identifiers, video, images or audio

Erbacci LLC (Wyoming, USA) · Contact: info@erbacciltd.com · ProofClock · Powered by Ring