Good Thoughts privacy policy

Last updated: 7 November 2026

Who we are

Good Thoughts, shown as “thoughts” on your iPhone, is operated by Ivan Brnjakovic, trading as IVB Media. In this policy, “we” means that operator, who is the controller for the processing described here.

Postal address: Von-Hazzi-Straße 30, 93326 Abensberg, Germany.

Privacy contact: ivan@ivbmedia.de.

Website: ivbmedia.de.

The short version

Good Thoughts works without an app account. Optional Sign in with Apple adds an account that saves and syncs personal app data through Supabase. Without signing in, personal saved content remains on the device. Separate optional usage statistics can be enabled as explained below. The app also downloads published affirmation content without requiring an account. We do not sell personal information, show advertising or use advertising trackers.

Some optional features involve services outside the app. Apple processes purchases and may process speech recognition. You can also choose to share a card with another app. These are explained below.

Information used on your device

The app uses the information you provide and your activity to make the experience personal:

InformationWhy the app uses it
Your chosen nameTo personalize affirmations and your profile
Onboarding choices and the topic preferences derived from themTo suggest relevant affirmations
Goal answers, weekly check-ins and journey historyTo build and adjust your goal journey
Favorites, collections and affirmations you writeTo keep your saved content available
Claims, activity dates, streaks, topic engagement and recently viewed affirmationsTo show progress, apply daily free limits and arrange the For you feed
Reminder times, onboarding sound, widget browsing position and appearance preferencesTo schedule reminders and remember your settings
Premium access statusTo enable the features you have purchased

Onboarding selections are used to derive topic preferences; the app does not keep a complete saved transcript of every onboarding answer. Goal journey answers and check-ins are saved locally and are included in the cloud copy after optional account sign-in. Some choices or text you enter may reveal personal wellbeing information. With an account, this information is processed through our Supabase project.

The app shares the information needed for its widgets with the Good Thoughts widget extension on the same device. A widget or notification may display affirmation text, your name or progress where someone looking at your screen could see it. You control widget placement and notification previews in iOS.

Optional accounts and cloud content

Sign in with Apple supplies a provider identifier and an email address, which may be an Apple private relay address. The app does not receive the Apple Account password. Supabase Auth maintains the account and authentication session. The native SDK manages session credentials on the device.

After sign-in, the app uploads the chosen name and saved preferences, including chosen themes and the appearance saved with affirmations, topic choices, favorites, own affirmations, collections, claim timestamps, streak days/activity, current goal and completed-goal history. This allows backup and use on another signed-in device. Notification permission/reminder settings, local feed-engagement scores and recently viewed affirmations, purchase verification and beta Premium overrides are not included in this cloud snapshot. Audio and speech transcripts are not uploaded to Supabase.

Supabase is our account, database and content-delivery provider. This project's primary database region is Ireland (eu-west-1). Region selection does not mean all service processing occurs exclusively in Ireland; provider operations and subprocessors may involve other countries. See Supabase's privacy information, data-processing terms and data residency information.

Cloud requests also involve connection and authentication information, such as IP address, request details and security logs. These support delivery, login and service protection. To deter automated abuse, the app database keeps request counters tied to an account or a salted network identifier rather than a raw IP address. Expired counters are cleaned up during later activity; account-linked counters are removed when the account is deleted. Service-provider operational logs are handled separately. Retention depends on the configured services and provider terms. We do not use advertising trackers. If you agree to the updated statistics disclosure described below, aggregate reports may be queried through PostHog.

Other app users cannot read an account's saved cloud state. Project administrators have operational access. Global affirmation edits use the project management tools; the app cannot publish global library content. The app checks for published library updates and keeps a validated local copy for offline use. This does not require account sign-in.

Optional usage statistics

Usage statistics are off by default. During setup, or later in Profile, adults can choose “Help improve Good Thoughts” after a separate disclosure and confirming consent. Declining or skipping leaves it off. The app works the same with this off. This feature is not offered to under-18 users while our age and consent arrangements are under review. Your choice can be withdrawn in Profile at any time.

If enabled, we process card views, positive likes and claims, feature use, widget-link openings, paywall interactions and eligible purchase starts through our existing Supabase project. Events include random identifiers, app version, activity time, local hour/day and time zone with the offset at that time. Public affirmation IDs and topics are included; topic activity may reveal wellbeing interests. Personal affirmation text and IDs, goal answers, names, Apple emails, audio and speech transcripts are not included in analytics. A signed-in account is counted across its consenting devices; guests are counted by installation. This is not an exact count of people. We do not collect passive widget impressions or reconstruct earlier scrolling.

