Help, troubleshooting, billing, and how to reach the developer.
Got a question, bug, feature request, or billing issue? Email me directly — I read every message.
Refunds, cancellations, and unauthorized Chart35 Sync charges: see billing help below or email jacob@stephens.page.
By default, every observation lives on your device in IndexedDB. The app works fully offline. If (and only if) you create an account and sign in, your observations are end-to-end encrypted on your device using a key derived from your password, then backed up to our server. We cannot read your synced health data — the server stores encrypted blobs only.
See the full Privacy Policy for details.
Sign in (or create an account), then go to Settings → Provider Sharing and tap Generate Link. Send the link to your practitioner. They can view a read-only version of your chart at that URL without needing an account of their own. The link expires after 90 days, and you can revoke it at any time from the same screen.
The shared view excludes your private notes field. Bleeding, mucus observations, peak day, post-peak count, and the intercourse indicator are all visible to the practitioner.
You can reset your password from the sign-in screen by entering your email. However, because your observations are encrypted with a key derived from your old password, resetting the password means the previously synced data on the server can no longer be decrypted and will be lost. Your local on-device data is unaffected if you do the reset on the same device that already has the data.
If you only had data on a device you no longer have access to, that data is unfortunately not recoverable — this is the trade-off for the end-to-end encryption that prevents anyone (including us) from being able to read your data.
Open the app while signed in, go to Settings → Account, and tap Change email. Enter your new address and current password. We email a confirmation link to the new inbox; your account email updates only after you open that link. You stay signed in on your devices.
We also send a security notice to your current address when a change is requested and when it completes. If you did not request the change, reset your password from the sign-in screen immediately and contact jacob@stephens.page.
You can cancel a pending change from Settings before you confirm the new address.
Watches and other devices: Apple Watch and Wear OS may still show the old email until you sign in again. After a change, always sign in with your new email. Requesting a sign-in code for the old address will not deliver a code (and will not show an error, by design).
App name: Chart35 (com.creighton.tracker).
How to delete: open the app, go to Settings → Account & Sync → Delete Account, re-enter your password to confirm, and tap Permanently delete my account.
What is deleted (immediately, on confirmation):
What is retained: nothing related to your account is retained server-side after the operation completes. Anonymized HTTP server access logs (IP address + request URL only) may persist for up to 30 days as part of standard operational logging.
Retention period: deletion is immediate. The server-side database row is removed inside a single SQL transaction at the moment you tap the confirmation button; there is no retention window or recovery period. If you change your mind after the fact, you must register a new account from scratch — previously synced encrypted data cannot be recovered because (a) the row no longer exists and (b) we never held the decryption key.
If you want a manual deletion instead: email jacob@stephens.page from the email address associated with the account. Manual deletion is performed within 30 days of a verified request.
To delete on-device data only (without deleting the account): open the app, sign out, and either delete individual observations from the chart or calendar views, or uninstall the app entirely.
First, check your cycle boundary. If the app drew the wrong boundary (for example, treating Very Light bleeding at the start of a period as still part of the previous cycle), open that observation and toggle First Day of Cycle on. The chart will redraw.
Second, check the chart zoom level. Normal/Compact/Trend toggles are at the top right of the chart view.
If observations are still missing, hit Settings → Upload to Server to force a re-sync, then refresh the page (or fully close and reopen the app on Android).
They should — provider sharing now includes the intercourse indicator. If you're not seeing them, your saved server snapshot may be stale from before the May 2026 update. Open the app, hit Settings → Upload to Server, then refresh the share link.
Settings → Data Management offers JSON backup (everything, restorable) and CSV chart export (cycle-level summary, friendly for spreadsheets and printing). You can also save the chart as a PNG image or print it directly.
The Capacitor app loads its web bundle live from chart35.com, but a service worker caches files for offline use. To force the newest version, fully close the app (swipe out of recents) and reopen. The new bundle activates immediately on next launch.
Chart35 is an independent open-source project built by Jacob Stephens. It is not affiliated with, endorsed by, or sponsored by FertilityCare Centers of America, Creighton University, or the Saint Paul VI Institute. Creighton Model FertilityCare™ System is a trademark of FertilityCare Centers of America, used here descriptively only.
This app is a charting tool only. It is not a substitute for instruction from a certified FertilityCare Practitioner. To find an instructor in your area, visit FertilityCare.org.
Local charting is free forever. Recording observations, full local history, chart and calendar views, insights, JSON/CSV export, and account deletion do not require payment. The app has no ads.
Optional Chart35 Sync (encrypted cloud backup and cross-device sync) is a paid subscription after a free trial:
Billing is processed by Stripe. Full terms are on the Terms of Use page.
Cancel or update payment details online: open Chart35, go to Settings → Chart35 Sync → Manage billing. That opens the Stripe Customer Portal, where you can cancel (takes effect at period end), update the payment method, or view invoices when available.
Billing help and refunds: email jacob@stephens.page from the email address on your Chart35 account. Include the account email, approximate charge date, and what you need (cancel help, refund, invoice copy, or a charge you do not recognize). Statutory refund rights, if any, are not limited by this page.
Commercial terms, trial language, and the cancellation path are also in the Terms of Use.
If you see a Chart35 Sync charge you did not authorize, or you need to dispute a Sync payment:
Self-serve cancellation remains available anytime under Settings → Chart35 Sync → Manage billing for subscriptions you control. This page is the public contact surface for unauthorized-transaction and dispute help related to Chart35 Sync billing outside Google Play Billing.
Easiest: Settings → Send Feedback in the app — that opens a pre-filled email with your device's user-agent string included for context.
Otherwise: email jacob@stephens.page or open an issue on GitHub.
The app is open source. Browse the code, check release notes, or follow development at github.com/JacobStephens2/Chart35Client.