1. Who we are
UltraPlanRun ("the app", "we", "our") is an iPhone app for planning ultramarathon races. The app is published and maintained by an independent developer. You can contact me here [email protected].
2. What data the app handles
UltraPlanRun stores the following information on your iPhone, synced privately to your own iCloud account if you have iCloud enabled. Nothing in this list is sent to us, to any third-party server we operate, or to any analytics or advertising service:
- Race plans you create — name, date, distance, segments, paces, ETAs, cut-off times, terrain notes
- GPX route files you import
- FIT activity files you import (for adaptive pacing and previous-race comparison)
- Nutrition plans, custom foods you add, and drop-bag flags
- Mandatory kit selections, including any custom items you add
- Travel & Logistics info you choose to enter (accommodation address, registration window, phone number, booking code)
- Parking & Transport coach pickups you add
- Emergency contact name and phone number
- Per-checkpoint weigh-ins, if you choose to log them
- App preferences (units, weight unit, theme, sort order, weather units)
3. What we don't collect
UltraPlanRun contains:
- No analytics SDK (no Firebase, no Mixpanel, no Amplitude, no homegrown analytics)
- No advertising SDK (no ad networks, no IDFA tracking)
- No crash-reporting SDK (we rely on Apple's anonymous crash reports through App Store Connect, which you can opt out of in iOS Settings → Privacy & Security → Analytics & Improvements)
- No account system — there's nothing to sign up for, nothing to log into
- No servers of our own — your data never touches a server we run. iCloud sync goes to Apple's infrastructure under your own Apple ID, governed by Apple's privacy policy
4. Location data
UltraPlanRun requests "When In Use" location permission only when you tap "Show my location" on the race map. The permission lets the app drop a blue dot showing where you are relative to the route — useful during recces of the course or on race day.
- Location is used only on your device — it powers the map view and the "Share my location" button.
- Location is never tracked in the background.
- Location is never uploaded to any server we operate.
- You can revoke the permission at any time in iOS Settings → UltraPlanRun → Location.
If you tap "Share my location" the app constructs a Google Plus Code + coordinates link and hands it to the iOS Share Sheet. UltraPlanRun never sees the destination — only you decide who receives the link.
5. Apple-provided services we use
iCloud (CloudKit)
If you have iCloud enabled on your iPhone, UltraPlanRun uses Apple's CloudKit to sync your race plans across your devices and keep a private backup. Your data is stored in your personal iCloud account — we have no access to it. Apple's privacy policy at apple.com/legal/privacy governs how Apple handles CloudKit data. You can disable iCloud sync for UltraPlanRun at any time in iOS Settings → [Your Name] → iCloud → UltraPlanRun.
WeatherKit
The Weather screen fetches per-checkpoint forecasts from Apple's WeatherKit service. When you open the Weather screen, the app sends each checkpoint's latitude and longitude to Apple over an encrypted connection so Apple can return the forecast. We don't see this data; Apple's privacy policy at apple.com/legal/privacy applies to the request.
MapKit
The route map is rendered by Apple's MapKit. Map tile requests go directly from your iPhone to Apple. We don't intercept or store any of this traffic.
CLGeocoder (address lookup)
When you enter a postcode (for accommodation or a coach stop), the app calls Apple's geocoder to convert the postcode into latitude/longitude so the inline map can show the pin. This is an Apple-provided service; no data goes to us.
Apple Maps deep links
"Get directions" buttons open Apple Maps via a maps.apple.com URL. UltraPlanRun never sees what you do inside Apple Maps.
Local notifications
Reminders you set (registration, race-day wake-up, coach pickups) are scheduled with iOS's local UNUserNotificationCenter. They fire on your device only. We don't have a push notification server.
6. Backups and sharing
In addition to automatic iCloud sync, UltraPlanRun gives you two manual ways to send a race plan elsewhere:
- Save Backup — writes a JSON file to your phone's temporary folder, then opens the iOS Share Sheet. You decide where it goes (iCloud Drive, Files, AirDrop, Mail, Messages, Dropbox, etc.). This backup contains your full plan including personal information, since it's intended for restoring on your own device.
- Share with a friend — writes a sanitised JSON file with your emergency contact, weigh-ins, FIT files, accommodation phone + booking code, crew phone numbers, registration date, travel & coach data, and reminder times stripped before the file leaves your phone. The recipient gets your route, segments, paces, nutrition, drop bags and kit only.
In both cases the file is generated on your device and travels via whichever channel you pick. UltraPlanRun has no role in transmitting it.
7. Children
UltraPlanRun is not directed at children under 13 and we don't knowingly collect data from anyone. The App Store age rating reflects the general content suitability.
8. Changes to this policy
If a future version of UltraPlanRun changes what data it handles we'll update this page and bump the date at the top. Material changes will also be flagged in the app's "What's New" release notes on the App Store.
9. Contact
Questions, concerns, or a data request? Email [email protected]. The aim is to respond within seven days.
10. Your rights
Because UltraPlanRun stores everything on your iPhone (and syncs to your own iCloud account) and we don't hold any of your data, your data rights (access, deletion, correction, portability) are exercised directly through the app or iOS:
- Access: open any race in the Races tab.
- Portability: use Save Backup to export a full JSON copy.
- Deletion: swipe-to-delete a race, or uninstall the app to remove all local data. To also remove iCloud data, go to iOS Settings → [Your Name] → iCloud → Manage Account Storage → UltraPlanRun → Delete Data.