When a consenting person starts a purchase, a random opt-in identifier is supplied to Apple and an Apple-signed transaction is sent to our verification function to check whether it follows an eligible paywall. That signed transaction is used transiently on the server and can remain in the phone's bounded retry queue while offline. The database keeps the product, purchase time, environment, paywall link and a salted transaction fingerprint. Beta/sandbox activity is separate from production; test unlocks and Premium overrides do not count. Only server-verified eligible transactions count in purchase statistics. We do not receive payment-card details.

With the updated consent, PostHog processes aggregate statistics for the owners' restricted dashboard. When few people participate, a statistic may reflect one person's activity. Earlier Supabase-only consent is not included in PostHog reports. The app owners see aggregate reports through restricted access; project administrators retain operational access. Raw analytics and purchase links expire after 35 days, with daily cleanup. Limited first-activity date/time-zone and return-day flags expire after 90 days of inactivity. Turning sharing off stops collection immediately, clears queued activity and requests removal of linked analytics for the signed-in account across devices, or that guest installation, when connected. Signing in/out or switching accounts requires a fresh opt-in. Account deletion also removes linked analytics. An unlinked salted transaction fingerprint can remain for up to 35 days after withdrawal/deletion to prevent counting the same purchase again. It carries no account, installation or paywall link. Earlier backups and provider operational logs are separate.

We rely on optional consent for these usage statistics and, where applicable, explicit consent for wellbeing interests revealed by topic activity. Withdrawing has no effect on app access or the lawfulness of earlier processing.

Microphone and speech recognition

Microphone access is optional and has two uses:

Reading an affirmation aloud. With microphone and speech-recognition permission, the app compares recognized words with the affirmation so it can follow your reading. It tries on-device recognition where available. If that is unavailable or fails, recognition may use Apple’s servers. Audio and contextual text supplied to help recognition, including the affirmation being read, may therefore be sent to Apple. A personalized affirmation may include the name you entered.

We do not save audio recordings or recognized transcripts as part of your app history. The app saves which affirmation you claimed and when. Apple’s processing is governed by its own privacy information, including its speech-recognition notice.

Blowing the dandelion. The app measures microphone sound level on your device to animate the seeds. This feature does not send audio to a speech service or keep a sound recording.

You can refuse or revoke microphone and speech-recognition permissions in iOS Settings. Read-along claiming and the dandelion’s swipe option remain available. Revoking permission does not erase earlier app progress or information already processed by Apple.

Reminders, Photos and sharing

Reminders are scheduled locally on your device after you allow notifications. We do not send them from a push-notification server. You can change reminders in Profile and control notification permission in iOS Settings.

If you save a card to Photos, the app requests permission to add that image. It does not request access to browse your photo library.

When you copy text or use the iOS share sheet, the text, image or video you select is given to the clipboard or destination you choose. Shared content can contain your chosen name or personal text. The receiving service handles it under its own policy. The app's share buttons can open apps such as Instagram, Facebook, TikTok, WhatsApp and Messages; to show only those you have, the app asks iOS whether they are installed, and does not receive or store a list of your apps. Copies saved to Photos, Files or another service are separate from the app’s saved data. Video export also creates a temporary file on your device, which may remain until replaced or cleared by iOS.

Purchases

Apple processes Premium purchases, renewals and refunds through the App Store. The app receives product and transaction information needed to check and restore Premium access. We do not receive your payment-card details through the app.

Resetting the app does not cancel a subscription or erase Apple’s purchase records. Manage subscriptions through your Apple Account. See Apple’s privacy policy for its handling of App Store information.

Beta testing through TestFlight

Beta builds are distributed through Apple's TestFlight. Apple tells us the email or Apple Account name you used to join, your install and session information and any feedback or crash reports you choose to send, under Apple's own terms. Beta builds include testing controls that can switch Premium on or off without a purchase; these are not present in the App Store release, and they are not counted in usage statistics. Your beta feedback is used only to improve the app.

Backups and retention

