Privacy Policy

Kardiacs · Effective date: October 20, 2026

This Privacy Policy explains how Kardiacs LLC ("Kardiacs," "we," "us") collects, uses, and shares personal data when you use the Kardiacs mobile and watch apps, the Kardiacs websites (kardiacs.com and the signed-in dashboard at app.kardiacs.com), and related services (the "Service"). Kardiacs LLC is the data controller for this data. Contact: legal@kardiacs.com.

1. Data We Collect

Data you provide or generate

CategoryExamplesSource
Identity & profile dataThe app works without an account: after you accept these terms, it creates an anonymous identity for your install (a random identifier managed via AWS Cognito, with no email or name) under which your synced data is stored. If you later choose to sign in with Apple or Google, we also receive your email address and authentication identifiers, and the data stored under your anonymous identity is merged into your account. Profile details you enter — date of birth (used to verify the minimum age), weight, and fitness parameters (e.g., FTP, heart-rate zones) — are collected either way. On devices that support it we also ask for the age range on your Apple Account (on iPhone) or your Google Account through Google Play (on Android), to check the date of birth you gave us; we receive a range (such as “16–17”), never a date of birth, and it stays on your device and is never sent to our serversCreated automatically after consent (anonymous identity); you, if you sign in and in your profile; Apple (on iPhone) or Google Play (on Android), if you choose to share your age range
Workout & activity dataStructured workouts you create or import; indoor and outdoor activity recordings: power, cadence, speed, heart rate, elevation, duration, timestamps; activities recorded by other apps or devices that you import from Apple Health / Health Connect, from a FIT file, or from a service you connect (see “Connected services”)Your connected trainer and sensors, your device's GPS during outdoor activities, the files and health data you import, and services you connect
Health data (sensitive)Heart-rate variability, resting/recovery heart rate, blood oxygen, respiratory rate, VO₂max estimates, sleep data. Read on your device and used only there — readiness analysis runs locally and these metrics are never uploaded to our servers. With your permission we also write your weight back to Apple Health / Health Connect, so the figure you enter in Kardiacs stays consistent with the rest of your health data; nothing else is written.Apple Health / Health Connect, only with your explicit permission
Location & route dataRoutes you deliberately keep — favorites and GPX files you import — which sync to your own account as route shapes. Routes you plan and addresses you search for stay on your device. See “What stays on your device”.You / your device, with location permission
Music listening data (optional)Your most-played and recently played songs, albums, and artists from Apple Music — collected only if you enable AI music features, and used solely to generate playlist suggestionsApple Music / your media library, with your permission
Feedback (optional)What you tell us when you answer the app’s “How’s Kardiacs going for you?” card: which answer you gave, which reason you chose, and — if you choose “Something else” and press Send — the text you typed, together with the app version, your device model and operating system version, so we can reproduce what you describe. Nothing identifies you: your feedback is sent without your account, anonymous identity, name or email, and it is not stored with your other data. Where the app hands your text to your own mail app instead, the message goes from your address to support@kardiacs.com and we then have that address too, as with any email you send usYou, only when you press Send
Group riding data (optional)Sent directly to the other riders’ devices while a group session is running, and never to us: the display name you chose, your live position (latitude, longitude, elevation, heading and speed), a low-battery flag, and push-to-talk voice from your microphone while you hold the talk control; anything you put in the group chat — text messages, photos you take or attach, likes, and the captions and transcripts the app writes from your voice when you use them. If you choose to share them, your training numbers — critical power, W′, lactate thresholds and today’s readiness percentage — are sent too. When you lead, the group’s route and its stops go to the other riders; when you follow, a stop you ask for goes to the leader. If you raise an SOS, your position goes with it — even if you have turned location sharing off. A copy of each group chat is saved on your own phone unless you turn that off. See “Group riding”.You, while you are in a group
Connected services data (optional)Only if you connect an account with a fitness service we support, such as Garmin Connect, COROS or Strava: the access tokens that service issues so Kardiacs can act on your behalf, your identifier on that service, and the data you choose to exchange with it — activities (including their GPS tracks, power, heart rate and other recorded data), workouts and routes. See “Connected services”.You, when you connect a service; the service you connect

