CrustLab Privacy Policy
Last updated: October 16, 2026
CrustLab is a pizza dough calculator and community app. This policy explains what data the app collects, how it is used, and how users can control or delete their account and associated data.
Data we collect
- Account data: email address, username, password hash, Google sign-in identifier if used, language and unit preferences.
- Profile data: avatar, bio, favorite pizza style and oven type if you add them.
- Recipe and calculator data: dough formulas, ingredient amounts, fermentation settings, baking schedules, saved recipes and copied recipes.
- Community content: posts, photos, recipes attached to posts, comments, ratings, likes, saves, follows, reports and blocks.
- Device data for notifications: Android Firebase Cloud Messaging token and notification preferences.
- Operational data: successful login time and method, coarse authenticated foreground-presence timestamps, and security, upload, moderation, translation and error logs needed to keep the service safe and reliable.
- App section usage: which parts of the app you open (for example the feed, calculator, recipes or bake journal), how many times, and how long they stay on screen, per day. When you are signed in this is linked to your account; when signed out it is only added to anonymous totals.
- Advertising data: if you consent to ads, Google may process device, advertising, consent and ad interaction data according to your choices.
- Install measurement (only with consent): if you allow Usage analytics, the Meta (Facebook) SDK sends Meta app install and app launch events with device and app information such as device model, operating system and app version and IP address. The advertising identifier (IDFA on iPhone, advertising ID on Android) is not sent.
How we use data
- To provide login, profiles, recipes, posts, comments, saved items and follows.
- To calculate dough formulas, store recipe preferences and keep baking schedules available in the app.
- To process uploaded images, including virus scanning, image resizing and metadata stripping.
- To send in-app and optional Android push notifications.
- To translate posts, comments and recipes through the server-side translation endpoint and cache translations.
- To prevent abuse, investigate reports and moderate content.
- To debug errors, prevent fraud and maintain service reliability.
- To understand which parts of the app are used most, so we can decide what to improve.
- To measure which of our Facebook and Instagram ads bring new installs (only with your consent).
Data sharing and processors
CrustLab does not sell personal data. The app uses service providers for hosting and network delivery through Cloudflare, email delivery, Google sign-in, Firebase Cloud Messaging, Firebase Analytics, Google Mobile Ads, Meta (Facebook SDK, with consent), image processing, virus scanning and server-side translation. These providers process data only as needed to provide the app.
Account and guest activity
While the app is in the foreground, CrustLab sends a coarse heartbeat no more than once every three minutes. Restricted administrators can see separate signed-in account and signed-out guest counts for the last five minutes and per UTC day, plus successful account login times and methods. For a signed-out visitor, the app creates a cryptographically random token that is replaced each UTC day. It is not derived from hardware, an advertising ID, an account or another device signal. The server stores only its keyed HMAC pseudonym for the current and previous UTC date; only aggregate guest totals remain for up to 400 days. Cloudflare derives an approximate two-character country code from the connection IP. CrustLab stores only that country code with daily activity aggregates for up to 400 days; the activity database does not store the request IP address, city, coordinates, internet provider or user-agent string. Country may be inaccurate when using VPN, Tor, mobile or corporate networks. A guest who later signs in may appear in both separate counts because CrustLab does not link the guest pseudonym to the account. Successful login events are retained for up to 180 days and authenticated daily activity for up to 400 days. Deleting an account removes its linked account activity earlier.
App section usage
To learn which parts of CrustLab are used most, the app counts, per UTC day, how many times each app section is opened and how many seconds it is on screen while the app is in the foreground. Sections come from a fixed list (for example feed, calculator, calculator guide, recipes, posts, bake journal, search, profile, notifications and settings). CrustLab does not record which posts, recipes or profiles you view, what you type or search for, your taps, your location or any device identifier for this purpose. The counts are sent together with the activity heartbeat described above.
When you are signed in, the counts are stored with your account and restricted administrators can see them per account and in totals. When you are signed out, they are only added to daily per-section totals with no token, pseudonym or country; the app keeps a note on your device of which sections it already reported that day, so a guest is counted once per section per day. This is CrustLab's own first-party statistic: it is not shared with third parties, not used for advertising, and works separately from the optional "Usage analytics" setting, which controls Firebase Analytics and Meta install measurement. We rely on our legitimate interest in improving the app. Usage counts are kept for up to 400 days, and deleting your account removes the counts linked to it. You can object or ask for a copy at [email protected].
Advertising and analytics
Firebase Analytics is disabled until the user explicitly allows it in the first-launch consent prompt. Users can later enable or disable optional usage analytics from the app's Settings screen. When enabled, Firebase Analytics processes app interaction and device/app information to measure usage and improve CrustLab. CrustLab does not send account IDs or email addresses to Analytics, and Analytics advertising-ID collection and advertising consent remain disabled. Turning analytics off stops future collection and resets local Analytics data. Google Mobile Ads is initialized separately, only after the advertising consent flow confirms that ads may be requested.
Allowing usage analytics also lets the Meta (Facebook) SDK report app installs and app launches to Meta Platforms Ireland Limited, so we can see which of our Facebook and Instagram ads bring new users. Meta receives these events with device and app information but without the advertising identifier (IDFA on iPhone, advertising ID on Android), and processes them under its own privacy policy. The legal basis is your consent. No events are sent before you allow usage analytics or after you turn it off, although the SDK may still fetch its own settings from Meta when the app opens, which, like any network request, shows Meta your IP address.
Public content
Public posts, public recipes, comments, profile username and avatar can be visible to other CrustLab users. Private recipes are available only to the account owner unless linked to a public post.
Reports are visible only to moderation tools and are used to review abuse, spam or safety issues. Blocking another user may affect what content is shown to you and how other users can interact with you.
Uploads and media safety
Uploaded photos may be checked for malware, decoded, resized, stripped of metadata and stored in a safer serving format. Post uploads are limited to keep the service stable, and comment uploads are limited separately.
Translation
When translation is used, text is sent to the CrustLab backend translation endpoint. The backend may use a configured translation provider and cache translated text to reduce repeated processing.
Security
Passwords are stored as one-way hashes. The mobile app does not store database, Google OAuth, translation provider or Firebase service account secrets. Uploaded images are decoded, resized, stripped of metadata and stored as JPEG files.
Access tokens and refresh sessions are used for login. Refresh sessions can be revoked server-side, including when a password is changed or an account is deleted.
Account deletion
You can delete your account in the app from Settings → Account settings → Account deletion. You can also use the public instructions at /account-deletion.
Account deletion removes the app account, login credentials, sessions, login, activity and app section usage records, notification device tokens, posts, comments, recipes, saved items, follows and associated uploaded media where technically available. Some minimal operational records may be retained for security, fraud prevention, troubleshooting, legal compliance or backups for a limited period.
Contact
Privacy and deletion requests: [email protected]