Privacy Policy
Version of 16 October 2026 · Covers milewise.de, app.milewise.de, admin.milewise.de, the Milewise apps for iOS and Android, and the emails we send · The German version is the binding one; this is a courtesy translation.
1. Who we are
The controller within the meaning of Art. 4(7) GDPR is:
Moritz Niedermann, MilewiseEssenweinstr. 37, 76131 Karlsruhe, Germany
contact@milewise.de · contact form milewise.de/contact
VAT ID DE464647453
The full set of mandatory particulars is in the Impressum.
Write to contact@milewise.de about anything on this page, including any of the rights in section 10. We answer within one month (Art. 12(3) GDPR).
2. What Milewise is
Milewise is an AI training coach for endurance sport. It works from what your connected accounts and your phone supply, and from what you write or upload yourself. Much of that is health data, that is, a special category under Art. 9(1) GDPR. We process it only with your explicit consent (Art. 9(2)(a) GDPR); without that consent none of it is stored.
3. What we process
Account and sign-in
There is no password: you sign in with Google, Apple or Strava. We store the identifier
the provider gives us, your display name and, where the provider supplies an email
address and marks it verified, that address. Strava supplies none. With Apple's
“Hide My Email” we store the relay address. From Apple we also keep,
encrypted, the token Apple issues at sign-in, for one purpose: to withdraw that
authorisation at Apple when you delete your account. Alongside that: an internal
account number, your language, your year of birth and the time of the age answer, the
name of each paired phone (for example “Apple iPhone 15”) and, if you allow
notifications, that phone's push address. Signing in with Strava is also a data
connection: every Strava authorisation asks for read,
activity:read_all, profile:read_all and
activity:write.
Training and activity data
- From your connected accounts: sessions with date, sport, duration, distance, elevation, calories, heart rate, power, cadence, best efforts, device name and description, the GPS route and the measurement series of a session.
- Files you upload (FIT, TCX, GPX, including from a Strava bulk export or a Garmin data export): we store the original file unchanged, including the complete position and heart rate series inside it and the user profile your device saved in it (for example name, sex, height, weight, resting heart rate and usual sleep times).
- The original file of each workout a Garmin device recorded and intervals.icu delivered to us (never one that came to intervals.icu from Strava), if you have given both the training data consent and the health consent: we download it while intervals.icu still provides it and keep it unchanged, so that the charts, map, laps and heart rate zones of these workouts stay available if intervals.icu stops passing Garmin data on. It is kept as long as the workout itself, unless you withdraw the health consent first. Like an uploaded file, it holds the complete position and heart rate series and can hold the user profile your device saved in it; both kinds of file can also hold device and sensor records with serial numbers and, from some devices, beat-to-beat heart intervals.
- Runs you record with the phone: continuous location data, including while the screen is locked and the app is in the background, the readings of paired Bluetooth sensors (heart rate strap, cadence, speed, power), steps for cadence and the barometer for elevation. On Android a recording that has started keeps running even if you swipe the app away.
- Your own entries: notes and your own titles for sessions, goals with race, date, target time and free text for constraints, gear, strength training with sets, weights and RPE.
Health data
- From intervals.icu, Polar and Suunto: sleep duration and stages, sleep score, heart rate variability, resting heart rate, respiratory rate, oxygen saturation, a stress value from the watch vendor, steps, weight, body fat, VO2max, maximum heart rate, thresholds, zones and FTP. From intervals.icu there are also values you enter yourself: mood, motivation, soreness, fatigue and a free text field for injuries.
- What we keep from intervals.icu. Per day: sleep duration and score, heart rate variability (RMSSD and SDNN), resting heart rate, average heart rate while asleep, oxygen saturation, respiratory rate, stress value, readiness score, steps, weight, body fat, VO2max, and intervals.icu's fitness (CTL), fatigue (ATL) and ramp rate. We take them from every read, and once per connection (and again after you give the health consent anew) we copy the last 365 days, then each new day. The app and the coach use a kept day only when intervals.icu provides none of that day's watch measurements, so your recovery history stays available if intervals.icu stops passing Garmin data on. A value you delete there stays in our copy until one of the deletions in section 10. Your own entries for mood, motivation, soreness, fatigue and injuries are not among them. If your wellness there comes from a Garmin watch, once a day we also look at the last 14 days, to notice when intervals.icu stops serving its nights, and keep only the newest day it served and the number of days it served, never a value.
- From your phone's health store. On iOS the app reads exactly six types from Apple Health: sleep analysis, heart rate variability (SDNN), resting heart rate, respiratory rate, workouts and heart rate. On Android it reads eight record types from Health Connect: sleep, heart rate variability (RMSSD), resting heart rate, respiratory rate, exercise sessions, heart rate, distance and active calories. HRV is therefore not the same measurement on the two platforms; we record with each night which of the two it was. Nothing is ever written into either store.
- Per night, one summarised row leaves your phone: date, time asleep, time in bed, deep sleep, REM, core sleep, time awake, HRV, resting heart rate and respiratory rate. Individual samples stay on the device.
- Workouts from both phone stores are transmitted. Per workout: an identifier, the identifier and name of the app that wrote it into the store, sport, start and end, duration, distance, energy, average and maximum heart rate, elevation gain, title, an indoor flag and the device name. There is no filter by writing app: a workout that the Strava app or Garmin Connect placed there comes with it, and we treat it as phone data rather than Strava data, which is why the coach reads it. We read no route from either store.
- Free text that can carry health data: your chat messages, the coach's durable notes about you (among others in the categories injury, health and safety) and the daily summary of the morning check.
Calendars
Your Google
calendar, read-only, with a consent separate from sign-in and the scope
https://www.googleapis.com/auth/calendar.readonly: we read titles, dates
and spans, never locations, notes or conferencing links. Of the guest list we read one
thing and keep none of it: whether you declined the invitation. No guest's name or address is used or
stored. There is no table of
our own for it, but the result of the query stays part of the chat transcript and is in
the data export. You can share all calendars, selected ones or none. The
calendar on your phone: the app sends us the names of every calendar on
the device and, per event, title, start, end and an all-day flag. We store
that, replaced per device. An event title is text about you and about other people and
can reveal health or religion, which is why the feature depends on the health consent.
Location
Your home coordinates, the place name derived from them and the time zone, up to 400 start coordinates of past sessions, the town of your current position and, while you are away, of your first day out, for each reviewed outdoor session a route summary (start, finish and highest point rounded to about 10 metres, its place, its climbs with heart rate), and, if you switch on “Update from a phone” for one of your phones, a current position each time you open the app. With that setting off, only recording a run reads your location. In the browser Milewise does not ask for your location at all.
Subscription, payment and contract records
Tier, identifiers and status at the payment provider, end of the trial, billing period, amount and currency; for a purchase through the app stores, the store, the product and the expiry date. Plus the declarations you make when ordering (section 327h BGB, immediate start of performance, acceptance of the terms), a termination declaration under section 312k BGB including your free text, and a withdrawal declaration under section 356a BGB. We never see card data.
Technical data
- Garmin link on intervals.icu: once a day we read which platforms you linked on intervals.icu and keep whether Garmin is linked there, since when, and your intervals.icu athlete id, so that we notice when intervals.icu stops passing Garmin data on.
- Security log: time, event identifier, category, your IP address, HTTP method, the path of the request without its query string, and a short note, which in individual cases can contain a device name or the domain of an email address. Most rows carry the route pattern rather than a concrete address; a request refused before it reaches its handler is logged with the address as it arrived, which can contain the identifier of the resource asked for.
- Country check: when an account is created and when an order is placed, we compare the IP address the request arrives from against an IP-to-country table held on our own server; we currently accept no new sign-ups and no orders from the United Kingdom. No IP address is sent to a geolocation service. A refusal writes a row with the IP address and the country code into the security log, even where no account comes into existence.
- Error reports: an error identifier, the class and text of the exception, one context line with platform, operating system and app version, and the path of the page you were on without its query string, and no account number. That path can contain the identifier of a session or an activity, because those pages carry it in their address. An error text can in rare cases contain content that a component of the interface wrote into it.
- The coach's usage and cost log (model, token counters, estimated cost) and a log of the writes it made.
- Web server logs with IP address, time, the requested URL, the browser identifier your browser sends (user agent) and the page you came from (referer). If you have subscribed to the ICS calendar feed, its secret access token is part of that URL and therefore appears in those logs.
Waiting list and invitation list
Waiting list: email address, optionally sport and price expectation, the language, and the timestamps of the entry and the confirmation. We send a confirmation email (double opt-in); without the click in it you are not on the list, and we do not store the IP address of that click. Separately we keep an invitation list of email addresses or Strava identifiers of people we authorise to sign up, before they have an account. If your address is on it and you would rather it were not, write to us.
What we do not collect
No analytics, tracking, advertising, attribution or crash-reporting SDK in the website, the web app or the mobile app. No advertising identifier (no IDFA, no Advertising ID), no App Tracking Transparency, no counting pixel and no link rewriting in our emails. No menstrual or cycle data is ingested; the raw response from intervals.icu does contain those fields, however, and sits in our cache for up to seven days.
Where the data comes from (Art. 14(2)(f) GDPR)
From you, from your phone (Apple Health, Health Connect, the device calendar, sensors, recording) and from the accounts you connect yourself: intervals.icu, Strava, Polar, Suunto, Google Calendar. There is no direct connection to Garmin, Wahoo, Coros or Zwift. Data from those devices reaches us only through intervals.icu, Strava, your phone’s health store or a file you upload, and then carries only the manufacturer's name as its origin. Data originating from a Garmin device is labelled as such.
4. Why, and on what legal basis
| Purpose | Data | Art. 6 GDPR | Art. 9 GDPR |
|---|---|---|---|
| Account, sign-in, device pairing | account and identity data | (1)(b) contract | – |
| Dashboard, activities, trends, heatmap | training data including heart rate and route | (1)(b) | (2)(a) consent, “training data” |
| AI coach, plan, morning check, post-workout review | health, training, location and calendar data, free text | (1)(b) | (2)(a) consent, “health data” |
| Keeping wellness values and Garmin workout files from intervals.icu in case it stops providing them, and the daily check whether it still serves Garmin wellness (section 3) | health data; workout files with heart rate and route | (1)(b) | (2)(a) consent, “health data” for the wellness values, “training data” and “health data” for the files |
| Writing planned sessions onto your intervals.icu calendar and as a SuuntoPlus guide, syncing zones and FTP | plan, zones, FTP | (1)(b), each with its own switch | (2)(a) |
| Sending notifications to your phone | your phone's push address and the text of the notification | (1)(a): the notification permission you gave on the phone, which you can take back there or in the app | – |
| Subscription, payment, trial, reminder before a charge | subscription and payment data | (1)(b) | – |
| Order confirmation, termination, withdrawal and consent records | declarations with timestamp and text version | (1)(c) (sections 312f, 312k, 356a BGB; Art. 7(1) GDPR) | – |
| Tax retention | payment records | (1)(c) (section 147 AO, section 14b UStG) | – |
| Security log, abuse defence, rate limits, error reports | IP address, route pattern, events | (1)(f): protecting accounts and the service from attack, finding faults | – |
| Operational alerts to the operator, among them the daily check whether intervals.icu still passes Garmin data on (section 3) | the category of the event and the endpoint, and for a contract event the plan, the amount or the status; for the Garmin check, whether Garmin is linked on intervals.icu, since when, and your athlete id there. The alert we send carries no account number; the row we keep for 30 days carries our own deduplication key, which for some events contains your internal account number or the IP address a request came from | (1)(f): noticing that the service or a contract event needs attention | – |
| Country check at sign-up and at ordering | IP address, derived country code | (1)(f): offering the service only where we can meet the obligations that apply there | – |
| Minimum age of 18 | date of birth (only the year is stored) | (1)(b) and (1)(c) | – |
| Waiting list and invitation | email address, sport, price expectation, language | (1)(a) consent, withdrawable at any time | – |
| Contact form and email reply | your address and your text | (1)(b) and (1)(f) | (2)(a) where you give health details |
| Fault-finding in one individual account (support copy, section 7) | a mirrored copy of your account data | (1)(f): finding a reported fault | health data is in the copy; we ask for no separate consent for it |
| Checking whether a change to the coach makes it better or worse (section 7) | conversations from that copy, run through the coach again | (1)(f): being able to tell what a change to the coach does to its answers | health data is in those conversations; we ask for no separate consent for it |
Milewise can also be used without the coach; the dashboard, your activities and your history remain.
Whether you have to give us this (Art. 13(2)(e) GDPR). Two answers are required, not by a statute that obliges you but because there is no contract without them: your date of birth, which section 12 explains, and the consent for training data. Give a date of birth under 18 and the server locks the account down to sign-in and account management; give neither answer and the app does not open, and the account is deleted as an unfinished sign-up (section 9). Everything else is your choice, and the only consequence of withholding it is that the part of Milewise which needs it cannot work. An email address reaches us only where the provider you sign in with supplies one; without a confirmed address we cannot send you a data export or a deletion confirmation.
5. The AI coach
The coach is an AI system. The interface says so, every time (Art. 50 of Regulation (EU) 2024/1689).
What goes to the AI provider. With every request: your performance profile (maximum and resting heart rate, zones, FTP, thresholds, your home position rounded to about 100 metres, time zone, training days, free-text notes), your goals, your plan, the coach's durable notes, your gear, the computed daily assessment with the values behind it, and your chat text. When the coach calls one of its tools, this is added: sleep, HRV, resting heart rate, stress value, training load, the detail and measurement series of a session, your approximate location, the weather, event titles from your calendars and, where the coach explicitly asks for the route, up to 600 GPS points of a session. The morning check and the review of a session also carry, without a tool call, the town you are in and its distance from your home, and for an outdoor session its place, its altitude range, its biggest climbs and descents and its time high up, never its GPS points. Your name and your email address do not go; the provider sees an internal account number. Everything that reached us through the Strava connection is excluded from the AI path, and there is no switch that could lift that. The same connection is one-way in the other direction too: a workout Strava recorded can never be the source of a copy we pass to another platform, which their API terms forbid and our code enforces rather than leaving to a setting.
Who runs the models. Section 8 sets out the five routes to them. Names, role and location are in the recipients list. Which provider answers a single request is decided by a configuration we can change without the category changing.
Training of models. Milewise trains no AI models and passes no data on for training. What a provider may do with a request beyond answering it is governed by our contract with that provider and not by the individual call: our software sends no per-request instruction that would switch off storage on the provider's side.
The coach writes, it does not only suggest. Without a human checking in between, it can create, change, move and delete sessions, turn a day into a rest day, set and close goals, edit your profile, add gear, and store durable notes about you and about people you mention. Two automated jobs write without you. The post-workout review is narrowly bounded: never harder, never a race, a rest day or a test, at most three sessions, at most seven days ahead. The morning check moves only the start time of today's session, to another hour of the same day between 05:00 and 22:00, when it is clearly milder then, it rains at the planned hour or your connected calendar leaves a better window, and never on a race; the workout itself stays as it is. Every other change to today's session the morning check only suggests: easier, shorter, a rest day, or, on a morning your numbers call clearly good, slightly harder or longer. Nothing of that changes until you apply it. If the transfer is switched on, such a change travels onto your intervals.icu calendar. Whether it goes on from there to a watch is decided by that platform, and only if you have linked one there. Two automated decisions have a real consequence: if you give a date of birth under 18, the server locks your account down to sign-in and account management (section 12); and if the IP address a sign-up or an order arrives from is allocated to a country we do not serve, the server refuses it, so no account comes into existence and nothing is ordered (section 3). In both cases you can have a person look at it: write to contact@milewise.de, the operator checks it personally, you can put your side of it and you can contest the result (Art. 22(3) GDPR).
Not a doctor, not a medical device. Milewise gives training guidance. It makes no diagnosis, treats nothing and is not a medical device. If you describe symptoms, the coach may tell you to have them checked by a doctor and not to train; that does not replace seeing one.
What stays from a conversation. The chat transcript also stores the results of the tool calls verbatim and therefore contains raw sleep, HRV and heart rate values, route points and event titles. There is no retention period for it: it stays until you delete the conversation or your account.
6. What is stored on your device
Everything below is strictly necessary to provide the service you yourself requested (section 25(2) no. 2 TDDDG), with one exception, which is why there is no banner. The exception is your phone's push address. It rests on the notification permission you give on the phone itself, which is your consent under section 25(1) TDDDG, and taking that permission back in your phone's settings withdraws it.
| What | Where | Why | How long |
|---|---|---|---|
dash_session (cookie) | app.milewise.de | your sign-in; contains the account number, the time of issue and a signature | 30 days |
dash_oauth, ic_oauth, polar_oauth, suunto_oauth (cookies) | app.milewise.de | protecting the sign-in or account connection you have just started. On the Apple path the first is SameSite=None, because Apple returns the result cross-site | 10 minutes |
| View state: language, chart window, open sections, rail width, dismissed prompts, last open tab and chat, the shape of the screen we draw while loading, and a marker that this browser has been signed in before | localStorage | rebuilding the interface the way you left it | until you clear it; part of it goes at sign-out |
| Flow state: the answers about your goal and training days you gave before signing up, the setup step, recent pages and scroll positions; on the help pages a marker per article | sessionStorage | so that a redirect to the sign-in provider does not lose your input | until the tab closes |
Offline cache milewise-offline-* | Cache Storage | two files of our own for the offline error page. No API response is put there | until a new version replaces it |
| HSTS entry | browser | forces HTTPS for milewise.de and all subdomains | 1 year |
| Keychain of the mobile app | iOS Keychain, Android Keystore | the device's access token, the push address, the language, markers for the health and calendar sync, paired Bluetooth sensors with model and serial number, recording settings | indefinitely. Signing out removes only the access token. On iOS these entries also survive deleting the app |
| Files in the app directory | phone | an offline copy of the plan, sessions, morning check, goal and account status; recordings not yet uploaded, with all GPS and sensor readings | the copy at most 7 days and 512 KB; a recording stays until the server has accepted it or you discard it |
The milewise.de homepage asks app.milewise.de on load whether you are signed in, so that the button says the right thing; an existing session cookie goes along with that, and the answer is a yes or a no. If you sign in inside the mobile app, that runs in your phone's system browser, and a Milewise cookie valid for 30 days is left there, which the app does not remove when you sign out. And our API responses carry no caching instruction, so your browser may cache them itself.
7. Who receives your data
What follows are the categories of recipients. The names are in the dated recipients list. If you ask under Art. 15(1)(c) GDPR who the actual recipients of your data are, we will name them. Nothing is sold, and nothing is passed on for advertising.
| Category | Location | What it receives |
|---|---|---|
| AI providers for the coach (cloud inference, four companies over five routes, processors) | EU regions, and on two of the five routes that provider's European data boundary or EU regional endpoint, which cover the EU together with the EFTA states. Section 8 | the context described in section 5, including health data and, where the model asks for them, route points |
| Server hosting (one rented server, processor) | Germany (Falkenstein) | everything that is stored |
| Off-site copy of the nightly backup (storage service, processor) | Germany (Falkenstein), the same site as the server | ciphertext only: encryption happens on our server before the backup leaves it |
| Email delivery (sending relay, processor) | the provider states that its data centres are located exclusively within the European Union | recipient address, subject, body and every attachment. Your Art. 15 data export also travels this way, as a ZIP file |
| Delivery of notifications (the push services of the two mobile platforms, processors) | both are companies in the United States. One states no processing location for its push service; the other states that its messaging service may process at any of its cloud or data centre locations | your phone's push address, the app identifier, and either one fixed sentence from a small catalogue or, for an announcement the operator sends by hand, that announcement's text. No measurement, no verdict and no name of a session goes either way |
| Payment on the web (payment provider and the merchant of record, who invoices in its own name) | Ireland and United States | account number, tier, price and the version of the terms. Your card and the address you enter there stay with the payment provider |
| Purchase through the app stores (both store operators, plus a service that checks entitlements) | Ireland and United States | the store gets your payment identity, we get none of it; the entitlement service gets your account number as the user identifier, the product and the subscription status |
| Delivery and updating of the mobile app (build and update service) | United States (seat) | on each launch of the app: IP address, platform, channel, runtime version and a persistent identifier assigned per installation |
| Map tiles (a non-profit map service; the operator states no server location and refers to a possible content delivery network) | Hungary, server location not stated | your own IP address and the tile coordinates of the area you look at, that is, the area of your home, your routes and your heatmap. No account reference and no cookie |
| Weather, time zone and place names (three services) | Norway (EEA), Switzerland (adequacy decision), and the United Kingdom with the Netherlands (adequacy decision) for the place-name service | coordinates only, rounded to four decimal places, and our server's IP address. The Swiss service states that it keeps IP addresses and coordinates for 90 days |
| Name resolution for our domains (DNS operator) | the operator states that it stores information primarily in the United States and in the European Economic Area, and certifies under the EU-U.S. Data Privacy Framework | only the name lookups your resolver makes, never the content of a request |
| Your own connected accounts (training platforms, independent controllers) | EU and United States | what you already have there, plus what we write there at your request: planned sessions onto your intervals.icu calendar, zones and FTP, SuuntoPlus guides and, if you switch it on, an activity file or an edited title |
| The calendar service you choose yourself | determined by you | if you subscribe to our ICS feed, that service polls the address regularly and receives your training history and your plan with titles, times and distances; only activities that come solely from Strava are excluded |
| Operational alerts to the operator (notification service, processor) | not stated | the category and endpoint of an event, and for a contract event the plan, the amount or the status. No alert carries your account number |
| The operator's AI coding assistant (software development) | contracting entity and region not yet settled | see below |
The support copy
We can flag an individual account. While the flag is set, the server writes a second copy, restricted to that account, into a separate file on the same machine every 15 minutes: among other things your chat transcripts, the nights sent from your phone, the wellness days we keep from intervals.icu, your device calendar, your activities and your profile, but not your access credentials or connection tokens. The AI coding assistant the operator builds the software with can read that file. The operator can also issue it a device credential that lets it act in your account exactly as one of your own paired phones does, with your entitlements, your consents and your limits. That device appears in your Devices list under its own name and you can revoke it there. The support copy is also the source of the cases we use to check whether a change to the coach makes it better or worse: real conversations are run through the coach again and compared with the answer you received at the time. We set the flag only when we cannot otherwise find a fault in your account. You can object to this at any time (section 10); we then remove the flag, and the copy disappears at the next rebuild. It is also rebuilt immediately when you delete a conversation or an activity, or withdraw your consent.
What our contracts with them require
Where a recipient acts for us as a processor, our contract with it bars use for its own purposes and for training models and binds any sub-processor to the same. Where we hold no such contract with a recipient, the recipients list says so beside that name. That undertaking cannot extend to the recipients that decide for themselves: the training platforms you connect, the sign-in providers and the two app stores, the merchant of record for the web subscription, the calendar service you choose and the map, weather, timezone and place-name services.
8. Where it is processed
Milewise runs on one rented server in Germany, in the Falkenstein data centre. The databases, the website, the mail server and the training files you upload are all on it; there is no second server and no object storage. Five things necessarily leave that machine:
- The AI path. Five model adapters reach four companies. On three of the five routes the EU region is enforced in our own code: a request against a region outside the built-in list aborts rather than going to it. On a fourth our software only checks that the endpoint is one of that provider's; where the deployment sits is decided by a setting we make in that provider's console. That provider's European data boundary covers the European Union together with the EFTA states Liechtenstein, Iceland, Norway and Switzerland, so it is wider than “the EU”. On the fifth route our software calls that provider's EU regional endpoint, which the provider documents as processing in the EU and the EFTA countries. Two limits the provider states and we pass on: it excludes account and billing data from that guarantee, and it reserves temporary transfers to sub-processors outside the EU for some features, on standard contractual clauses.
- Notifications to your phone, to the push services of the two mobile platforms, both companies in the United States. Where those services process is in section 7.
- Payment and purchase through the payment provider and the app stores.
- Map tiles and app updates, which your own device fetches directly.
- The nightly backup, to a storage service at the same German site, encrypted on this machine before it leaves it and with the key held elsewhere.
Transfers to third countries. Where a recipient outside the EEA is covered by the Commission's adequacy decision on the EU-US Data Privacy Framework (Art. 45 GDPR), or names standard contractual clauses under Art. 46(2)(c) GDPR for its own transfers, the recipients list says so beside that name. For the remaining recipients we have not yet settled which instrument carries the transfer. You can obtain a copy of the clauses we do hold by writing to contact@milewise.de. Norway and Iceland are EEA states in which the GDPR itself applies; for Switzerland there is an adequacy decision.
9. How long we keep it
| What | How long |
|---|---|
| Account, profile, goals, plan, activities, uploaded files, nights from the phone and from Suunto, coach notes, notifications | until you delete your account, then at once. No grace period |
| Wellness days kept from intervals.icu, and the original files of Garmin workouts from intervals.icu | no age limit: until you delete your account, then at once. The days and the files go earlier if you withdraw the health consent; the days also if you have the recovery data deleted when you disconnect intervals.icu, and a file also goes with its workout |
| What the daily Garmin check keeps: whether Garmin is linked on intervals.icu, since when, your athlete id there, and the newest wellness day it served with the number of days served | until you disconnect intervals.icu or delete your account; the wellness part also goes when you withdraw the health consent |
| Chat transcripts | no retention period. They stay until you delete the conversation, the coach history or the account |
| Activities that came in through the Strava connection | 6 days after the day of the session |
| Events from the device calendar | 3 days after the day of the event |
| Cache of the raw responses from your connected accounts | at most 7 days; everything older than 6 days is deleted daily |
| Security log with IP address | 30 days, plus a ceiling of 20,000 rows. After an account deletion the rows stay without any account reference, and the IP address stays in them for the remainder of the 30 days |
| Operational alerts to the operator | 30 days, plus a ceiling of 1,000 rows |
| Error reports | the newest 5,000, with no age limit; an old row can therefore stay for a long time |
| The coach's usage and cost log | 400 days; the log of its writes: the newest 5,000 |
| Waiting list entry | an open or confirmed entry stays until you ask for it to be deleted; an archived one is deleted after 365 days. The confirmation link expires after 14 days |
| Invitation list | until we remove the entry. There is no automatic period for it |
| Contract records under sections 312f, 312k and 356a BGB | until the end of the third year after the year in which the contract ended (sections 195, 199 BGB). They survive the account deletion |
| Your declaration under section 356(5) no. 2(a) and section 356(6) no. 2(b) BGB that performance was to start at once, together with your acknowledgement that the right of withdrawal then lapses | the same period, on Art. 6(1)(f) GDPR: without it we cannot show why the withdrawal period ended. It survives the account deletion for the same reason |
| The consent record (Art. 7(1) GDPR) | until you delete your account. It is part of the data export and is deleted with the account |
| Payment records | 8 years, each from the end of the calendar year in which the invoice was issued (section 14b(1) UStG for invoices, section 147(3) AO for accounting vouchers). The records themselves sit with the merchant of record, who invoices in its own name |
| Record that a trial has already been granted | indefinitely. Salted hashes of the identifiers of your sign-in and your connected accounts, with no account number and no address |
| A redeemed promotion code | until we delete the code. There is no automatic period, and the row (the code, your internal account number and the time it was entered) survives an account deletion |
| Sign-ups never completed | an account older than 30 days, unused for 30 days, that never answered the consent question at all is deleted in full |
| Web server logs | 14 days |
| Backups | 7 daily, 4 weekly and 6 monthly snapshots. Deleted data can persist in them for up to roughly seven months. That is the outer limit of every deletion promise on this page |
10. Your rights
You have the right of access (Art. 15), rectification (Art. 16), erasure (Art. 17), restriction (Art. 18), data portability (Art. 20) and objection (Art. 21), the right not to be subject to a decision based solely on automated processing (Art. 22), and the right to withdraw a consent at any time (Art. 7(3)). A withdrawal takes effect for the future and does not affect what was lawfully processed before it. In practice:
- Access and a copy. Under “You” you trigger a complete export, at most three times a day. It arrives as a ZIP at your confirmed email address (a large one as several numbered ZIPs, one email each) and contains your account and profile data, goals, plan, activities, wellness nights with the raw values and the wellness days kept from intervals.icu, calendar entries, strength data, the coach's memory, all conversations as readable text, your uploaded files in the original and the original files we keep of your Garmin workouts from intervals.icu, the information required by Art. 15(1) GDPR, and all of it once more in a machine-readable file (Art. 20). The export travels as an email attachment through our sending service. Without a confirmed address (which is the starting position for a Strava-only sign-in) we cannot send it; you can add an address at any time.
- Rectification. You change your profile, zones, thresholds, goals, plan, the title and sport of a session, notes, location and contact address yourself. Values that keep arriving from a connected source are corrected there; for title and sport, your change wins with us.
- Erasure. You delete individual sessions, individual conversations, everything from one connection, the nights and workouts from the phone store, the device calendar or the coach's entire memory yourself. You delete the account under “You” or at milewise.de/delete-account. We then send a confirmation link, valid for 24 hours, which has to be opened in the browser where you are signed in; without a confirmed address we delete at once, and in a browser we first ask you to sign in again if your sign-in is more than ten minutes old. Deletion cancels a subscription concluded through our website. It does not cancel a subscription from the App Store or Google Play: you have to do that in the store, ideally first. Beforehand we automatically revoke the authorisations at Strava, Polar, Suunto and Google Calendar, delete the calendar entries we wrote at intervals.icu and remove the SuuntoPlus guides. intervals.icu offers no interface for revoking an authorisation; you have to withdraw that one there yourself. If you sign in with Apple, we also withdraw that authorisation at Apple, as far as we hold the token Apple issues for it at sign-in; an older account that has not signed in with Apple since we began keeping that token has none, and you then remove Milewise yourself in your Apple ID settings under “Sign in with Apple”.
- What erasure does not reach: the rows in the security log (with no account reference, with the IP address, until the end of the 30 days), the contract records in section 9, the rows of the operator's own alert log, whose deduplication key can carry your internal account number, until the end of their 30 days, the record of a trial already granted, a redeemed promotion code row, an archived waiting list entry with your email address for up to 365 days, the backups for up to roughly seven months, the record the entitlement service for store purchases holds under your account number, which our deletion does not call on and which we therefore ask that service to delete by hand when you ask us to, and copies your connected accounts keep themselves.
- Withdrawing consent. One click under “You → Settings → Privacy”, in the web app and in the mobile app. Withdrawing the health consent deletes, at once and irreversibly, every night sent from your phone and from Suunto, the entire device calendar, every session from the two phone stores, and the wellness days and Garmin workout files kept from intervals.icu. Neither the phone nor Suunto can deliver that data again, and intervals.icu only as far as it still provides it. Not deleted by it: chat transcripts, coach notes, morning checks, profile values and activities from other connections; you delete those separately or with the account. Withdrawing the training data consent stops the app, because without it we cannot show you your dashboard. When you withdraw a consent we stop the processing it covered as soon as we can, and in no case later than 15 days after your request.
- Restriction. There is no switch for it. Write to us and we will do it by hand.
Right to object (Art. 21 GDPR)
Where we base processing on a legitimate interest under Art. 6(1)(f) GDPR, you may object to that processing at any time on grounds relating to your particular situation. Which processings those are is in the table in section 4. An objection to the support copy in section 7, or to the reuse of conversations from it to check a change to the coach, is always followed; otherwise we continue only where we can demonstrate compelling legitimate grounds which override your interests. A line to contact@milewise.de is enough.
If we refuse, you can appeal. If we decline to act on a request under this section, we say why, and you can appeal by replying to that answer or by writing to contact@milewise.de. Within 60 days of receiving the appeal we tell you in writing what we have done or not done, and why. If we turn the appeal down as well, that answer also carries the way to complain to a supervisory authority and, for people in Connecticut, the way to submit a complaint to the Connecticut Attorney General.
Complaint to a supervisory authority (Art. 77 GDPR). You may complain to any supervisory authority, in particular in the Member State of your habitual residence, your place of work or the place of the alleged infringement. The authority responsible for us is:
Der Landesbeauftragte für den Datenschutz und die Informationsfreiheit Baden-WürttembergHeilbronner Strasse 35, 70191 Stuttgart (Postfach 10 29 32, 70025 Stuttgart), Germany
+49 711 615541-0 · poststelle@lfdi.bwl.de
11. Security
- Every public connection runs over TLS. The application server is reachable only locally; from the outside, only the services the web, email and remote administration of the server need are reachable. HTTP redirects permanently to HTTPS, and HSTS applies for one year, including all subdomains.
- What is stored encrypted is access credentials: the tokens of your connected accounts, the Google Calendar grant, the second factor and the operator's passkeys. Your health and training data themselves sit unencrypted in the database files. They are protected by the file permissions on the server and by access control to the machine, not by encryption at rest. We claim nothing else.
- There are no user passwords. A session lasts 30 days and can be invalidated for every device with one click; the access tokens of paired phones are stored only as a hash.
If there is a breach of the protection of your data that is likely to result in a high risk, we notify you under Art. 34 GDPR, by email and additionally in the app.
12. Minimum age
Milewise is for people aged 18 and over. The first time, we ask for your date of birth, and we check the answer against no document and no other source. If it gives at least 18, we store only the year of birth and the time. If it gives less, we store no year of birth, only the fact of the refusal, and the server locks the account down to sign-in and account management. An account locked this way is not deleted automatically; you can delete it yourself, and until then the data stays. Milewise is not directed at children, and we do not knowingly collect data from people under 18.
Because this is an automated decision, you can have a person look at it (Art. 22(3) GDPR, section 5). Until that is settled the account stays locked rather than being deleted.
13. Changes
This version is dated 16 October 2026. If something material changes, for example a new purpose, a new category of recipient or a new transfer to a third country, we tell you in advance and actively, by email or as a notice in the app, in a message of its own rather than alongside something else. Where a named company in the recipients list is swapped for another inside a category described here, we update that list with a new date without notifying you separately.
14. If you are in the United States
This section applies in addition for people in the United States.
- California (CCPA/CPRA). We meet none of the three thresholds in Cal. Civ. Code 1798.140(d)(1) and are therefore not a “business” under that statute, and we do not voluntarily certify as one either. Independently of that, the rights in section 10 apply to you in the same way and by the same route. To verify your identity we ask you to sign in and confirm from the address on file.
- We do not sell or share personal information (as “sell” and “share” are defined in the CCPA) and we do no cross-context behavioural advertising. There is therefore no “Do Not Sell or Share My Personal Information” link, and a Global Privacy Control or Do Not Track signal has nothing to switch off; we do not use such a signal for any other purpose either. No other party collects information about your activity on other websites through Milewise.
- Sensitive personal information under the CCPA means, with us, your health values together with the inferences drawn from them, and your precise geolocation. We use and disclose it only for the purposes permitted by 11 CCR 7027(m): to provide the service you requested, to keep it secure, to prevent fraud, and to have our service providers operate it for us. There is therefore no “Limit the Use of My Sensitive Personal Information” link either.
- Connecticut. We do not collect, use or sell personal data to train large language models. What a model provider receives is set out in section 5 and serves to answer that one request. This policy was last updated in October 2026 and exists in every language in which we offer the service. How to exercise your rights, and how to appeal a decision we make on a request, is in section 10.
- Washington and Nevada. For health data our separate Consumer Health Data Privacy Policy applies in addition.
- California, location data (Cal. Civ. Code 1798.99.91 and 1798.99.92, added by AB 45 (2025); definitions at 1798.99.90). We never sell location data. We do not share it for anyone else’s purposes, and we never share it for advertising, analytics or profiling. We claim no more than that: to draw your map, your weather, your time zone and the name of a place, coordinates go to the map, weather, time-zone and place-name services named in section 7, rounded to four decimal places and with no account reference. We use location for nothing else. We operate no geofence, neither around health care facilities nor around anything else. We keep your routes and the start points of your sessions for as long as your account exists (sections 3 and 9), so we cannot rule out that a stored route passes such a place. You can delete individual sessions, everything from one connection, or the account, at any time (section 10).
- Data breaches. Where users in the United States are affected, we notify them under 16 CFR Part 318: by email to the address on file where you have specified email as a preferred method, by post to a last known address where we hold one, and in the app in either case, without unreasonable delay and in no case later than 60 calendar days after discovery.
Questions about any of this: contact@milewise.de.