Data collected automatically

Basic technical data needed to run and improve the Service: device model and OS version, app version, crash and error reports (via Firebase Crashlytics and Sentry, including device state and, for Bluetooth troubleshooting, a log of recent trainer connection events), usage analytics events (via Google Firebase Analytics, e.g. which features are used) — from the apps and, as described under Using the websites, from the dashboard, performance measurements, a push-notification token if you allow notifications (via Firebase Cloud Messaging), and API request metadata (such as timestamps and IP addresses in server logs). Remote configuration (Firebase Remote Config) is used to enable or adjust features, which involves delivering configuration values to your device. When the app creates its anonymous identity, Apple's App Attest service (on iPhone) or Google's Play Integrity service (on Android) confirms to us that the app is a genuine store copy; this sends a one-time cryptographic attestation of your device's integrity, which we verify and do not store.

Advertising

In the apps. We show banner ads served by Google AdMob. The iPhone app does not ask to track you: it never shows the App Tracking Transparency prompt, and it does not use your device’s advertising identifier (IDFA), which iOS withholds from any app that has not asked. Ads there are chosen without it, and may be based on the context of the request, such as the app they appear in, the general area derived from your IP address, and the type of device. On Android, Google may use your device’s advertising ID to personalise and measure ads; you can reset or delete it in your device’s settings. On both, Google may process device information, coarse location derived from IP address, and ad-interaction data to serve ads, measure them, and prevent fraud, as described in Google's Privacy Policy. Our Firebase Analytics data is linked to AdMob to measure ad revenue. We never use your health data, workout data, or precise location to target ads.

On the dashboard. The signed-in dashboard at app.kardiacs.com shows ads served by Google AdSense. Google may set and read cookies or similar browser storage on that site, and may process your IP address, coarse location derived from it, browser and device information, and how you interact with an ad, in order to serve and measure ads and to prevent fraud — as described in how Google uses information from sites that use its services. In the EEA and the UK, personalised advertising and any non-essential storage are used only where you have consented; without consent you are shown non-personalised ads.

Nothing about your account or your training is sent with an ad request, on either surface. The pages carrying ads also show your profile, health history and route plans; none of that is passed to Google. We never use your health data, workout data, or precise location to target ads, and we do not tell Google who you are.

Users under 18 are never shown personalised advertising. Where your date of birth or the age range on your Apple Account or Google Account tells us you are under 18, ad requests are marked as being for a user under the age of consent, ad content is capped at the most general rating, the ad-personalisation signal from our analytics is switched off, and you are not shown any full-screen ad.

Google user data

If you choose Sign in with Google, in the apps or on the dashboard at app.kardiacs.com, you sign in on Google’s own page; we never see your Google password. We ask Google only for basic sign-in access (the openid, email and profile scopes) — never for access to Gmail, Drive, Calendar, Contacts, or any other Google service or data.

2. How We Use Your Data

We use your data to: provide the Service (control your trainer, run workouts, record and store your activities and routes, sync across your devices); generate fitness insights such as readiness and recovery indicators from your health metrics; plan routes and provide outdoor maps and turn-by-turn guidance (routes are worked out on your device; what leaves it are requests for map, route, and elevation tiles, and — only when you search for an address — the text you type, with an approximate position to bias the results. These lookups return an answer and are not stored as your data); generate suggestions such as workout playlists (see Section 4); exchange activities, workouts and routes with services you choose to connect (see “Connected services”); read the feedback you send us to fix problems and improve the app, and reply to it only if you emailed it; send you push notifications if you opt in; email you at the address from your sign-in — to give you notice of material changes to this policy, and for other important service notices such as a security incident or a change that affects your data. For this we keep a list of the email addresses of accounts, assembled from the accounts themselves and used for nothing else; anonymous identities have no address and are never on it. If, and only if, you give us your consent, we may also use that address for optional messages. Today that would typically mean product updates (new features and changes to how the app works), offers and promotions (a discount on a subscription, say), and reminders — for example that a training plan is waiting or that you have not ridden in a while — and we may add similar kinds of message in future; each is described when we ask, and none is sent to you before you agree to it. We do not add you to these without asking, every such message carries an unsubscribe link, and you can withdraw your consent at any time there or by emailing legal@kardiacs.com — withdrawing it stops the optional messages and leaves the notices above, which we send whether or not you consent. We never sell, rent, or share this list, and we do not use it for third-party advertising; show ads as described above; understand feature usage and improve the Service; maintain security, prevent abuse, debug problems, and comply with legal obligations.

