1. Who I am
UltraPlanRun is an iPhone app for planning ultramarathon races. It is developed and maintained by an independent developer. For enquiries, contact me at [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 I 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)
- Health data read from Apple Health (workouts, resting heart rate, HRV, VO₂ max, sleep) — displayed in the Training Log and Health Snapshot screens. This data is read-only, never written back, and never leaves your device
3. What I do not 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 (I 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 personal data on our servers — your race plans, health data, and personal information never touch any server I operate. The only server-side component is the Find a Race catalogue (see section 5 below), which serves public race information and does not receive or store any of your data. 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 I 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 I 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 — I 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. I 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. I 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.
HealthKit (Apple Health)
The Training Log and Health Snapshot screens read workout and health data from Apple Health on your device. UltraPlanRun requests read-only access to:
- Workouts (running activities — distance, duration, heart rate, calories, elevation)
- Resting heart rate, heart rate variability (HRV), VO₂ max
- Sleep analysis
UltraPlanRun never writes to Apple Health and never uploads your health data to any server. All processing happens on your device. You can revoke HealthKit access at any time in iOS Settings → Privacy & Security → Health → UltraPlanRun.
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. I don't have a push notification server.
6. Find a Race catalogue
The Find a Race feature lets you browse and
search a catalogue of ultra races hosted at
api.ultraplan.run. When you use this feature:
-
The app sends an HTTPS request to
api.ultraplan.runcontaining only your search query and optional continent/country filter. No personal data, device identifiers, or account information is included in the request. - The server returns public race information (race name, distance, elevation, region, checkpoint names) and, when you choose to download a plan, the race plan JSON.
- No personal data is collected, logged, or stored by the Find a Race service. Standard web server access logs (IP address, timestamp, request path) may be retained temporarily by the hosting provider (Cloudflare) under their own privacy policy at cloudflare.com/privacypolicy.
- Downloaded race plans are saved to your device like any other race plan — they are not treated differently from plans you create yourself.
This is the only feature in UltraPlanRun that makes a network request to a server I operate. Every other network request goes to Apple (iCloud, WeatherKit, MapKit, geocoding).
7. 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.
8. Children
UltraPlanRun is not directed at children under 13 and I don't knowingly collect data from anyone. The App Store age rating reflects the general content suitability.
9. Changes to this policy
If a future version of UltraPlanRun changes what data it handles I'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.
10. Contact
Questions, concerns, or a data request? Email [email protected]. The aim is to respond within seven days.
11. Your rights
Because UltraPlanRun stores everything on your iPhone (and syncs to your own iCloud account) and I do not 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.