WooMoon Privacy Policy

Privacy Policy

Last updated: 2026-09-03  ·  Русская версия

This page explains what happens to your data in WooMoon — the iPhone app, the web app, and the Telegram bot. We tried to write it so it can be read once and understood. Every statement about what we do describes what the code actually does, not what we intend.

The short version

1. Who processes your data

Contact us: @lunnaya_care on Telegram.

2. What we collect and where it lives

There are three different answers to "where is my data", and the difference matters.

WhatWhere it livesHow long
Name, date of birth, city, timezone, language, notification settingsOur serverUntil you delete your account
Birth details for the natal chart: time, place, coordinatesOur serverUntil you delete your account
Natal chart computed from those details (planetary positions, houses, periods)Our serverUntil you delete your account
Cycle data: start date, cycle length, menstruation duration, cycle markers and events, cycle history, tracker pause — when it was set and whether you set it yourself from the delay check-in (section 3)Our serverUntil you delete your account
Intimacy markers you tap in the calendarOur serverUntil you delete your account
Apple Health measurements (iPhone only)Computed on the phone, sent inside a single Oracle request, and living only inside that request. We neither write them nor read them; a historical table from the earlier design still exists on the server and is to be droppedNot stored
Oracle conversations and their short memory digestYour device only (app storage on iPhone, browser storage in the web app)Until you erase them; a browser may clear its storage on its own
Email address, Telegram id, push notification tokensOur serverUntil account deletion; email — see section 12
Subscription and payments: plan, dates, status, transaction identifiers; if you answered the question after cancelling — which of the five options you chose (section 2.2)Our serverPart of it is retained after deletion as a financial record; the cancellation answer is erased outright
Messages we have sent you (in-app inbox)Our serverUntil account deletion — there is no age-based clean-up
"Writing less often" marker — the moment from which we lowered the frequency of our own messages to you (section 2.1)Our serverUntil your first action, which clears it; never longer than the account
Technical logs and product analytics (which screens opened, which events happened; for the Oracle — that a message was sent, when, and from which surface, never its text)Our serverFile logs — 10 days; on account deletion some analytics records are erased outright and some are kept unlinked — see section 12
IP address — on sign-in code verification, in the product-analytics event log, in payment webhook logs, and in the consent logOur serverUntil account deletion; on deletion the IP is scrubbed from the rows that are retained (section 12). At third-party recipients — see section 6

We never see or store card numbers: payment happens on the payment provider's or the app store's side.

2.1. When we start writing to you less often

If over 90 days we have sent you five or more messages — in the bot, by push or by email — and in all that time there has been no action from you, we record the moment from which we lower the frequency of our own messages. This is not an unsubscribe and not a block: from that moment you receive at most one message a month, and only from a short list — a rare personal cycle event, the metaphoric card, your birthday, an invitation to come back. About money and access we never go quiet: payment confirmation, a card problem, the heads-up before a renewal charge, auto-renewal switched off, an unfinished checkout, the notice that your accounts were merged, and anything the founder writes to you personally arrive as they always did. Paid content is not touched either: while a subscription or trial is active, the morning recommendation and the other paid messages keep coming. Notices about the tracker itself are not quieted either — for instance that it was paused after 180 days without a mark: that is not a mailing but a change in what we hold about you, and we do not keep quiet about it.

What counts as an action: a click on a link in an email, anything you do in the bot, the app or the web version, and a payment. Opening an email does not count. Mail clients open emails on their own, without you, and for someone who reads with images switched off an "open" never happens at all — so opens play no part in this calculation, although our email service does report them to us alongside clicks.

This marker collects nothing new about you: it is derived from our own delivery logs — what we sent and when — and from the absence of a reply. It is cleared by your very first action, at the next check, and from then on we write as before. If we cannot be sure that email clicks reach us at all (for instance, their intake is broken), the quieting is applied to no one: we would rather err on the side of one message too many than of silence. The legal basis is our legitimate interest (GDPR Art. 6(1)(f)) in not writing into silence to someone who does not respond; it does not override your rights — one action restores the previous frequency, and your notification settings and email unsubscribe work as they did.

2.2. One question after you cancel a subscription

When you switch auto-renewal off, we ask — after the cancellation has already gone through — one question: what led to it. The answer is one tap on one of five options: "not tracking my cycle right now", "too expensive", "not much use for me", "something didn't work", "other". The "Skip" button is an equal choice: a skip is not recorded at all, and the cancellation has already happened and does not depend on your answer. The question is asked both in the Telegram bot and in the web app — the same one, with the same five options and the same skip button.