We do not sell your personal data, and we do not use your health data for advertising or share it with data brokers.

3. Legal Bases (EU/UK Users)

Where GDPR or UK GDPR applies, we process your data on these bases: contract performance (account, workout, activity, route, and purchase data needed to deliver the Service); explicit consent (location data, music listening data, data exchanged with services you connect, and optional product, offer, and reminder emails — you may withdraw consent at any time in your device settings, in the app, or via the unsubscribe link in any such email; Apple Health / Health Connect metrics are read on your device under your permission and are never transmitted to us); legitimate interests (security, fraud prevention, crash diagnostics, usage analytics, service improvement, giving account holders notice of material policy changes and other important service messages, and showing contextual ads); and legal obligation where we must retain or disclose data by law.

What stays on your device

This is a fixed policy, not a setting you have to find. Your Apple Health / Health Connect metrics are never uploaded — readiness analysis runs entirely on your device. Mapbox’s usage telemetry is switched off. GPS coordinates are stripped from an activity before it is uploaded to us, and Kardiacs sends your activities to another service only if you connect that service yourself — see “Connected services” below. Without a connection, if you want a ride on Garmin Connect or anywhere else, you export the file and share it yourself. Routes are planned on your device — the search that builds them runs on your phone against map data it has already downloaded, so no route request, start point, or destination is sent anywhere. When you search for an address, the text you type goes to our maps provider to find it, and the map's centre goes with it to bias results toward where you are looking — rounded to about a kilometre, never your exact position. Weather forecasts and air-quality readings are requested for the same rounded position, on every platform. Map, route, and elevation tiles are requested by tile, which identifies an area of several kilometres rather than a place.

One deliberate exception applies on every platform: routes you choose to keep — favorites and GPX files you import — upload to your own account so they appear on your other devices. They describe a route’s shape rather than a record of where you have been, and they are never shared with other users. Separately, maps, navigation, and address search send your position to look up directions, addresses, and elevation as you use them; those lookups return an answer and are not stored as your data.

Connected services

You can choose to connect Kardiacs to an account you hold with a fitness service we support, such as Garmin Connect, COROS or Strava. Nothing is exchanged with any of them unless you connect it, and each connection is separate: connecting one service shares nothing with another.

What happens when you connect. You sign in on the service’s own page; we never see your password for it. The service gives us access tokens, which we store encrypted, with your identifier on that service, so Kardiacs can act on your behalf within the permissions you granted there.

What is exchanged. Depending on the service and the options you choose in the app, Kardiacs may receive activities you record with that service or its devices, which are stored with your other activities as described above; and may send it the activities you record in Kardiacs, the structured workouts you plan, and routes you choose to send. An activity you send to a connected service includes its GPS track and recorded data — that is what those services are for — so this is the one case, besides group riding, where your precise location leaves your device, and it happens only for services you have connected. Your Apple Health / Health Connect metrics are never sent to a connected service.

Their policies apply to what they receive. Once data reaches a connected service, it is handled under that service’s own terms and privacy policy, not ours, and what you want removed from it has to be deleted there.

Disconnecting. You can disconnect a service at any time in the app, or revoke Kardiacs’ access from the service’s own settings. Disconnecting deletes the tokens we hold and stops any further exchange; activities already imported stay in your Kardiacs history until you delete them, and data already sent stays with the service.

Using the websites

The public site at kardiacs.com is static: it has no accounts, no forms, no analytics, and no advertising, and it sets no cookies.

