Legal

Privacy Policy

Last updated: 16 May 2026

The short version

RowPilot is built so most of your data never leaves your iPhone or Apple Watch.

  • Your workouts, heart rate, and history live in your device's storage and Apple Health — not on our servers.
  • We don't use advertising trackers, third-party analytics, or marketing pixels.
  • The one server we run is a small audio cache for spoken coaching cues. It sees the phrase to speak and an anonymous per-install ID — no name, no email, no health data.
  • We don't sell your data. We don't share it for advertising. We don't have an account system to leak.

1. Who we are

RowPilot is an independent indoor-rowing coaching app for iPhone and Apple Watch. It is not affiliated with Concept2, Inc. or Apple Inc. The app and this website are operated by the RowPilot project. You can reach us at [email protected].

2. What runs on your device only

The following data is created, stored, and used entirely on your iPhone and Apple Watch. We have no access to it.

  • Rowing machine metrics received over Bluetooth from a Concept2 PM5 (pace, distance, stroke rate, power, drag factor, stroke counts, intervals).
  • Heart rate streamed from your Apple Watch during a workout via Apple's HealthKit / WatchConnectivity frameworks.
  • Completed workouts saved in the app's private storage as JSON files, used to draw your history and trends.
  • Award progress, plan state, and preferences stored in the app's local preferences.
  • Workouts written back to Apple Health, when you grant permission, so they appear in the Health app alongside your other activity.

You can wipe all of this at any time by deleting RowPilot from your device. Workouts you wrote to Apple Health remain there until you delete them in the Health app.

3. HealthKit and Apple Health

RowPilot uses Apple's HealthKit framework to read your heart rate during workouts and to write completed rowing sessions back to Health. HealthKit data never leaves your device through RowPilot — Apple's framework hands it to the app on-device, and we don't transmit it anywhere. Apple's own rules also prohibit us from using Health data for advertising or selling it.

You control HealthKit access from Settings → Health → Data Access & Devices → RowPilot. Revoking access only stops new data flowing; it does not delete sessions you previously chose to save to Health.

4. Bluetooth and your Concept2

RowPilot uses Bluetooth to discover and connect to a Concept2 PM5. The Bluetooth connection is point-to-point between your iPhone and the rower — none of that data is sent over the internet by RowPilot. The PM5 itself does not transmit personal information.

5. The one server we run: spoken coaching cues

If you turn on voice coaching, RowPilot generates spoken cues like "halfway there" or "ease off the pace" by sending the cue text to a Cloudflare Worker we operate. That worker proxies the request to ElevenLabs, our text-to-speech provider, and caches the audio so the same phrase is never generated twice.

Each request includes:

  • The text to speak (a short coaching phrase — never your name, location, or health metrics).
  • A random per-install identifier used solely to enforce per-device rate limits, so a leaked client key can't be abused.
  • The standard request metadata your network connection always includes (IP address, user-agent), which Cloudflare uses for transport security and DDoS protection.

We don't link this identifier to you or your workouts. The cached audio is stored in Cloudflare R2 keyed by a hash of the phrase, so we have no way to look up "what cues did this user hear." ElevenLabs receives only the phrase text and standard request metadata; their privacy policy applies to that processing.

6. We don't run analytics or trackers

RowPilot does not embed third-party analytics SDKs (no Firebase, Mixpanel, Amplitude, Sentry, Crashlytics, advertising SDKs, or social-media pixels). We don't track which screens you view or which buttons you tap. Apple's standard App Store / TestFlight tooling reports aggregate, anonymous install and crash statistics to us — you can opt out in Settings → Privacy & Security → Analytics & Improvements.

7. This website (rowpilot.app)

The site is a static page hosted on Cloudflare Pages. It does not set first-party cookies, run analytics, or include marketing trackers. Cloudflare logs standard request metadata (IP address, user-agent, timestamp, URL) at the network layer for security, abuse prevention, and basic operational diagnostics — this is the same processing Cloudflare performs for any site behind their proxy.

The site loads the Inter typeface from rsms.me, a third-party CDN, which means your browser's IP address is visible to that host when fetching the font. We may move the font in-house in a future revision.

8. Children

RowPilot is intended for adults learning to row indoors. We don't knowingly collect personal information from anyone under 13. If you believe a child has provided personal data to us, please email [email protected] and we'll delete it.

9. International users

The app stores your data locally on your device, wherever you are. The voice-coaching worker runs on Cloudflare's global edge, and ElevenLabs processes phrase text on infrastructure they operate. Wherever you are in the world, the data flows described above are the same.

10. Your rights

Because we hold almost no personal data about you on our servers, there is very little for us to access, correct, or delete on your behalf. For the data stored on your device, you have full control: every screen in RowPilot is acting on your own copy of your data. To wipe it, delete the app.

If you believe we hold information about you that you'd like to access or remove — for example, if you contacted us by email — write to [email protected] and we'll respond within 30 days.

11. Changes to this policy

If we add a feature that meaningfully changes what we collect (for example, adding accounts, social features, or analytics), we'll update this page and bump the "last updated" date at the top. Material changes will also be called out in the app.

12. Contact

Questions, requests, or concerns: [email protected].