If you answered, we store: which option, which payment method the subscription ran on, where you answered and when. There is no free text in the question, so there is none to store. None of the options asks about your body: "not tracking my cycle right now" is about how you use the app, not about what is happening to you, and why the cycle is not being tracked is something we do not ask. One answer per cancellation: if you answer differently within two days, the new answer replaces the old one.

Why we ask: to see why people leave, and not to say too much on the way out — to someone not tracking her cycle right now we do not write "your daily tips will fall silent" or "the tips will keep coming". The legal basis is our legitimate interest (GDPR Art. 6(1)(f)); it does not override your rights: the question can be skipped, and the answer is erased outright together with the account (section 12). The answer does not go to advertising or analytics services.

3. Health and intimate life

Cycle data, symptoms and Apple Health measurements are health data. Intimacy markers are data about your sex life. Both are special categories under Russian law (Art. 10 of Federal Law 152-FZ), which permits processing them only with your consent.

If you are reading this in the EU or the UK, the law that governs your data is not that one. Both categories are special categories under the GDPR as well, and the requirements it places on consent to them are its own. We name the Russian statute here because it is the one whose text we have verified word for word; the GDPR text could not be retrieved while this revision was written, so nothing in this document should be read as a statement of what the GDPR requires.

We say this plainly instead of hiding intimacy markers inside "cycle data": they are separate, they are special-category, and they do reach the Lunar Oracle's context — as "intimacy — today / yesterday", for the last two days only. If you would rather they did not, do not place the marker.

The tracker pause — what we keep about it, and what we do not ask. When the tracker is paused, we record the moment of the pause and, if you paused it yourself from the delay check-in (the message about a delay that carries a "pause the tracker" button), that fact too: your choice must not be confused with the automation, which pauses the tracker on its own when no menstruation has been marked for 180 days. Why there is no cycle we neither ask nor store — not pregnancy, not menopause, not treatment, nothing: no screen and no message in the app needs it. The origin of the pause is part of your cycle data, derived from the delay you had already marked, and is covered by the same consent to processing of health data (section 1). It lives exactly as long as that pause: the moment you mark your cycle again the note is erased, and a pause set by the automation does not inherit it — otherwise six months later our own record would be saying something untrue about you.

How that consent is taken — door by door, with no generalising.

Withdrawal works differently, and this matters: it is server-side. Withdraw in the web app and the Oracle closes everywhere, including on the iPhone where the consent screen does not exist yet. A button that does not reach the next door is not a withdrawal; it is the appearance of one.

4. Apple Health — exactly what we read

Today, if you use an iPhone and connect Apple Health, the app asks for access to one data type — menstrual flow. Nothing else.

Once the next iPhone build ships, the list becomes this, and only this:

When that build ships, this six-type list will be identical in three places: the system permission prompt, our App Review notes, and here. It is the list of what the app reads from Apple Health.

On the consent screen before the Oracle the list is a different one, shorter by a single item. That is not an oversight — they are two different things. The "body signals" checkbox in that screen covers five signals: sleep, heart rate variability, resting heart rate, wrist temperature during sleep, and cycle symptoms. Menstrual flow is not among them.

Because the checkbox answers exactly one question: does this signal travel with my message to the Oracle. Those five are computed on the phone itself and travel with one specific question; we do not store them, and with the checkbox off nothing travels at all. Menstrual flow takes a different route: it syncs with the calendar and is stored on our server as a cycle event (retention is in section 8), because the tracker itself is built from it. Putting it inside that checkbox would promise control the checkbox does not have there: switching it off would not remove the flow from the server.

So it is governed by other levers, and they are real ones: read access — by the iPhone's own settings (Settings → Privacy & Security → Health → WooMoon), and cycle events already stored — by deleting your data (section 11 "Your rights" and section 12).

How it works

What we never do with this data

We do not use it for advertising or marketing. We do not build ad-targeting profiles from it. We do not sell it and do not pass it to anyone for their own purposes. It never goes to web analytics or ad measurement. The only purpose is to help you understand your own state better.

You can revoke access at any time in iOS: Settings → Privacy & Security → Health → WooMoon. The app keeps working, just without that part.

5. What is sent to Google (Gemini)

The texts the app writes for you are generated by a Google language model — Gemini. It is an external processor, and here is exactly what it receives.

5.1. The daily recommendation and other generated texts

This covers the daily recommendation, lunar-day hints and calendar day descriptions. What is sent:

No name, no city, no date of birth, no email. No body signals either: since 25 August 2026 Apple Health data is available to the Lunar Oracle only and does not reach the morning recommendation.

5.2. The Lunar Oracle

A conversation works differently: the Oracle has to know who it is speaking with. With every message you send, the model receives:

One question of yours may cost two calls to the model: one for the reply, one to rebuild that memory digest.

What of this you can switch off, and what you cannot. Nothing separately: the consent is indivisible. Everything on the list above travels every time you use the Oracle — cycle data, Apple Health signals and intimacy markers included, and so are your name, city, age in years and the derived natal-chart values. There is no separate "do not send my name" toggle, and we will not pretend there is.

There are no per-part switches, and that is a decision rather than an omission. Either you agree and use the Oracle, or the Oracle is not available to you; the whole consent is withdrawn by one button, and withdrawing it closes the Oracle. The natal chart is the thing a woman comes to a Lunar Oracle for — switching it off would switch off the product — and a partial consent would mean answering with a context you were told we would not read. We do not hide any of this behind a checkbox that could never be unticked: we name what is sent here, and in the shield you see before your first conversation.

5.2.1. Chart calculations when you ask for them

If you ask the Oracle to look at your chart, the model can request a calculation from us and receive your full natal chart and dasha periods — that is, more than the derived values listed above — as well as current transits, or a reading cast for the moment you asked the question. Your birth details do not leave our server for this: the calculation runs on our own service on the same host, and only its short result reaches the model.

As this revision is published, the mechanism is off and runs in no environment. We describe it here ahead of time because the code ships in this same release, while switching it on is a separate decision: we do not want a new data flow to start working one day under an old text. When we do switch it on, this paragraph will say "on" and give the date.

What is never sent to the model: email address, phone number, Telegram id, payment data and subscription status, exact date and time of birth, birth coordinates, login codes.

5.3. What Google does with it

We have to be precise here, because "Google does not store it" would be untrue. Under the Gemini API terms (section "Paid Services → How Google Uses Your Data"):