The dashboard at app.kardiacs.com signs you into the same account the apps use and is another client of the same service — the profile, equipment, activity and route data it shows is the data described above, not a separate collection. We keep two kinds of thing in your browser. For the open tab only, in session storage and discarded when you close it: your sign-in tokens; the short-lived values that secure the sign-in exchange itself; and, if you were signed out because an account requires you to be 18 or over, a note of that reason so the sign-in page can tell you why. In your browser until you clear it, in local storage, a few settings so the dashboard is as you left it: your light/dark preference, your choice of units, your answer to the usage-analytics question described below, whether you have dismissed the card offering the phone app, and, in the route builder, the vehicle you last chose for driving and your bike setup (tyres, aerodynamics, gearing and wind). These settings are not sent to us, and none of them is an advertising or tracking identifier. Google sets cookies of its own on the dashboard for two things: the advertising it carries — see Advertising above — and the usage measurement described next.

Usage analytics on the dashboard. The dashboard reports the same narrow usage measurement the apps do, into the same Google Firebase Analytics project, so a feature both have is one number rather than two. Google sets cookies of its own (named _ga and one per measurement property), and keeps an installation identifier in your browser’s IndexedDB, to recognise a returning browser. Two things are reported and nothing else: which page you opened, under a fixed name for each one, and that a sign-in happened, with which provider. The address in your browser’s bar is never sent — so the identifier of an activity you are reading, and the one-time code in a sign-in redirect, cannot travel with it — and no identifier of your account is ever attached: a report says a page was opened, not who opened it. Nothing you train, ride, plan or weigh is reported. If your browser or an extension refuses the request, nothing is reported and the dashboard works exactly the same.

You are asked first in Europe. If your browser is set to a European time zone, or to one we cannot place, the dashboard asks before any usage measurement starts and loads nothing from Google Analytics until you agree. Your answer is kept in your browser, and you can change it at any time under Preferences; saying no there also deletes the analytics cookies Google has already set. A no is honoured wherever you are.

Routes are planned in your browser, exactly as they are on your phone. The dashboard downloads the same map and terrain tiles for the area you are planning in and runs the same route planner locally; no route, start point, or destination is sent to us or to any mapping provider. Importing a GPX file reads it in the browser — the file is not uploaded.

The public site at kardiacs.com carries no advertising; the signed-in dashboard does.

Group riding

Group riding is optional and off until you join a group, which is done in person by scanning a QR code with your camera. While a session is running, your device talks directly to the other riders’ devices over Bluetooth, Wi-Fi Aware or a local network — there is no server involved, no account is required, and it works with no mobile coverage at all.

What your device sends to the others: the display name you chose, your live position and heading, a low-battery flag, and — only if you turn them on — your training numbers, which are derived from your health data (critical power, W′, lactate thresholds, and today’s readiness percentage). Your microphone is used only for push-to-talk voice. The microphone starts muted every session and that is deliberately not remembered: unmuting on one ride is not consent to arrive unmuted on the next, and a rider who never unmutes is never asked for microphone permission at all. While you are audible the app shows you that you are.

Group chat. The group has a chat, carried over the same device-to-device link. What you type, the photos you take with the camera or choose from your library to send, and the likes you give go to the riders in the group and nowhere else. Photos received are saved to your library only when you ask. When you use voice for chat — dictating a message, or captioning what you say for riders who cannot hear you — the words are recognised on your own phone (Apple’s on-device speech recognition on iPhone, Android’s on-device recogniser on Android): your audio is not sent to Apple, Google or us, and only the resulting text reaches the group. The same on-device recognition powers the notepad when you are not in a group. If a rider writes in another language, the app can translate the message on your phone — on iPhone with Apple’s Translation framework, on Android with Google’s ML Kit, which downloads a language model from Google the first time a language pair is needed; the message itself is never sent for translation. By default a copy of each group chat, with its photos, is kept on your phone as your own record, and you can switch that off or delete it in the app.

The group’s route. When the group is riding a route its leader has set, that route’s shape and its stops — each stop’s position, its name and what kind of stop it is — go to the other riders’ devices, so every phone is following the same course. When a rider asks for a stop, the place they picked goes to the leader, and the leader’s answer goes to the group. This describes where the group is going rather than where anyone has been, and it travels the same device-to-device link as everything else here.

