← BACK TO APP Vol. III · Legal
DUGOUT RADAR · POLICY

Privacy Policy

Last updated June 19, 2026.
Introduction

Dugout Radar provides real-time MLB rain delay predictions and weather forecasts. The app is free to use, and this policy describes what data we collect, why, and how we protect it. We collect as little as possible and do not sell or share your data with advertisers.

Who We Are

Dugout Radar is an independent app. Questions or requests about your data can be sent to dugoutradarapp@gmail.com.

Data We Collect

All visitors. When you open the app, a random identifier is generated and stored in your browser. It is not tied to your name, email, or IP address. It is used only to maintain your preferences and, if you choose, link your alerts across sessions. We also log the visit and any tab navigation for usage analytics (see Analytics section below).

Push notification subscribers. If you enable push notifications, we store your push credentials alongside your random identifier and, optionally, your favorite team. In the web app these credentials are your browser's Web Push subscription; in the iOS app they are an Apple Push Notification service (APNs) device token. In both cases the credential only lets us deliver notifications to your device and is not tied to your name, email, or IP address. We also store your notification preferences — whether you want alerts for all at-risk games, alerts for your favorite team, alerts for your tracked roster players, a once-a-day morning summary, a per-game mute for games you have pinned (pinned games otherwise receive scheduled risk check-ins and all-clear notices), and your quiet-hours window along with your device's timezone offset (needed to honor that window in your local time) — and a timestamp recording whether the one-time welcome notification has already been delivered to you. You can revoke this at any time through your browser or device settings, or in the Settings tab.

Tracked roster players (push subscribers only). If you enable push notifications and track players on the Roster tab, your tracked list — each player's name, MLB player ID, and current team — is synced to our servers so we can alert you when a game involving a tracked player's team is delayed or postponed, and so your roster can be restored if your device clears its local storage. Position and jersey number stay on your device. Removing players from your roster removes them from our servers; the synced list is also deleted automatically once you no longer have any active push subscription. If you never enable push notifications, your roster stays in your browser only.

Push delivery log. Each time we send a push notification, we record a one-way hash of the subscription endpoint, the notification type (e.g., rain-risk warning, welcome, daily check-in), a hash of the payload, and the timestamp. This log lets us enforce a per-subscriber safety ceiling (we will never send more than 12 notifications to one device in 24 hours, and normal operation sends far fewer) and review delivery patterns. The raw endpoint URL is not stored in this log, only the hash. Entries are deleted automatically after 90 days.

Data We Do Not Collect
IP addresses
Never stored.
Device fingerprinting
Not performed.
Your location
Not requested.
Browsing history
Not collected.
Email addresses
Not collected — the app does not sign you in or accept payments.
Payment information
Not collected — the app is free.
Custom roster (without notifications)
If you have not enabled push notifications, roster contents (player names, team) are stored in your browser only and never sent to our servers. Push subscribers' tracked lists are synced to power roster delay alerts — see "Data We Collect" above. A binary signal indicating whether you have a saved roster is logged as an anonymous usage event.
How We Use Your Data
Random identifier
Linking preferences and alerts across sessions.
Push credentials
Delivering weather delay notifications.
Favorite team
Routing the right alerts to you.
Watched games
Delivering per-game alerts: delay events, scheduled risk check-ins for games you pin (day-before, morning-of, and about three hours before first pitch), and an all-clear notice when a high delay risk subsides. Each pinned game has its own mute switch; muting stops all notifications for that game while keeping it on your My Games list.
Analytics events
Understanding how the app is used in aggregate — never linked to personal identity.
Feature interaction events
Understanding which features are shown to users, in aggregate.
Analytics

We log app usage events in the following categories:

Visits & tab navigation
When the app is opened and which tabs are viewed.
Game detail opens
Which game was opened (home team only) and how far before or after first pitch — e.g., "2–6 hours before game." Never which specific user opened it.
Feature views
Whether sections like Tarp Watch, Should I Go?, rain timing, venue history, venue history strip, comparable games, or prediction timeline were shown during a game detail view — passive counts only, not taps or interactions.
Session depth
How many interactions occurred before you left, stored as a broad bucket (1, 2–4, 5–10, or 10+).
Push notification opens
Whether a notification tap resulted in opening the app — tracked as an aggregate rate, not per user.