Your saved app information stays on the device until you change or remove it, reset the app or delete the app’s data. Depending on your device settings, app data may be included in an iCloud or computer backup and restored to another iPhone. With an optional account, a separate copy is retained in Supabase until changed or deleted. Signing out removes account data from the active view but keeps an account-specific copy on this device for the next sign-in. Restoring a different copy can also retain a local recovery copy.

In Profile → Reset everything, you can clear your name, saved affirmations, collections, goals and progress. Premium access and the system/light/dark appearance preference are retained. A signed-in app attempts to sync the cleared personal state; a failed or conflicting sync can leave the older cloud copy until resolved. Reset also turns off optional analytics and requests removal when connected. Reset does not delete the account. Profile → Signed in with Apple → Delete account deletes the signed-in Supabase account, its active server sessions and its saved server state, and removes its account/recovery copies from the current device. Offline devices, old device backups, exported copies and provider operational records may remain. Apple subscriptions and Apple records are managed separately. Deletion requires a new Apple confirmation tied to that attempt. The server checks the Apple proof, exchanges a one-use authorization code and asks Apple to revoke the connection before deleting the Supabase account. These Apple tokens are used transiently for deletion and are not saved in the app database. If confirmation or revocation fails, the account is retained for a later retry.

If you contact us, we receive your email address and the information you send. Our email is provided through Google Workspace, supplied in Europe by Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Ireland. Google processes message content and associated delivery information to provide this service. We use correspondence to answer and follow up on your request, and retain it only as long as needed for those purposes or applicable legal obligations. You do not need to send private affirmations or recordings to request help.

Why we process personal information

For processing subject to the GDPR, we distinguish the purpose of each activity:

Where a separate optional activity requires consent, Article 6(1)(a) applies only after valid consent has been obtained, and that consent can be withdrawn. Permission to use an iOS feature is a device control; this policy does not turn that permission into consent to every form of processing. The app does not use your information to make decisions with legal or similarly significant effects.

Younger users

Good Thoughts is intended to be usable by people under 18 as well as adults. You can use a nickname instead of your real name and use the read-along or swipe alternatives without enabling the microphone. If you are a younger user, ask a parent or guardian for help before buying Premium or sharing personal text or audio.

Where parental authorization is legally required for consent-based processing, it must be obtained before that processing takes place. In Germany, the relevant age under Article 8 GDPR is 16 for online services relying on that consent; other countries may have different thresholds. This is not a blanket ban on using the app below 16. Parents or guardians can contact ivan@ivbmedia.de about privacy concerns.

The policy webpage and service providers

This policy is published at https://good-thoughts-app.pages.dev/privacy. Visiting that webpage is separate from using the app.

Our website is hosted through Cloudflare Pages. Cloudflare, Inc., 101 Townsend St, San Francisco, CA 94107, USA, processes connection information such as IP address, request time, requested page, browser information and referrer for delivery and security. The existing website notice describes this processing and its retention criteria. See the IVB Media website privacy notice for website-specific details.

Google Workspace support email and Cloudflare hosting may involve processing outside the European Economic Area, including the United States. The providers' applicable data-processing terms describe safeguards such as European Commission standard contractual clauses and, where applicable, the EU–US Data Privacy Framework. You can contact us for information about the safeguards relevant to our use of those services. See Google's data-processing terms and Cloudflare's privacy policy.

Apple's handling of App Store and speech-service information is explained in the Apple notices linked above. Sending a support email or opening the website does not upload your saved app history to us.

Your choices and rights

You can edit supported information in the app, reset saved content and change permissions through iOS. Without an account, we cannot retrieve or remotely erase local app history. For signed-in cloud data, use the account controls or contact us. Deleting cloud data does not remotely erase independent copies on offline devices, exported files or old backups.

Where applicable law gives you rights, you may request access, correction, deletion, restriction or portability of personal information we hold, object to relevant processing, or withdraw consent without affecting earlier lawful processing. You may also complain to a data-protection authority. Our local authority is the Bayerisches Landesamt für Datenschutzaufsicht (BayLDA), Promenade 18, 91522 Ansbach, Germany. Its complaint page explains how to make a complaint. Contact us at the address above for help. For records held by Apple or another service, use that provider’s privacy controls.

Changes to this policy

We will update this policy when the app’s data practices change and revise the date above. Material changes will be explained in the app or release information as appropriate. Any new permission or consent required for a feature will be requested before that feature uses the relevant information.