Calling for help. You can raise an SOS from the group screen. It alerts the other riders and puts your position on their maps until you clear it. An SOS carries your position even when you have turned “Share my location” off — that switch stops the routine position updates a group normally exchanges, but a rider calling for help is trying to be found, so the alert overrides it. It reaches only the riders in your group, over the same device-to-device link; we never see it, and we cannot tell that you raised one. It does not contact the emergency services — see the Terms of Service.

All of this traffic is end-to-end encrypted between the devices in the group and authenticated per sender. It does not pass through our servers and we never receive it — not the voice, not the positions, not the training numbers. What the other riders in your group receive is on their devices, outside our control; share your training numbers only with people you would tell them to.

This is one of two exceptions to the rule that your precise location stays on your device — the other is an activity you send to a service you have connected. It applies only while you are in a group session, and only to the riders in that group.

4. Service Providers and Sharing

We share data only as needed to operate the Service:

RecipientPurposeWhat they receive
Amazon Web Services (AWS)Hosting, storage, and authentication for all Service dataAll data described above, stored in our AWS environment
AnthropicCloud AI-generated suggestions (e.g., daily workout playlists, when you use the cloud AI engine)The prompt content needed for the suggestion (e.g., workout characteristics and your music-taste summary); not your identity, account, or health records
Google (Firebase, AdMob, AdSense)Crash reporting, remote configuration, push notifications, and banner ads in the apps; usage analytics in the apps and on the signed-in dashboard; advertising on the signed-in dashboardDevice and app information, crash reports, analytics events, push token, and ad-request data as described above; not your health records or activity contents
Sentry (Functional Software, Inc.)Crash and performance monitoringCrash reports, device context, and diagnostic breadcrumbs (e.g., trainer Bluetooth connection events); not your health records
MapboxOutdoor maps and address searchMap tile requests for the area being displayed, the text of an address search with a position rounded to about a kilometre, and your IP address. Routes are planned on your device, so no route, start point, or destination is sent to Mapbox. Mapbox usage telemetry is disabled
Apple (WeatherKit)The weather forecast on iPhone and Apple WatchA position rounded to about a kilometre and your IP address, sent from your device to Apple’s weather service under Apple’s privacy policy; the same rounded position is used to name the place shown on the weather page
Open-MeteoAir quality on iPhone; the weather forecast and air quality on AndroidA position rounded to about a kilometre and your IP address. No account or identifier of yours is sent with the request
Amazon Web Services — our content delivery networkElevation (terrain) data used to calculate climb and to plan routes over hills, and the map data routes are planned againstRequests for the terrain and route tiles covering the area you are viewing, planning in, or have downloaded for offline use, which include your IP address. The tiles are derived from open data and served from our own AWS distribution; a request identifies an area of several kilometres, not a place, and carries no account or identifier of yours — the route tiles carry a short-lived signed cookie that only stops hotlinking and is the same for every user
CloudflareHosting and delivery of the websites, and protecting them from abuseThe requests your browser makes to kardiacs.com and app.kardiacs.com, including your IP address, browser user agent, and the pages requested. Cloudflare acts as our processor for this and does not receive your account or health data
Services you connect (such as Garmin, COROS and Strava)Exchanging activities, workouts and routes with an account you have connected — only if you connect itThe activities (including GPS tracks and recorded data), workouts and routes you choose to send, and the requests needed to receive your activities from it. See “Connected services”
Apple / GoogleApp distributionPlatform data under their policies

On-device AI