Each event records the date, a 2-hour time block in Eastern Time (for example, 6–8 PM, never an exact minute), the event category, and platform type (PWA or browser, mobile or desktop). No event records your identity or links you to specific games beyond the daily pseudonym described below.

For unique-user counting, we create a daily pseudonym by hashing your random identifier together with the current date. A new pseudonym is produced each day, so you cannot be linked across days. Your raw identifier is never written to disk in our analytics system. All analytics records are automatically deleted after 90 days.

Cookies and Browser Storage
Random identifier
localStorage + cookie — linking preferences across sessions.
Favorite team
localStorage — personalizing alerts and display.
Custom roster
localStorage — the full roster lives on your device. For push subscribers, a copy of each player's name, ID, and team is also synced to our servers for roster delay alerts and roster recovery.
Display & notification preferences
localStorage — theme, temperature unit, alert toggles (master switch, at-risk games, favorite team, roster impacts, daily check-in, risk threshold, quiet hours), and dismissal flags for in-app banners and prompts. For push subscribers, the alert toggles, quiet-hours window, and timezone offset are also synced to our servers so they can be honored when sending notifications; everything else stays on your device.
Visit counter & banner state
localStorage — a count of how many times you have opened the app and timestamps tracking whether you have dismissed the install banner or notification primer. Used only to decide when to surface these prompts; never sent to our servers.
Third-Party Services
Weather APIs
Receive stadium coordinates only — no user data (OWM, NWS, Open-Meteo, Pirate Weather, Tomorrow.io, WeatherAPI.com). These requests are made by our servers, not your device.
MLB Stats API
Public API — no user data sent.
Map & radar tiles (CARTO, RainViewer)
The interactive maps load base-map and precipitation-radar tiles directly in your browser, so those services receive your device's IP address as part of a standard tile request — no other user data is sent.
Apple Push Notification service (iOS app)
Receives your device's APNs token and the notification content in order to deliver iOS push notifications — no other user data is sent. Apple's privacy practices apply to delivery.
Google Fonts
Standard font request — no user data sent.
Bluesky (optional outbound link)
Settings includes a link to the Dugout Radar Bluesky profile. Tapping the link opens bsky.app in a new tab — no user data is sent from Dugout Radar to Bluesky. Bluesky's own privacy practices apply once you arrive there.
Push Notifications

Push notifications are delivered using the Web Push Protocol (web app) or the Apple Push Notification service (APNs, iOS app). Your subscription credentials — a browser push subscription or an APNs device token — are stored on our servers and used only to send you (a) rain delay and weather-related game alerts, including alerts for games involving your tracked roster players if you opt in, (b) a one-time welcome message within 24 hours of subscribing, and (c) — if you opt in via Settings — a short once-a-day morning summary. We never sell or share your push subscription. No push notification is ever sent for advertising or promotional purposes outside of Dugout Radar. What you receive is governed by your Settings: the alert toggles control which games trigger notifications, and the quiet-hours window suppresses all notifications during the local-time hours you choose. As a safety backstop against malfunctions, we additionally enforce a hard ceiling of 12 notifications per device per 24 hours across all types combined — normal operation sends far fewer. If a subscription becomes invalid — for example, because you cleared your browser data — it is automatically removed from our system. You can unsubscribe at any time in the Settings tab or through your browser's notification settings.

Data Retention
Push subscriptions
Until you unsubscribe or the subscription becomes invalid.
Synced roster (push subscribers)
Until you remove the players from your roster, or automatically once you have no active push subscription.
Push delivery log
90 days. Contains hashed endpoint, notification type, payload hash, and timestamp only.
Watched games
6 days from when you pin the game — long enough to cover a game pinned up to four days ahead plus a short post-game window, after which the record is deleted automatically. Unpinning deletes it immediately.
Analytics events
90 days.
Prediction accuracy log
Indefinitely — contains no personal data.
Your Rights

You can request deletion of your data by emailing dugoutradarapp@gmail.com. We will delete your records from our system.

You can remove your push subscription and all local preferences at any time through the Settings tab in the app.

Children

Dugout Radar is not directed at children under 13 and does not knowingly collect data from them.

Changes to This Policy

If we make material changes to this policy, we will update the date at the top. Continued use of the app constitutes acceptance of the current policy.

Questions? Email dugoutradarapp@gmail.com
Dugout Radar · An independent product · Not affiliated with Major League Baseball