Privacy Policy
Esta página todavía no está en tu idioma, así que ves la versión en inglés. La versión en chino tradicional es la que manda.
AeroPacer turns a course, the race-day weather and your own numbers into a bike power plan. This policy explains what we collect, why, who we hand it to, and how you get it back or delete it. It is written plainly because we would like you to actually finish reading it.
What we collect
Things you give us
- Account: your email. If you register with a password, we store a scrypt hash of it. We cannot see or recover your original password. If you sign in with Google, we receive only your email address and the account identifier Google issues.
- Rider parameters: FTP, weight, height, bike weight, riding position, surface and gearing. These are the inputs to the power calculation.
- Files you upload: course GPX files and ride FIT files. We keep the original FIT compressed so that when the algorithm improves we can re-estimate your past CdA without asking you to upload everything again. Ride files contain a GPS track and may contain heart rate (see "Heart rate is health data" below).
- Head unit accounts you link (Wahoo, Hammerhead, COROS, Garmin): this only happens after you press Link and approve on the vendor's consent screen. We read your own activity list and the original FIT files (power, speed, elevation, GPS track, and heart rate if the file has it), plus the weight the vendor holds (Wahoo). The access credential is stored on our server; you can unlink at any time in Account settings, and the credential and sync ledger are deleted immediately.
- Garmin specifically: once linked, each time you finish an activity and your device syncs to Garmin Connect, Garmin sends us that activity's summary (activity type, device model, start time) and the original FIT file; activities from before you linked are not sent. We use rides only: files for runs, swims and other activities are not kept (when the type isn't stated we download the file to check, and discard it if it isn't a ride). We never ask for your Garmin password, and we do not read Garmin's health data (sleep, stress, all-day heart rate and so on). When you unlink here we also tell Garmin to stop sending; if you remove the authorization in Garmin Connect instead, we delete the link when Garmin notifies us.
- Athlete profiles created with a coach plan: if you keep athletes on a coach plan, their names and parameters are covered by this policy too.
- Problem reports: what you send through the "Report a problem" form, up to 3 screenshots, the email you leave (your account email if you are signed in), and the context the form attaches automatically: the page you were on, language, browser version, screen size, time zone, appearance setting, and the most recent error messages on that page. We use these only to understand and fix what you reported and to reply to you.
Things the system produces
- Your power plans, CdA history and confidence bands, and share links.
- Auto-synced rides produce a race report, ride metrics (for example your best 20-minute power, used to estimate FTP) and a race/training tag. These are shown only to you and to a coach you have linked.
- Where a ride started: the place name on a single-ride page (town, region, country) is looked up from the ride's starting coordinates through Nominatim (see the table below).
- Backtest pool for model calibration (opt-in, off by default): only after you turn this on in your account settings are the race files you have compared against a plan (auto-synced or uploaded) copied in pseudonymised form, together with weight, bike weight, the CdA and plan parameters used, to calibrate and validate the pacing model. Pseudonymised means the copy holds no email, name or account, only a tag derived with our server's secret key; but we can use that same key to match it back to your account (which is how we are able to delete it), and the race file itself contains a GPS track, so it is still personal data and still covered by this policy. You can turn it off again in the same place at any time; nothing new is collected after that, and you can email support@aeropacer.com to have what was already collected deleted. This copy is never published, never shared with third parties and not used to train any external AI model; it is deleted with your account. Race files synced from Garmin and other linked accounts follow the same rule: they are only included if you turn this on, and only to calibrate our own physics-based pacing model. Because this is processing your data with a model, we treat it as something that needs your explicit consent.
- Payment status: your Stripe customer ID, which plan you bought, and when it renews. Card numbers never touch our servers; Stripe handles them.
- Server logs and a short-lived IP counter used to block brute-force logins. The counter lives in memory only and disappears when the server restarts.
- How you found us: on your first visit, the domain of the site you came from (for example google.com, not the full address), any campaign tags on the link (UTM), and the first page you viewed. None of this is written to a cookie. It reaches us only when you sign up, sent along with your sign-up details and stored with your account, and is used only to count which channels bring in members. If you never sign up, we never receive it.
What we do not collect: advertising identifiers, contacts, or location permissions. There is no Google Analytics on this site and no third-party advertising or analytics cookies.
Heart rate is health data
FIT files you upload or sync often include heart rate. Heart rate is health data, so we read and use it only after you have given explicit consent: to show a ride's heart rate curve and average, and to calculate heart rate drift in the race report.
- You do not have to consent. Everything else keeps working; you just will not see the heart rate charts and analysis.
- You can withdraw consent at any time in Account settings. After that we no longer read or show your heart rate. Processing done before you withdrew is not affected.
- Original FIT files are kept whole (for the reason given above), so the heart rate field stays inside the file; without your consent we do not read or use it. Deleting the record or your account deletes the file.
De-identified statistics
We turn the data collected on the site into aggregate statistics, to improve the pacing model and for articles on the site, such as the CdA distribution in "What is a good CdA?".
- Only aggregate figures are published: counts of people and files, medians, ranges and the like. No individual's own numbers, and no detail that would tell anyone who it is (names, accounts, who rode which race).
- Groups too small to keep people unrecognisable are not published.
- If you would rather not be counted, email support@aeropacer.com and your data will be left out of statistics from then on.
Legal bases for processing
If you are in the EU, the UK, or anywhere else that requires a stated legal basis, this is what we rely on for each kind of processing:
| Purpose | Legal basis |
|---|---|
| Account and sign-in, calculating power plans, saving plans, estimating CdA, head unit sync you set up, the place name of a ride's start, emails you ask for (password resets, race reports), payments | Performance of our contract with you: this is the service you asked us to provide |
| Heart rate | Your explicit consent (GDPR Article 9(2)(a)), which you can withdraw at any time |
| Backtest pool | Your consent, which you can withdraw at any time |
| Brute-force protection, server logs | Our legitimate interest in keeping your account and the service secure |
| Sign-up source counts, de-identified statistics | Our legitimate interest in knowing which channels work and improving the model and content. You can object |
| Handling problem reports | Our legitimate interest in understanding and fixing what you reported, and replying to you |
| Payment and tax records | Legal obligation |
Cookies
| Name | Purpose | Lifetime |
|---|---|---|
bp_session |
Keeps you signed in | 90 days |
bp_oauth |
One-time anti-forgery token during Google sign-in | 10 minutes |
lang, langpick |
Remembers the language you chose | 1 year |
ref |
The referral code from a referral link you clicked, used to credit the referrer when you sign up | 30 days (deleted at sign-up) |
All of these are strictly necessary to run the site. None of them tracks you across sites, and none is shared with any third party or ad platform.
When you sign in with Google
We request only the openid and email scopes. In other words, we receive your email address and an account identifier, and nothing else. We cannot read your Gmail, Drive, Contacts, Calendar or Photos.
Data received from Google is used solely to create and identify your AeroPacer account. We do not sell it, do not use it for advertising or to build advertising profiles, and do not pass it to third parties beyond the service providers listed below or where the law requires it. This is consistent with the Google API Services User Data Policy, including its Limited Use requirements.
Who we share data with
Only what a provider needs to make the service work:
| Who | What they get | Why |
|---|---|---|
| fly.io (servers in Tokyo, Japan) | All stored data | Hosting and database |
| Stripe | Email and purchase records; card details go straight to Stripe | Payments |
| The sign-in exchange, if you choose Google sign-in | Account login | |
| Wahoo, Hammerhead, COROS, Garmin | The authorization round-trip when you link, then reads of your rides (Garmin sends each ride to us after you finish it); a notice to the vendor when you unlink | Head unit auto-sync (only if you link) |
| Resend | Your email address and the message body (race reports, password resets); the text, screenshots and context of problem reports (forwarded to our support inbox) | Email delivery |
| Cloudflare, Google (Gmail) | Mail sent to support@aeropacer.com, including forwarded problem reports | Forwarding and receiving the support inbox |
| Nominatim (OpenStreetMap Foundation) | The coordinates of a ride's start (to about 1 m), with no account, email or name; our server makes the request, not your browser | Turning the start point into a place name |
| Visual Crossing | For CdA estimates: the coordinates of the ride's midpoint (to about 10 m) and the ride date. For race plans: coordinates of a few points on the course and the race date. Never your account, email or name | Wind and temperature on the day of the ride; historical weather for race day |
| MET Norway | Coordinates of a few points on the course and the race date (if you uploaded your own GPX, points on that route), with no account, email or name | Race-day forecast |
| OpenFreeMap | Your IP address, because your browser fetches map tiles directly | Maps |
We do not sell personal data and we do not share it for cross-site advertising.
International transfers
Our servers are in Tokyo, Japan (fly.io), so wherever you live, your data is transferred to and stored in Japan. To provide the service, some data also goes to:
- United States: Stripe, Resend, Visual Crossing, Google, Cloudflare.
- United Kingdom: Nominatim (OpenStreetMap Foundation).
- Norway: MET Norway (course coordinates only).
- Head unit vendors (Wahoo, Hammerhead, COROS, Garmin): wherever each of them stores data.
The EU has adequacy decisions for Japan and the UK. For other destinations we rely on the safeguards the provider offers (for example the EU Standard Contractual Clauses). Where a service has no such terms (for example Nominatim), we send only the minimum that feature needs: one coordinate with no account information attached. If you want to know which safeguard applies to a given provider, email us.
How long we keep it, and how to delete it
| Data | How long |
|---|---|
| Account, rider parameters, plans, CdA records and original files, sync ledger, sign-up source | While your account exists. Deleted within 30 days of account deletion |
| Head unit access credentials | Deleted immediately when you unlink (including removing the authorization in Garmin Connect) or delete your account |
| Heart rate | Stays with the ride file it belongs to; no longer read or shown once you withdraw consent |
| Pseudonymised backtest copies | Until you ask us to delete them or you delete your account |
| Problem reports (text, screenshots, context) | Until you ask us to delete them or you delete your account |
| Mail sent to the support inbox | Until you ask us to delete it |
| Sign-in cookie | 90 days |
| Brute-force IP counter | In memory only; gone when the server restarts |
| Server logs | Our host keeps only a short recent window; we do not archive them |
| Backups | Daily host snapshots are kept for 5 days; a weekly off-site backup keeps the latest 8 copies (about 8 weeks). Deleted data is gone from backups after that period at the latest |
| Payment and tax records | For as long as the law requires (held by Stripe); not covered by deletion |
| Published de-identified statistics | Aggregate figures only, not traceable to anyone; kept indefinitely |
You can:
- Delete individual items on the site: plans, routes and CdA records.
- Email support@aeropacer.com to delete your whole account. We will remove the account, rider parameters, plans, CdA records and stored original files within 30 days.
Your rights
You may ask to see, correct or delete your data, or to receive a copy of it. Users in the EU and the UK also have rights under the GDPR, including restriction, objection and data portability. Where we rely on your consent (heart rate, the backtest pool), you can withdraw it at any time; processing done before you withdrew is not affected. Email support@aeropacer.com. We will not ask you to justify the request.
Complaining to a regulator: if you think we have handled your data wrongly, you can write to us first. You also have the right to complain directly to the data protection authority where you are, for example the authority of the EU member state where you live or work, the UK Information Commissioner's Office (ICO), the Office of the Privacy Commissioner for Personal Data in Hong Kong, or Taiwan's personal data protection authority.
Notice under Article 8 of Taiwan's Personal Data Protection Act
Under Article 8 of Taiwan's Personal Data Protection Act, we inform you of the following:
- Who collects the data: AeroPacer (see "Contact" at the end).
- Purposes: providing the account and power pacing service, CdA estimation and head unit sync, payments and customer service, answering problem reports, keeping the system secure, and the statistics and research described in "De-identified statistics" above.
- Categories of personal data: see "What we collect": data that identifies you (email, account identifier), physical description (height, weight), exercise and ride data (power, speed, GPS track), and heart rate, which we process only with your consent.
- Period, place, recipients and method of use: the period is set out in "How long we keep it"; the places are Japan (our host) and those listed under "International transfers"; the recipients are us, the providers listed under "Who we share data with", and any coach you have linked; the method is automated processing by computer.
- Your rights and how to exercise them: to inquire about or review your data, to get a copy, to supplement or correct it, to ask us to stop collecting, processing or using it, and to ask us to delete it. Email support@aeropacer.com.
- What happens if you do not provide it: providing data is your choice. Without an email you cannot sign up; without parameters such as FTP and weight we cannot calculate a power plan; if you do not consent to heart rate processing, you will not see the heart rate charts and analysis, and everything else works as usual.
Age requirement
AeroPacer is only for people aged 16 or over, and you confirm that you are when you sign up. We do not knowingly collect data from anyone under 16; if we find we have, we delete that account and its data.
Changes to this policy
We will update the date at the top of this page when it changes. For substantive changes, such as a new purpose for your data, we will also email signed-up users.
Contact
For anything privacy-related, write to support@aeropacer.com.