Some AI features run entirely on your device: the daily readiness narrative and, when you choose the on-device engine, music suggestions. On iPhone this uses Apple Intelligence (Apple's on-device Foundation Models); on Android it uses Gemini Nano through Android's AICore. The health metrics used to write the readiness narrative are processed only on your phone and are never sent to us or to any AI provider for that feature. Speech recognition for the group chat and the notepad, and translation of chat messages, also run on your device — see “Group riding” above.

We may also disclose data if required by law, to protect rights and safety, or as part of a merger or acquisition (in which case this policy continues to apply to data collected before the change, and we will notify you of any new controller).

5. Data Retention

We keep your data for as long as your identity — anonymous or account — is active. Activities, workouts, and saved routes remain stored so you can access your history. If you sign in, the data stored under your anonymous identity is merged into your account and the anonymous identity is deleted; where the account already holds a copy of something, the account's copy is kept.

Inactivity. If you do not use the Service for 59 consecutive days, we delete all of the data stored for your identity — including your activities, workouts, saved routes, profile, and equipment settings — whether or not you ever created an account. Any use of the app that reaches our servers counts as activity and resets this period, so simply opening the app and recording, syncing, or saving anything keeps your history. This deletion is permanent and we cannot recover the data afterwards. If you want to keep a copy of your history, you can export your activities as FIT files at any time.

When you delete your account — or, if you never created one, use Delete My Data in the app — we delete your personal data from our production systems within 30 days, and from backups within 90 days, except where the law requires longer retention. The email list described in Section 2 is regenerated from current accounts and keeps no history, so a deleted account leaves it as well. You can also delete individual activities, workouts, and routes in the app, and disconnect third-party services at any time (which deletes the stored tokens).

Feedback you send through the app is kept for up to two years and then deleted. Because it carries no identifier of yours, it is not covered by deleting your account or your data, and we cannot find a particular submission afterwards to delete it on request; feedback you email us is handled as correspondence and deleted on request.

6. Security

Data is encrypted in transit (TLS) and at rest in our AWS storage. Access to your data is authenticated with your identity's token, and our backend enforces per-identity isolation so no identity — anonymous or account — can access another's data. Third-party service tokens are stored server-side rather than on your device where practical. No system is perfectly secure; if a breach affects your personal data we will notify you and regulators as required by law.

7. International Transfers

Our servers are located in the United States. If you use the Service from the EU, UK, or elsewhere, your data is transferred to and processed in the US. For EU/UK data we rely on appropriate safeguards, including the EU–US Data Privacy Framework (where our providers are certified) and Standard Contractual Clauses.

8. Your Rights

Depending on where you live, you have the right to access, correct, delete, and receive a copy of your personal data, to withdraw consent, to object to or restrict certain processing, and to not be discriminated against for exercising these rights. You can exercise most of these directly in the app (export your activities as FIT files, delete data, and delete your account — or, without an account, delete everything stored for your anonymous identity) or by emailing legal@kardiacs.com. We respond within the timelines required by law (generally 30 days under GDPR, 45 days under California law).

EU/UK: you may lodge a complaint with your data protection authority. California: we do not sell personal information. The iPhone app does not use the advertising identifier. On Android, where Google uses your device's advertising ID to personalise ads, our advertising may constitute "sharing" for cross-context behavioral advertising under the CCPA/CPRA; deleting the advertising ID in your device's settings stops it, and you may also contact us with any request. We collect the categories described in Section 1 for the purposes in Section 2; you may exercise your rights via the contact above, including through an authorized agent. We treat similar rights under other US state privacy laws equivalently.

9. Children

The Service is not directed to children under 16, and we do not knowingly collect personal data from them. The app asks for your date of birth to check this minimum age — during setup or later, for example when you first use a feature that needs it — and does not continue for anyone under 16. Nothing is stored for you on our servers until that check has passed. On devices that support it we also ask for the age range on your Apple Account (on iPhone) or your Google Account through Google Play (on Android) and use it to check the date of birth you gave us; where the two disagree we apply the lower age, so an age range below 16 stops the app just as a date of birth below 16 does. For a child, for a teenager in an Apple Family Sharing group, and for a child or teenager with a supervised Google Account, that range is set by their parent or guardian.

Accounts require you to be at least 18. Sign-in is refused below that age, and if we determine that an existing account belongs to someone under 18 we sign that account out — the account and the data stored under it are retained, and they may sign in again once they turn 18. Structured workouts are also restricted to users 18 and over, and users under 18 are never shown personalised advertising (see “Advertising” above).

If you believe a child has created an identity or account, contact us and we will delete it.

10. Changes to This Policy

We may update this policy from time to time. For material changes we will notify you in the app or by email before they take effect. If you signed in with Apple or Google, that email goes to the address we received from your sign-in; if you use Kardiacs anonymously we have no address for you, and the notice appears in the app. This notice is not optional mail and does not depend on your consent to anything else. The effective date at the top always reflects the current version.

11. Contact

Kardiacs LLC
Email: legal@kardiacs.com