Verbatim (the bracketed ellipses are our omissions; everything else is Google's text unchanged):

When you use Paid Services […] Google doesn't use your prompts (including associated system instructions, cached content, and files […]) or responses to improve our products, and will process your prompts and responses in accordance with the Data Processing Addendum for Products Where Google is a Data Processor. For Paid Services, Google logs prompts and responses for a limited period of time, solely for detecting and preventing violations of the Prohibited Use Policy […] and any required legal or regulatory disclosures. This data may be stored transiently or cached in any country in which Google or its agents maintain facilities.

Current terms: ai.google.dev/gemini-api/terms.

5.4. Why we do not say "we anonymise it"

Because that claim proves nothing: it cannot be checked from outside, which makes it indistinguishable from a promise. Instead we list what is actually sent, above, and work to keep that list accurate.

6. Who else receives data

We do not sell personal data.

7. Transfers outside your country

Sending a message to Google (Gemini) is a cross-border transfer. The list of countries is not fixed in advance: under Google's terms data may be cached in any country where it has facilities. Email (Brevo), push delivery (Apple) and ad measurement also route through foreign services.

8. How long we keep things

9. If a message looks like a crisis

If a message to the Oracle is recognised as being about self-harm, it is handled separately: you receive a pre-written reply with helpline contacts, without any call to the language model. Such a message does not consume your daily allowance and is never blocked by limits.

We count how many such messages arrive, so that an abnormal volume (for example an automated attack) can be noticed. The counter counts occurrences, not content. We are not doctors and not a crisis service, and the Oracle does not diagnose.

10. Analytics

We keep our own log of interface events to understand where the app is awkward. It has a filter that forbids storing anything about cycle, symptoms, pregnancy, fertility, ovulation, mood, diary entries, sex, date of birth, email or phone — by field name, enforced in code. The "period marked" event is recorded with no properties at all.

From our server, external web analytics (Google Analytics) receives even less: funnel steps and purchases only, against a strict allowlist in the code. Events about the cycle, recommendations, meditations and the Oracle are not forwarded there — an event that is not on the list never leaves at all.

But that is not the whole story, and it is fairer to say so. Alongside the server-side forwarding, the web app runs Google's counter directly in your browser. It loads as soon as the page opens and sends Google a page view together with the page's full address. Navigating inside the web app changes that address — ?page=oracle, ?page=archetype, ?page=subscription — so the addresses reveal which screens you opened, the Oracle screen included. And, as with any website, Google sees your IP address in the process. None of this contains conversation content, cycle data or body data — but it does contain the name of the screen you opened.

The advertising half of that counter is switched off in the code: ad storage, ad identifiers and ad personalisation are denied and Google Signals is off. The analytics half is on — for the cookie it sets, see section 14.

11. Your rights

12. What account deletion does, and what it does not

Deleted: cycle data and cycle events, intimacy markers, cycle history, natal chart and birth details, inbox messages, notification tokens, registration state, texts generated for you, and your answers to the question after cancelling a subscription. Profile fields are cleared — the "writing less often" marker and the tracker-pause marks with them.

Retained but unlinked from you: here the row is not deleted — the account number in it is replaced with nothing and the direct identifiers are scrubbed out. That is what happens to subscription and payment records, to payment and webhook logs (email, phone and IP address scrubbed), to the record that consent was given — and to part of the analytics records: the row saying "on this day this event happened" stays, its IP address and session id are scrubbed, and the link to you is gone. Separately, the irreversible deleted-account hash is kept.

But not to all of the analytics, and the difference is in your favour. We keep two counters, and the second, more detailed one is erased outright on account deletion rather than unlinked. That is where everything about the Lunar Oracle lives: that a message was sent, whether it carried the "astrological question" mark, that you were shown the consent screen. A previous edition of this paragraph described analytics with the single word "unlinked" — that was exactly half right.

What deletion does not do today, stated plainly:

13. Age

There is no single threshold right now: it differs by the door you came through. Stated as it is:

14. Cookies and on-device storage

The web app sets two kinds of cookie, and the previous edition of this section named only the first.

But the marketing landing page, where most people first meet us, is a different story, and we will not pass over it. That page — on the same domain — runs Google Tag Manager, Google Analytics and the Meta pixel, which brings the _fbp advertising cookie with it (lifetime up to 90 days, domain .woomoon.app). On the Russian-language version of that page all of it is enabled by default, with no banner and no question asked — analytics and advertising alike. On the English version everything is denied by default and turns on only after explicit consent. So the strict variant exists and works in our code; it is simply not applied to the Russian audience.

Why the two behave differently. Russian data-protection law does not require a cookie consent banner; the duty to ask before the counters load comes from the European rules, and those are the rules that apply to you if you are reading this version. So the strict regime stays on the English version, and the Russian one runs without a banner. The difference is a deliberate match to which law governs which audience, not an unfinished piece of work.

Oracle conversations in the web app live in browser storage. That has a downside we would rather say up front: Safari clears site storage after roughly a week without visits, "clear site data" erases the conversation irreversibly, and a private window keeps nothing. We hold no copy, so there is nowhere to restore it from.

15. The mobile app — what it adds

We do not collect: background precise location, camera, microphone, contacts or photos. And we do not collect crash reports: a previous edition of this document mentioned Sentry — the app does not include it.

16. Security

Connections are encrypted (HTTPS). Server access is restricted. Logs mask name, city, coordinates and timezone, and are kept for 10 days. We do not treat logs as anonymised and do not rely on them being so.

No method of transmission or storage is 100% secure.

17. Government and law enforcement requests

For a cycle tracker this is not an idle question, so we answer it directly rather than by silence.

What we can say about today: there is no special procedure, no automated interface and no standing access for authorities — neither in the code nor in anyone's credentials. No mechanism for handing over data exists beyond our own administrators' ordinary access to the database.

What matters about the scope: we do not have your Oracle conversations — they cannot be handed over in response to a request, because they are physically not in the database or in the backups. But cycle data, intimacy markers, your profile, your email, payment history and the records of when you used the Oracle we do have. We will not promise that we will "never give anything to anyone": a controller cannot ignore a lawful demand from a competent authority, and promising otherwise would be empty. On exactly what grounds and by what procedure that could happen is a question we have not worked out yet — and we say so plainly rather than filling the gap with a pleasant sentence.

18. If data is breached

No method of protection is 100% secure — that is in section 16, and it is not a figure of speech. A breach of cycle and intimate-life data is exactly the case where silence is worse than the breach.

Honestly, about today: the procedure for a breach — whom we notify and within what deadline, how we determine which data was affected, who decides — is not written down. We will not print a deadline in hours that does not exist in any internal rule of ours, nor make a promise with no one assigned to keep it.

19. Changes

We update this document when what it describes changes; the date at the top changes with it. If a new kind of data appears, we will ask for consent again rather than silently widening the old one.

Contact and other documents

Support: @lunnaya_care

Health Data Consent  ·  Terms of Service  ·  Русская версия