{"data":[{"category":"Account info","data_type":"Email address","collected":true,"shared":true,"optional":false,"purpose":"App functionality (sign-in, event invitations)","retention":"While active; hidden for a 30-day recovery window after a deletion request, then purged","user_can_delete":true},{"category":"Contact info","data_type":"Circle invitation recipient email","collected":true,"shared":true,"optional":true,"purpose":"App functionality (delivering and matching a recipient-controlled circle invitation)","retention":"Until accepted, declined, cancelled, or 30-day expiry; also removed with the circle, inviter account, or matching recipient account","user_can_delete":true},{"category":"Account info","data_type":"Display name","collected":true,"shared":true,"optional":false,"purpose":"App functionality (showing who you are to your circle)","retention":"While active; hidden for a 30-day recovery window after a deletion request, then purged","user_can_delete":true},{"category":"User content","data_type":"Circle names and colors","collected":true,"shared":true,"optional":false,"purpose":"App functionality (group scheduling)","retention":"Until circle deletion; a circle with other members passes permanently to a remaining member when its creator requests account deletion, while a sole-member circle stays private during the 30-day recovery window","user_can_delete":true},{"category":"User content","data_type":"Circle membership","collected":true,"shared":true,"optional":true,"purpose":"App functionality (member access and coordination)","retention":"Until the member leaves or the circle is deleted; hidden during the 30-day account recovery window and restored or purged at its end","user_can_delete":true},{"category":"User content","data_type":"Event titles, descriptions, locations, time slots","collected":true,"shared":true,"optional":false,"purpose":"App functionality (event scheduling)","retention":"Until event or circle deletion","user_can_delete":true},{"category":"User content","data_type":"Availability responses (name, optional email/note, authenticated organizer response)","collected":true,"shared":true,"optional":false,"purpose":"App functionality (showing who can attend)","retention":"Until response or event deletion; an authenticated response is hidden during the 30-day account recovery window and restored or purged at its end","user_can_delete":true},{"category":"User content","data_type":"Optional on-my-way status","collected":true,"shared":true,"optional":true,"purpose":"App functionality (short-lived day-of coordination)","retention":"Hidden after the locked time slot ends; deleted when cleared, with the event/account, or during routine cleanup","user_can_delete":true},{"category":"Location","data_type":"One-time approximate ETA location","collected":true,"shared":true,"optional":true,"purpose":"App functionality (member-initiated rough ETA sharing)","retention":"Visible only before the locked start; deleted when cleared, with the event/account, or during routine cleanup","user_can_delete":true},{"category":"Location","data_type":"Event place coordinates chosen by the organizer","collected":true,"shared":true,"optional":true,"purpose":"App functionality (organizer picks where the Rally happens, so day-of ETAs resolve)","retention":"Stored with the event; deleted with the event or circle. A transferred circle and its events outlive the former owner account","user_can_delete":true},{"category":"User content","data_type":"Optional self-confirmed recap attendance","collected":true,"shared":true,"optional":true,"purpose":"App functionality (participant-controlled recap inclusion)","retention":"Until participant removal or event/circle deletion; hidden during the 30-day account recovery window and restored or purged at its end","user_can_delete":true},{"category":"App activity","data_type":"Push notification preferences","collected":true,"shared":false,"optional":true,"purpose":"App functionality (user-controlled event and day-of updates)","retention":"Until changed or immediately removed when account deletion is requested; not restored","user_can_delete":true},{"category":"Device or other identifiers","data_type":"Expo push token","collected":true,"shared":true,"optional":true,"purpose":"App functionality (delivering opted-in push notifications)","retention":"Until device removal, sign-out, push disable, provider invalidation, or immediate removal when account deletion is requested; not restored","user_can_delete":true},{"category":"App activity","data_type":"Anonymous pages viewed and buttons tapped, not linked to your Rally account","collected":true,"shared":false,"optional":false,"purpose":"Analytics (PostHog EU Cloud)","retention":"90 days","user_can_delete":false},{"category":"Diagnostics","data_type":"Exception messages and stack traces; app/device version; fixed or templated operation/route labels; status and request IDs","collected":true,"shared":false,"optional":false,"purpose":"App stability (Sentry and PostHog)","retention":"90 days","user_can_delete":false},{"category":"Device or other identifiers","data_type":"Transient apparent network address","collected":true,"shared":true,"optional":false,"purpose":"Security and abuse prevention for anonymous API requests","retention":"Rally application memory only for the active rate-limit window (up to one hour); infrastructure processes API traffic separately","user_can_delete":false},{"category":"Device info","data_type":"Device model, OS version, app version","collected":true,"shared":false,"optional":true,"purpose":"Diagnostics","retention":"90 days","user_can_delete":false}]}