RowCoach is operated by CMC Factory LLC. This policy explains how RowCoach handles information when you use the RowCoach website, browser-based rowing form coach, Stripe checkout, and related support resources.
Privacy-First Camera Processing
RowCoach processes webcam frames in your browser to estimate body landmarks and display your live camera and skeleton. Camera video remains on your device: webcam video and images stay on your device and are never uploaded or stored by RowCoach. During an active coached session, derived pose landmarks and timing are transmitted over an encrypted connection for ephemeral live analysis. Those pose packets and the service's in-memory analysis state are discarded when the connection closes and are not stored in Firebase, cloud storage, analytics, or application logs. Camera access starts only after you grant permission, and you can revoke that permission in your browser settings.
Information We Process
RowCoach may process camera frames locally in your browser; derived pose landmarks and timing needed for ephemeral live analysis; presentation-safe coaching results returned to your browser; device and browser information needed to operate and secure the service; optional usage analytics that you accept; and information you choose to provide to support.
For signed-in users, RowCoach stores profile preferences and aggregate session information in Firebase: session time, duration, stroke count, average stroke rate, average technique score, and form-flag counts, plus up to 10 aggregate session segments. Saved schema-v2 live sessions may also include bounded public per-stroke assessment data: elapsed timing, stroke rate, technique score, public form flags, Coach angle estimates, and Rhythm Trace phase and transition measurements. These records let you review, export, and clear your progress without storing camera or raw motion data.
RowCoach also stores your locked rowing level, experience progress, and Prestige achievements. This includes technique XP, recent aggregate consistency evidence, required form-review completion, demotion and at-risk state, and current and highest Prestige. Saved session history does not include webcam video, raw images, audio, raw pose landmarks, per-frame geometry, or protected analysis internals.
If you connect Concept2, RowCoach stores only your Concept2 user ID, encrypted OAuth credentials, synchronization status, and normalized indoor-rowing performance from the range you choose. Source labels keep RowCoach, PM5, and Concept2 values separate. RowCoach does not copy Concept2 comments, rankings, profile names, email, date of birth, or other profile fields, and it does not store raw Concept2 API responses or raw PM5 packets.
For protected live-coaching metering, RowCoach processes authorization, connection timestamp, checkpoint, close timestamp, UTC period, accounted seconds, warning, block, and review state, together with coaching-pack purchase, consumption, and refund identifiers. This metering does not store camera images, video, pose landmarks, per-frame results, per-stroke results, or proprietary analytical state.
To monitor whether coached strokes are being assessed reliably, RowCoach keeps aggregate assessment-quality diagnostics such as the public app release, physical, assessed, and unassessed stroke counts, bounded non-assessment reasons, and a privacy-safe support code. The support code may appear in your completed-row recap and saved Session Analysis so you can share it when a row looks wrong. It is not a sign-in or security code and does not authorize access to your account. These diagnostics do not contain webcam video, images, audio, raw pose landmarks, per-frame geometry, your email, or your account ID.
Payment, subscription, receipt, invoice, billing address, tax, and payment method information is processed by Stripe when you purchase or manage a subscription. RowCoach does not receive or store your full card number.
For an eligible new account, RowCoach keeps a private record for its one account-plan reminder. It records whether it is scheduled, sent, failed, or skipped and why, and when that happened. After a message is prepared, the record keeps a protected fingerprint for its unsubscribe link. It does not keep the message body or the link itself.
How We Use Information
We use information to provide live rowing form feedback, operate and secure the website, process subscriptions, provide receipts and billing support, respond to support and privacy requests, and comply with legal, tax, accounting, and fraud-prevention obligations.
We use protected-analysis metering and coaching-pack records for service delivery, cost control, abuse prevention, customer support, accounting, refunds, and legal compliance.
We may use that state to send one account-plan reminder approximately 24 hours after activation when Checkout has not been opened. RowCoach does not use tracking pixels or click-tracking redirects in this reminder.
Third-Party Services
RowCoach loads browser pose-estimation assets such as MediaPipe JavaScript, WebAssembly, and
model files from public hosting providers. Its ephemeral analysis service runs on Google Cloud,
and the site is hosted through Firebase Hosting. Stripe
handles subscription checkout, payment processing, customer billing portals, receipts,
invoices, tax calculations, fraud screening, and related billing communications. RowCoach
uses PostHog and Google Ads conversion measurement only after you accept optional analytics.
PostHog measures landing-page visits, Start-page visits, selected Check-In intent source, account method and plan categories,
checkout, purchase, entitled-app, and coaching interactions so we can understand and improve RowCoach. This includes whether the first-use
starting-level choice was shown in Form Coach or Progress, one of three self-selected starting
levels, whether it led to a required form review or camera preparation, coarse camera-setup start and success,
bounded camera-setup failure categories and startup-time ranges, protected-coaching interruption
categories, coached-session completion, visits to Progress and Session Analysis, same-origin browser
reliability categories, and optional structured answers about whether the coaching was useful and why.
The camera and coaching page does not
load the PostHog JavaScript SDK, use autocapture, or record sessions. After consent, it sends only
allowlisted conversion and product-experience events for Checkout, a verified purchase, a server-confirmed entitled app open, personalized
setup, the bounded first-use starting-level path, camera setup, coached-session completion, Progress and Session Analysis use, reliability, and
structured coaching feedback. Those events may use your email to join activity to the same account
funnel and may include the selected public plan identifier and the confirmed entitlement status. If an accepted analytics event must retry,
RowCoach preserves the time that event originally occurred so it remains in the correct reporting window.
RowCoach disables IP-derived location enrichment for these PostHog events and configures PostHog to
discard the client IP address. The camera and coaching page does not load the PostHog JavaScript; it sends only
allowlisted conversion and product-experience events through PostHog's managed reverse-proxy Capture endpoint at
t.rowcoach.live. PostHog uses Cloudflare as a subprocessor for that proxy traffic. The landing and Start integrations disable automatic pageview capture and
remove full page URLs, paths, hosts, referrers, campaign parameters, advertising click identifiers,
browser, browser-language, user-agent, timezone, device, operating-system, screen, and viewport properties before an event is sent. Check-In links from Learn,
Benefits, and technique guides carry only one coarse source label in the browser-only URL fragment. That label is removed
on the Start page, is never written to browser storage before consent, and is sent only if analytics is accepted.
Activity performed while analytics is explicitly rejected is not buffered for later delivery. RowCoach does not send
camera video, images, audio, pose landmarks, per-frame analysis, per-stroke measurements, session IDs,
session metrics, error messages, stack traces, or free-text feedback. Feedback is requested only after
selected completed coached sessions; the reason is optional and chosen from a fixed list.
Google Ads measures whether an advertising visit leads to completed account setup and, separately,
a verified subscription start. The account-setup event may include the selected public plan identifier
and whether setup used email or Google authentication. Either event may include the page URL and
referrer, standard browser request information such as IP address and user agent, and an advertising
click identifier when one is present. RowCoach does not include your name, email, Firebase or Stripe identifiers, camera
video, images, audio, pose landmarks, per-frame analysis, or per-stroke measurements in the Google
Ads event. RowCoach does not enable personalized advertising through this tag.
Zoho processes the destination address and message solely for SMTP delivery of the account-plan reminder.
Concept2 processes authorization and any workout that you choose or configure RowCoach to upload. RowCoach omits a privacy setting from an upload, so Concept2 applies your existing Concept2 Logbook privacy setting. Disconnecting RowCoach is not a remote deletion or revocation request.
Accounts
You need a RowCoach account with current server-confirmed coaching access to use the live form coach. Production account creation and sign-in are handled by Google Firebase Authentication: your name, email address, and password are processed and stored by Firebase according to Google's terms, RowCoach never sees or stores your password, and you can request a password reset email or ask us to delete your account. Production sign-in fails closed if Firebase is unavailable; RowCoach does not replace your cloud identity with a local account. If you accept analytics and create or sign in to an account on the Start page, your email may be associated with your usage analytics in PostHog so we can respond to support requests and understand usage.
Cookies and Local Browser Data
Before optional analytics loads, RowCoach asks every visitor whether to accept or reject it. If you accept, PostHog and Google Ads may use optional cookies and similar local browser storage to distinguish visits for the analytics and conversion-measurement purposes described above. RowCoach also stores an account-scoped local completed-session count and last-prompt time to limit how often the optional coaching-feedback question appears. This local prompt state is not itself sent. Google Ads conversion measurement records completed account setup only after the required setup succeeds. It records a verified subscription start separately only after RowCoach independently confirms the returning user's coaching entitlement. A pricing-page visit or unverified Checkout return is not counted as either action. Rejecting analytics does not affect RowCoach or limit any site, account, checkout, camera, coaching, or progress feature.
RowCoach honors your browser's Global Privacy Control and Do Not Track signals. If either is enabled, RowCoach treats analytics as declined and does not load PostHog or the Google tag unless you later choose to accept analytics yourself.
RowCoach stores one first-party consent preference solely to remember your accepted or rejected choice. The preference expires after 180 days, or sooner if RowCoach materially changes its analytics purposes. You can change or withdraw your choice at any time using the Cookie choices control in the RowCoach footer, on this Privacy Policy, or in the app. Withdrawal stops future analytics, tells Google that advertising and analytics storage are denied, removes the Google tag from the page, and removes known RowCoach PostHog identifiers from that browser.
Stripe may use cookies or similar technologies on its separately hosted checkout and billing pages according to its own policies. The RowCoach cookie choice does not control storage on Stripe's separate domains. Your browser may also store site permissions, such as whether camera access is allowed.
Sharing
Coach Training
Coach Training and AI draft processing are not active in production. If RowCoach later makes Coach Training available, the sharing and processing disclosures below will apply only after the required new legal acceptance, invitation, consent, and feature release.
After you accept a Coach Training invitation and consent, RowCoach may share structured rowing evidence with your one active coach: goals and availability, published-plan status, workout and report identifiers, source coverage, aggregate PM5 performance, aggregate technique scores and recurring public form flags, missing-evidence reasons, self-reported effort, fatigue, discomfort, and notes when consent permits. Your coach may store coach notes and private plan drafts. You may revoke access; revocation immediately blocks new coach reads and publication.
Only when your coach explicitly requests a draft, an AI provider may process the bounded structured rowing evidence, request goal, availability, constraints, emphasis, and coach notes. AI output is untrusted and private until the coach reviews and publishes it. Coach Training sends no raw camera video, audio, pose landmarks, per-frame packets, raw PM5 packets, device serial numbers, protected analyzer state, billing information, or payment information to a coach or AI provider.
We do not sell personal information. We share information only as needed to operate RowCoach, process payments through Stripe, host the website, respond to support requests, comply with law, protect users and RowCoach, or complete a business transfer such as a merger or sale of the service.
Retention
Training records
If you use RowCoach Training, RowCoach may store your Training profile and plan, assignment, session, report, and plan-event records, together with self-reported effort, fatigue, discomfort, and notes. When the selected workout mode supports them, Training may also store aggregate 15-second PM5 and technique windows and source-coverage status. Self-reported values, including personal records typed by you, are not independently verified. A result is identified as PM5-measured only when RowCoach verifies an eligible completed owner session. Training does not add raw camera video, audio, pose landmarks, or protected analyzer state to these stored records.
Normalized RowCoach Logbook records remain until you remove imported copies, clear the RowCoach Logbook, or delete your account. Disconnecting RowCoach stops new synchronization immediately and deletes RowCoach's encrypted Concept2 credentials after any already-sent result is reconciled. It does not delete workouts from Concept2 and does not claim to revoke access remotely. You can also remove RowCoach from the Applications area of your Concept2 account.
RowCoach session history is retained until you clear your history or delete your account. Clearing history removes it from your view immediately while secure background deletion may finish afterward. Clearing session history does not remove your locked starting level, rowing level, XP, form-review record, demotion state, or Prestige achievements; those account-level achievements are removed through complete account deletion. Support communications are kept only as long as reasonably needed to respond and maintain business records. For a promotional purchase, RowCoach retains a limited purchase-acceptance record containing the accepted legal versions, price and renewal disclosures, consent result, promotion eligibility confirmations, and account linkage. For a monthly-to-annual conversion authorization, this also includes the scheduled conversion date and Stripe subscription-schedule identifier. Stripe transaction identifiers are retained for contract, accounting, fraud prevention, and legal-compliance purposes. Stripe retains payment and subscription records according to its own legal, tax, fraud-prevention, and payment-network obligations.
Training plan, assignment, session, report, and event records remain until you clear Training data or delete your account. Detailed 15-second sample chunks expire after 12 months. Abandoned local checkpoints expire after 30 days. After you clear Training data, RowCoach may retain a minimal content-free clear receipt for at most 30 days so a safely retried clear request cannot restore or duplicate deleted records.
Coach-private drafts, evidence snapshots, and AI request artifacts are not visible to the athlete before publication. Revocation hides private drafts. Terminal private requests and artifacts are retained for at least 30 days and then become eligible for bounded cleanup; incomplete or corrupt cleanup may retain them longer. Mutation receipts have a 30-day expiry and are then eligible for bounded cleanup, while limited publication audit may be retained under the documented account-deletion policy. Athletes can export their owned Training records with coach/AI provenance and request deletion; exports exclude coach-private notes and AI evidence snapshots. Coaches can export or delete their own workout templates. Account deletion preserves separately owned athlete records and only the limited audit evidence required by that policy.
Monthly metering records, credit-lot ledgers, corrections, and refund workflow records are retained with the account as needed to deliver purchased time, resolve disputes, prevent abuse, and meet accounting, tax, and legal obligations. Account deletion may be delayed while an eligible or pending pack refund is resolved, and legally required financial evidence may be retained after other account data is deleted. Google Cloud processes the service and metering records; Stripe processes payment and refund records.
The account-plan reminder record and promotional-email opt-out are kept for the life of the account and are removed with complete account deletion.
Security
We use service providers and product choices intended to limit sensitive data collection, including browser-local video processing and Stripe-hosted payment pages. No website or internet transmission can be guaranteed to be perfectly secure, so use RowCoach only on devices and networks you trust.
Children's Privacy
RowCoach is not directed to children under 13. Do not use RowCoach or submit information to RowCoach if you are under 13. If a parent or guardian believes a child under 13 provided information to RowCoach, contact us so we can review and delete it where appropriate.
Your Choices
The RowCoach Logbook lets you download the current normalized record as JSON or CSV, remove imported Concept2 copies without deleting remote workouts, disconnect Concept2, or clear the RowCoach Logbook. Complete account deletion removes the RowCoach-owned Concept2 connection, credentials, mappings, jobs, and normalized entries without asking Concept2 to delete its copy.
You can stop camera processing by closing the app, stopping the camera, or revoking camera permission in your browser. You can use Cookie choices in the RowCoach footer, on this Privacy Policy, or in the app to accept, reject, or withdraw optional analytics. You can review, export, or clear session history from the Progress page. You can manage subscription billing through the RowCoach billing portal. Use the email's unsubscribe link or your email provider's unsubscribe button to stop future RowCoach promotional email. This does not affect service, security, billing, or legal notices. You can contact us to request access, correction, and deletion, or other privacy help, subject to legal and security limitations.
Changes
We may update this policy as RowCoach changes. The updated policy will be posted on this page with a new last-updated date.
Contact
For privacy or support requests, email support@rowcoach.live or call RowCoach support at 314-445-4471. You can also use the support resources on the Support page.