Rooksbury

Privacy Policy — ExposureCast

Covers: the Android app “ExposureCast”, the legal pages and the contact form on www.rooksbury.com and the product page www.exposurecast.com
Effective: 15 November 2026 · Version: 1.14
Language: This is a translation. The German version (https://www.rooksbury.com/exposurecast/datenschutz) prevails.

This policy explains which personal data arise when you use ExposureCast, visit the legal pages on www.rooksbury.com or the product page www.exposurecast.com, or write to us using the contact form, and which data we process when we send you a press release as a member of an editorial team or a collaboration inquiry as a photographer or platform (section 11a), where they go, and what rights you have (Art. 13 and Art. 14 GDPR).


1. Controller

Michael Schubert, trading as Rooksbury
Rilkestr. 4
86199 Augsburg
Germany
Email: support@rooksbury.com

We have not appointed a data protection officer; as a sole trader we are not required to under § 38(1) of the German Federal Data Protection Act (BDSG).


2. Summary

Are you required to provide data? No; neither the law nor a contract requires you to provide any data to us. Without your location or a place, we cannot compute a forecast for it; without the Pro check (section 12), the Pro features stay off. Feedback, the “Rain” and “Clouds” map layers and the contact form are entirely up to you.


3. What stays on your device

The app stores on your device, in the storage of the app interface and mirrored into the app's Android preferences storage:

These data are not sent to us, except as described in sections 5, 8 and 12. They disappear when you clear the app data or uninstall the app. For Android backup see section 10.

Reminders are local notifications. They are scheduled on the device and contain the name of the opportunity, the lead time and the place name. If “Re-check beforehand” is on, the app requests the forecast for the place shortly beforehand (section 5, “Requests while the app is closed”); the place name stays on the device. For these requests the app keeps the tasks (place, time and the ready-made notification texts) in a separate store on the device. It never leaves the device; when you turn the feature off, the app deletes the tasks in it.

Camera: the camera permission is used only as a live background in the AR view. No image leaves the device.

Storing and reading these data on your device, and using location, camera and notifications, is necessary for the app to provide the service you requested (§ 25(2) no. 2 TDDDG). Location, camera and notifications are used only after you grant permission in Android; the camera only locally.


4. Location

When you add “My location” and grant the location permission, the app requests your precise location. After that it refreshes it silently when you open the app and when you return to it; it is stored again and sent to our server again only if you have moved more than 1 km. There is no background location; the app does not even request that permission. The app rounds the location to 4 decimal places (~11 m) when storing it.

If you tap the light-pollution map, the app sends the tapped point to our server unrounded; that is any point on the map, not your location.

The app determines the location through the Google Play services on the device (“Fused Location Provider”). Without Play services, “My location” does not work. Our app itself sends nothing to Google in the process. Whether and which data Play services transmit to Google while locating cannot be determined from our code; it depends on settings of your device for which Google is responsible. Google provides information in its privacy policy (section 15).

Places you search for or pick on the map are also stored with 4 decimal places. Stages in the trip planner are stored as the place search returns them, unrounded; that is the coordinate of a searched place, not your location.


5. Our server api.exposurecast.com

The app fetches forecasts, place search, sky data and map overlays from our own server. The following is sent:

Requests while the app is closed. If you have set a reminder or receive alerts, the app asks our server in the background, up to 2 hours beforehand, for the forecast for that reminder’s place, so the notification is based on up-to-date data (“Re-check beforehand”, can be turned off in Settings under “Notifications”). It sends the same details as when the open app requests the forecast, but without the place name and without the RevenueCat app identifier: the coordinates of the saved place (4 decimal places), your IP address and a marker that this is a background request (it contains no information about you). Instead of the WebView identifier, Android sends its own identifier (device model, Android version). At most 8 such requests per day.

If you turn on “Also in the background” for the aurora alert (off by default; only works with notifications turned on), the app asks our server at night, while it is dark at one of your saved places, at most every 30 minutes and at most 24 times per night, for the most recently measured Kp value — without any location. Our server only sees your IP address, Android’s identifier and the “background request” marker. Only if the value is high enough for one of your saved places and it is dark there does a forecast request for that place follow, as described above; it counts towards the maximum of 8 requests per day.

The app does not determine your location for these requests; it only uses places you have already saved. Whether and when Android allows such requests is up to the system (for example, less often or not at all in battery saver). Our server counts background forecast requests only as a number per day, without IP address and without coordinates. Legal basis as for the other forecast requests (section 13).

Cloudflare. The connection runs through Cloudflare's network (Cloudflare Tunnel). The encrypted connection ends at Cloudflare, so Cloudflare sees every request in full: your IP address, the address including coordinates, place name, search text, the content of feedback and, for Pro users, the RevenueCat app identifier; if you enter an access code, also the code and the access token. Cloudflare passes your IP address on to our server. What Cloudflare logs and for how long is determined by Cloudflare under its own terms (section 15).

Hostinger. The server runs on a rented virtual server at Hostinger. Everything our server stores is kept there.

What the server does with requests:


6. Services our server queries for you

For forecasts and place search our server queries the following services. These providers see the IP address of our server, not yours, but the data we send along.

ProviderPurposeWhat is sent
Open-Meteo (api.open-meteo.com, marine-api.open-meteo.com)weather forecast, rain forecast, tidescoordinates rounded to 0.1° (~11 km); for the rain forecast a grid around a point rounded to 0.5° (~55 km)
MET Norway (api.met.no)fallback, only if Open-Meteo failscoordinates with 4 decimal places (~11 m)
Photon by komoot (photon.komoot.io)place search and place name for coordinatesfor search the search text and the coordinates of your current place as a hint; for place names the coordinates; each rounded to 2 decimal places (~1 km)
Amazon Web Services, “Terrain Tiles” dataset (s3.amazonaws.com)terrain horizon (Pro)tile numbers of a block of tiles around the place rounded to about 110 m; the centre of the block reveals the place to about 6 km.
Deutscher Wetterdienst (maps.dwd.de)“Rain now”: whether it is raining at your location right now, for the rain in the app background. On every forecast request for locations within the radar area (Germany and border regions), regardless of the “Rain” layerCoordinates rounded to 0.05° (~5 km) and the time of the radar image. Users in the same area share one request (cached for 5 minutes)
NOAA Space Weather Prediction Center (services.swpc.noaa.gov)Kp index (aurora)no data about you
GFZ Helmholtz Centre Potsdam (www-app3.gfz-potsdam.de)Kp nowcast (aurora)no data about you

7. Services the app queries directly

The app loads these services itself. The provider therefore sees your IP address, the WebView identifier and the address of the tile. The tile roughly reveals which map area you are looking at.

Rain and Clouds only after you agree. When you first switch on these layers, the app shows a notice and loads nothing before. For “Rain” it names the weather service whose radar covers the map area (see below) as the source of the radar images; for “Clouds” it names NASA GIBS in the USA and that data protection there is not equivalent to EU law. In all cases the app transmits your IP address and the approximate map area. Only when you choose “Load” is a request sent to the provider; with “Cancel” none is. The app remembers your consent per layer on the device, for “Rain” per weather service: consent to Deutscher Wetterdienst does not cover the others. Rain radar per area: Which weather service supplies the radar images depends on the centre of the map area. It is always exactly one:

A radar forecast for the next two hours is available for Germany only; in the other areas the app shows the measurements up to the latest one. If the centre of the map lies outside these areas, the layer stays off and the app shows a notice; it then neither asks for consent nor loads anything. Transfers to third countries: For NASA GIBS (USA) and ECCC (Canada) none of the usual safeguards exist (section 15); that is why we ask. The EU adequacy decision for Canada covers businesses only, not public authorities; for ECCC there are no appropriate safeguards either, and Canadian authorities could access the data. The transfer to ECCC is therefore based on your explicit consent (Art. 49(1)(a) GDPR), which the app obtains with this notice before loading anything. Deutscher Wetterdienst, KNMI and the Finnish Meteorological Institute are located in the EU; for them there is no transfer to a third country. Withdrawal: at any time in the settings under “Privacy & legal” → “Reset map consent”. After that the layers load nothing and ask again the next time you switch them on.

ProviderWhenWhat is sent
CARTO (basemaps.cartocdn.com)map under “Extras”; in the detail map of an opportunity when you choose “Map” instead of “Satellite” (dark base map)tile numbers. The detail map opens on the selected place with tiles of about 13 km, “Centre” zooms to about 3 km, manually down to street level.
Esri (ibasemaps-api.arcgis.com, ArcGIS Location Platform)detail map of an opportunity: by default (satellite image); map under “Extras”: only after tapping “Satellite”. If the satellite image fails to load, the detail map shows CARTO's dark base map instead.tile numbers as above, plus an app key in the address that identifies our app to Esri. The key is the same in every installation and says nothing about you. Esri processes these requests under its own terms (section 15).
NASA GIBS (gibs.earthdata.nasa.gov)only with the “Clouds” layer, after your consenttile numbers, at most about 50 km precise
Deutscher Wetterdienst (maps.dwd.de)only with the “Rain” layer, only for places within the radar area (Germany and border areas), after your consentfirst a request without location (which radar times exist), then for each map tile its area and the time of the radar image; the area is at most about 100 km precise. When you play the timeline, the app loads new tiles for each time. The app draws the colour scale itself; no request goes to Deutscher Wetterdienst for it. Separately, our server asks DWD whether it is raining at your location (section 6); DWD sees our server's IP address, not yours.
KNMI (geoservices.knmi.nl)only with the “Rain” layer, only if the centre of the map lies within KNMI's radar area (the Netherlands and surroundings), after your consentas with Deutscher Wetterdienst: first a request without location (which radar times exist), then for each map tile its area and the time of the radar image; the area is at most about 100 km precise. The app draws the colour scale itself; no request goes to KNMI for it.
Finnish Meteorological Institute (openwms.fmi.fi)only with the “Rain” layer, only if the centre of the map lies within the institute's radar area (Finland), after your consentas with KNMI
Environment and Climate Change Canada (geo.weather.gc.ca)only with the “Rain” layer, only if the centre of the map lies within the radar area (Canada and the USA), after your consent with the notice on the transfer to Canadaas with KNMI

8. Feedback (“seen / not seen”)

When you give feedback, for example whether a predicted opportunity happened, the app sends to our server: a random identifier of the report, the type of report, your verdict, the time, the coordinates of the place (4 decimal places; they appear a second time in the field slot), the phenomenon, the displayed probability and whether it was calibrated, the app version, and the day, the distance to the event, the displayed rating and whether it is a retrospective report. No identifier of your device is included. The server adds the time of receipt. It does not store your IP address with it.

Without a network, the app collects feedback on the device and sends it later.

Purpose: we compare forecast and observation to improve the displayed probabilities.

Consent and withdrawal: feedback reaches us only when you tap one of the buttons yourself; that is your consent (section 13). You can withdraw it at any time by email to support@rooksbury.com; we then delete the reports for the place and time you tell us. Reports still waiting on the device disappear with the app data.

Storage: in a file on our server at Hostinger, for 24 months from receipt. After that the server deletes the report automatically. Hostinger backs up the server once a week and keeps the two most recent weekly backups. A deleted report may therefore remain in these backups for about two more weeks until it is overwritten there.

Because reports carry no identifier of your device, we can match them to you only if you tell us the place and approximate time (section 16).


9. Links you open yourself

Some source credits are links (Open-Meteo, Creative Commons, Deutscher Wetterdienst, KNMI, Finnish Meteorological Institute, Environment and Climate Change Canada). They open in the browser only when you tap them. Only if the map cannot be loaded does the app offer an “Open map” link to OpenStreetMap; this link contains the coordinates of the place, so OpenStreetMap learns them when you tap it. The “Manage subscription” link opens Google Play's subscription management; it contains only the names of our app and of the subscription, no data about you.


10. Android platform


11. The legal pages and the contact form on www.rooksbury.com, the product page on www.exposurecast.com

This policy is published on www.rooksbury.com; the ExposureCast product page is on www.exposurecast.com (exposurecast.com redirects there). Both websites are served by our server at Hostinger through Cloudflare's network. When you visit them, Cloudflare and our server see your IP address, the requested address, date and time, and your browser's identifier.

The pages load nothing from other servers: no scripts, fonts, images or stylesheets. They contain no JavaScript, and our server sets no cookies.

No access log: our server does not log visits to these pages. It only records error messages of the web server, for example if a page cannot be read. Such a message may contain the requested address (and, if your browser sends it, the page you came from), but not your IP address: as the sender, our web server only records the connection from the Cloudflare tunnel. These messages are kept in a log store of at most 2 MB. When it is full, the oldest are overwritten; it is deleted when the web server is set up anew. There is no fixed period. The messages may remain in Hostinger's weekly backups (section 8) for up to about two weeks longer.

Cloudflare: when you visit these pages, Cloudflare normally does not set any cookies either. Cloudflare features that would set cookies, insert scripts into the pages or make your browser send reports about failed connections to Cloudflare are switched off for these pages (Bot Fight Mode, email address obfuscation, Network Error Logging). One exception remains: if Cloudflare considers a request suspicious, it may first answer it with its own challenge page and set the technically necessary cookie cf_clearance for it (https://developers.cloudflare.com/fundamentals/reference/policies-compliances/cloudflare-cookies/).

How long Cloudflare stores the access data is determined by Cloudflare; Cloudflare has not published a fixed period. According to its own statement, Cloudflare processes this data only for a limited period of time (https://www.cloudflare.com/trust-hub/gdpr/); details are in Cloudflare's privacy policy (https://www.cloudflare.com/privacypolicy/).

Contact form. You can write to us at https://www.rooksbury.com/contact. The form asks for your email address and your message, and optionally for your name. Without an email address and a message it accepts nothing, because otherwise we could not reply to you.

When you submit it, your browser sends the details to our server api.exposurecast.com, also through Cloudflare; besides your IP address, Cloudflare also sees the content. Our server turns it into an email to our mailbox support@rooksbury.com and hands it over, encrypted, to the mail service of Google Workspace; it sets your email address as the reply address.

Our server does not store the message, neither in a file nor in a log. It uses your IP address only in memory to accept at most three messages per hour from the same address; this counter expires after one hour. A field in the form that is invisible to people detects automatically filled-in requests; we discard those without sending them.

The message is then kept in our mailbox at Google Workspace (section 15), like any email you write directly to support@rooksbury.com. We use it only to answer your enquiry. Deletion: we delete the message once your enquiry has been dealt with, unless a statutory retention obligation prevents this. Gmail removes deleted emails from the trash after 30 days.


11a. Press, collaboration and partner contacts

This section is not about using the app but about our press and outreach work. We are the controller (section 1).

What we do. We take the names and email addresses of editorial staff from the publicly available legal notices (imprints) of photography media and send them a one-off press release about ExposureCast. We also send individual photographers and platforms a one-off collaboration or partner inquiry if their website explicitly invites such inquiries; in that case we take the address from their public contact page, FAQ or legal notice. Where appropriate, we include a personal, free trial of ExposureCast Pro (an access code that we assign to the recipient).

Purpose and legal basis. We want to inform the press about the app and to initiate collaborations with photographers and platforms. The legal basis is Art. 6(1)(f) GDPR; our legitimate interest is press and outreach work for ExposureCast.

Which data. Name, business email address and publication, channel or platform; the source (address of the page and the date we looked it up); the date of sending; where applicable, the access code assigned to you and your reply.

Source of the data (Art. 14(2)(f) GDPR): the publicly available legal notices, contact pages or FAQs of the publications, photographers and platforms concerned.

Recipients. We send and receive these emails through our mailbox at Google Workspace. Google processes them on our behalf, including in the USA and other countries outside the EEA (section 15). If you enter an access code in the app, these requests, like all requests from the app, pass through Cloudflare and our server at Hostinger (section 5). We do not pass the data on to anyone else.

Access code. If you enter the access code assigned to you in the app, section 12 applies to the app. Because we assigned the code to you, we can link an access token that belongs to this code to you. For each code our server keeps only counters: how often it was redeemed in total and on the same day, how often it was refused at the daily limit, and how often an access token for it was accepted or refused. It does not store your IP address or a device identifier for this; as with every request, it uses the IP address only briefly in memory to fend off too many attempts (section 5). The server keeps the counters in a file so that a restart does not erase them; they contain only numbers per code name. If we block the code, the server deletes its counters at the next restart; in Hostinger's weekly backups they remain for up to about two weeks longer. If the code reaches its daily limit, the server writes its name to the log (section 5). An access token is valid for 7 days. We can block a code; after that, no access token belonging to it is valid any more.

Retention. We delete the data 12 months after sending, or, if we correspond afterwards, 12 months after the last message. If you object, we block the data immediately: we then keep only a suppression note with your email address and the date of your objection, so that we do not contact you again. We keep the suppression note for as long as we do press and outreach work and review every three years whether it is still needed.

Objection. You may object to processing for this purpose at any time: without giving reasons insofar as it is direct marketing (Art. 21(2) GDPR), and otherwise on grounds relating to your particular situation (Art. 21(1) GDPR). A short reply to our email is enough, as is a message to support@rooksbury.com. Your other rights are set out in section 16, the right to lodge a complaint in section 17.


12. Purchases and subscription (ExposureCast Pro)

ExposureCast Pro is a subscription you take out in the app through Google Play, monthly or yearly. New subscribers can try it free for 14 days. The free version works without any purchase.

Purchase and payment: Google Play. The Play Store app handles the purchase dialog, payment, free trial, renewal and cancellation. We do not see your payment method, billing details or Google account. Google processes these data under its own responsibility, not on our behalf; for users in the European Economic Area this is Google Ireland Limited, and your contracting party for the purchase there is Google Commerce Limited. Outside the European Economic Area, the Google Play terms of your country state who your contracting party is. Details are in the Google Payments privacy notice (https://payments.google.com/payments/apis-secure/get_legal_document?ldo=0&ldt=privacynotice&ldl=en). After the purchase, only the purchase receipt comes back into the app: purchase token, the subscription bought and the time.

Order data from Google. According to the Google Payments privacy notice, Google makes information about a purchase available to the developer you bought from. We see this order information, such as order number, subscription, price and country, in the Play Console and in Google's payment reports. We use it only for questions about your purchase, refunds, bookkeeping and tax.

Subscription check: RevenueCat. So that the app knows whether Pro is active for you, we use RevenueCat as our processor. A RevenueCat component in the app (SDK) talks directly to api.revenuecat.com, and if that fails, to the fallback addresses api-production.8-lives-cat.io and api.rc-backup.com. The SDK only starts when you trigger it yourself: when you open the Pro page (the app then loads the prices in your currency), buy Pro or restore purchases. Once RevenueCat has confirmed an active subscription on your device, the app remembers this and from then on also checks at every start and when you bring the app back to the foreground, so that Pro switches on and off without you doing anything. As long as you do none of this, the SDK does not start: it creates no identifier and does not talk to RevenueCat. A subscription you took out on another device or before reinstalling comes back with “Restore purchases” (on the Pro page and in the settings). The following goes to RevenueCat:

From purchase receipts and subscription status, RevenueCat produces revenue and subscription statistics for us, such as how many subscriptions are running. RevenueCat receives no places, coordinates or place names. We pass on no other attributes about you, and the SDK's diagnostics feature is switched off. We do not use an advertising ID.

Pro check on our server. Our server api.exposurecast.com computes some Pro features. So that it delivers them only with an active subscription or a valid access code (which we give only to reviewers, testers and journalists, section 11a), the app sends the RevenueCat app identifier along with these requests, or, after an access code has been entered, the access token. Our server uses it to ask RevenueCat whether an active Pro subscription exists for this identifier; RevenueCat sees the IP address of our server, not yours. The server keeps the answer briefly in memory so that it does not have to ask again for every request. It does not write the identifier to a file or a log.

Legal basis: For buying, restoring, checking the subscription of subscribers and the Pro check on our server, Art. 6(1)(b) GDPR: without them we cannot provide the subscription you bought. For loading the prices when you open the Pro page, also Art. 6(1)(b) GDPR: you are looking at our offer before entering into a contract. For the check at start on a device whose subscription has since ended, Art. 6(1)(f) GDPR. Our legitimate interest: to recognise a subscription you take out again in Google Play without any further step on your part. For order data from Google, Art. 6(1)(b) GDPR and, where we are required to keep them, Art. 6(1)(c) GDPR. The SDK only stores the app identifier on your device once you open the Pro page, buy or restore, and reads it again with every request after that. We base this on § 25(2) no. 2 of the German Telecommunications Digital Services Data Protection Act (TDDDG): you are calling up the purchase yourself at that moment, and without the identifier the app can neither show prices and complete the purchase nor determine whether you have a subscription. Accessing it at start on a device whose subscription has ended likewise serves the subscription you chose earlier (§ 25(2) no. 2 TDDDG); it stops when you clear the app data.

Recipient and third country: RevenueCat, Inc., 1032 E Brandon Blvd #3003, Brandon, FL 33511, USA (https://www.revenuecat.com/privacy-policy). RevenueCat processes the data only on our behalf; the data processing agreement is part of RevenueCat's terms (https://www.revenuecat.com/dpa). RevenueCat stores the data with Amazon Web Services in the USA, and all of RevenueCat's sub-processors are located in the USA. We have not found that RevenueCat participates in the EU-U.S. Data Privacy Framework. The transfer is therefore based on the EU Standard Contractual Clauses incorporated into that agreement. You can obtain a copy of these safeguards on request at support@rooksbury.com.

Retention and deletion: RevenueCat has not published a fixed period for how long it stores our users' data. The data remain with RevenueCat as long as we use the service, or until we delete your entry; if our contract ends, RevenueCat deletes them under the data processing agreement. Write to us at support@rooksbury.com and we will delete your entry, including the purchase history, at RevenueCat. We find your entry from your details of the purchase. Deleting does not end a subscription: cancel it in Google Play first. If you uninstall the app, the identifier disappears from your device, unless Android restores it from backup (section 10); the entry at RevenueCat remains.

Managing and cancelling your subscription is possible at any time in Google Play; the app links there (“Manage subscription”, section 9).

What this version does not contain:

If we introduce advertising, we will change this policy before the new version of the app is released.


13. Legal bases

ProcessingLegal basis
Requesting location, computing the forecast for your place, also while the app is closed for reminders and alerts (sections 4–6)Art. 6(1)(b) GDPR: you request the forecast for your place or have set up a reminder or alert for it, and it cannot be computed without the place.
Loading map tiles directly from CARTO and Esri (section 7)Art. 6(1)(f) GDPR. Our legitimate interest: to show you the place and direction of an opportunity on a map. For this the app loads map images from the provider, who inevitably sees your IP address and the map area; satellite images from Esri by default in the detail map of an opportunity, in the map under “Extras” only when you choose “Satellite”.
“Rain” (Deutscher Wetterdienst, KNMI, Finnish Meteorological Institute, Environment and Climate Change Canada) and “Clouds” (NASA GIBS) layers (section 7)Art. 6(1)(a) GDPR (consent), for the transfer to NASA GIBS in the USA and to Environment and Climate Change Canada in Canada Art. 49(1)(a) GDPR. Withdrawal: settings → “Privacy & legal” → “Reset map consent”.
Feedback (section 8)Art. 6(1)(a) GDPR (consent by sending it). Withdrawal by email to support@rooksbury.com (section 8).
Pro page totals, only if you switch on “Count Pro page usage” (section 5)Art. 6(1)(a) GDPR and Section 25(1) TDDDG (consent). Withdrawal: Settings → “Privacy & legal” → switch off; this takes effect at once.
Counting requests per app version (section 5)Art. 6(1)(f) GDPR. Our legitimate interest: to know which app versions are still in use, so that we can attribute errors to a version.
Request limiting, Cloudflare, Hostinger (section 5)Art. 6(1)(f) GDPR. Our legitimate interest: to keep the server reachable and protect it from overload by too many requests.
Visiting the legal pages (section 11)Art. 6(1)(f) GDPR. Our legitimate interest: to keep available the legal texts we are required to publish.
Buying, restoring, checking the subscription of subscribers via RevenueCat, Pro check on our server (section 12)Art. 6(1)(b) GDPR: without them we cannot provide the subscription you bought.
Loading prices when you open the Pro page (section 12)Art. 6(1)(b) GDPR: you are looking at our offer before entering into a contract.
Request to RevenueCat at start on a device whose subscription has ended (section 12)Art. 6(1)(f) GDPR. Our legitimate interest: to recognise a subscription taken out again in Google Play without any further step on your part.
Storing and reading the RevenueCat app identifier on your device, only from opening the Pro page, buying or restoring (section 12)§ 25(2) no. 2 TDDDG
Order data from Google (section 12)Art. 6(1)(b) GDPR; for retention under commercial and tax law Art. 6(1)(c) GDPR.
Press releases to editorial offices, collaboration and partner inquiries, access codes for them, suppression note after an objection (section 11a)Art. 6(1)(f) GDPR. Our legitimate interest: to inform the press about ExposureCast, to initiate collaborations and, after an objection, to make sure we do not contact you again. For the suppression note, additionally Art. 6(1)(c) GDPR in conjunction with Art. 21(3) GDPR.
Contact form and emails to us (section 11)Art. 6(1)(b) GDPR if your enquiry concerns a contract with us or steps prior to one; otherwise Art. 6(1)(f) GDPR. Our legitimate interest: to answer your enquiry and to protect the form from masses of automatically sent messages.

14. Retention

DataPeriod
Data on the device (section 3)until you delete them in the app, clear the app data or uninstall the app
Server caches (section 5)5 minutes to 24 hours, terrain horizon up to 30 days; in memory only, a restart deletes them
Request-limiting countersone time window, usually one minute, one hour for the contact form
Counters per app version (numbers only, no IP address)30 days
Pro page totals (only with consent, no IP address, no identifier)13 calendar weeks; weekly reports made from them contain totals only (values below 5 not shown); in the weekly backups at Hostinger up to about two weeks longer
Your choice “Count Pro page usage” (on the device)until you change it or clear the app data
Counters per access code (section 11a)until we block the code, deleted at the next server restart; in Hostinger's weekly backups up to about two weeks longer
Server access lognot kept
Feedback24 months from receipt, then deleted automatically; up to about two weeks longer in Hostinger's weekly backups
Consent to “Rain”/“Clouds” (on the device)until you reset it in the settings or clear the app data
Messages sent via the contact formnot at all on our server; in our mailbox at Google Workspace until your enquiry has been dealt with, unless a statutory retention obligation applies (section 11)
Press, collaboration and partner contacts (section 11a)12 months after sending or after the last message; blocked immediately after an objection, leaving only a suppression note with your email address and the date of your objection, kept for as long as we do press and outreach work and reviewed every three years
RevenueCat app identifier, subscription status and marker on the deviceuntil you clear the app data or uninstall the app
Data at RevenueCat (app identifier, purchase receipts, purchase history)as long as we use RevenueCat or until we delete your entry at your request; RevenueCat has not published a fixed period (section 12)
Subscription status during the Pro check on our serveronly briefly in memory, not in a file or a log (section 12)
Order data from Googleas long as commercial and tax law require, up to ten years
Logs at Cloudflareaccording to Cloudflare's terms
Access data of the legal pages and the product pagewith us no access log; web server error messages without your IP address in a store of at most 2 MB, no fixed period (section 11); at Cloudflare no published fixed period, Cloudflare states “a limited period of time” (section 11)

15. Recipients, location and transfers to third countries

The providers from sections 4 to 11a. “Third country” means outside the European Economic Area. For the USA, the European Commission has adopted an adequacy decision only for companies participating in the EU-U.S. Data Privacy Framework (DPF); for Switzerland an adequacy decision exists.

ProviderLegal entity and seatPrivacy informationThird country and basis
CloudflareCloudflare, Inc., 101 Townsend Street, San Francisco, CA 94107, USAhttps://www.cloudflare.com/privacypolicy/USA. DPF-certified according to its own statement; standard contractual clauses as a fallback.
HostingerHostinger International Limited, 61 Lordou Vironos Street, Lumiel Building, 4th floor, 6023 Larnaca, Cyprushttps://www.hostinger.com/legal/privacy-policySeat in the EU. Our server is located in Germany (Frankfurt). Hostinger cites standard contractual clauses for sub-processors outside the EU.
CARTOCartoDB Inc., 307 Fifth Avenue, Floor 9, New York, NY 10016, USAhttps://carto.com/privacy/USA. DPF-certified according to its own statement; standard contractual clauses as a fallback.
EsriEsri, 380 New York Street, Redlands, CA 92373, USAhttps://www.esri.com/en-us/privacy/privacy-statements/privacy-statementUSA. DPF-certified according to its own statement. Esri processes the tile requests under its own terms.
NASA (GIBS)National Aeronautics and Space Administration, US federal agencyhttps://www.nasa.gov/privacy/USA. DPF participation not possible, no safeguard found. Transfer only after your consent in the app (sections 7 and 13).
Deutscher WetterdienstDeutscher Wetterdienst (German Meteorological Service), federal agency, Frankfurter Straße 135, 63067 Offenbach am Main, Germanyhttps://www.dwd.de/EN/service/dataprotection/dataprotection_node.htmlnot a third country
KNMIKoninklijk Nederlands Meteorologisch Instituut (Royal Netherlands Meteorological Institute), agency of the Dutch Ministry of Infrastructure and Water Management, Utrechtseweg 297, 3731 GA De Bilt, Netherlandshttps://www.knmi.nl/privacynot a third country
Finnish Meteorological InstituteIlmatieteen laitos (Finnish Meteorological Institute), government agency, Erik Palménin aukio 1, 00560 Helsinki, Finlandhttps://en.ilmatieteenlaitos.fi/data-protectionnot a third country
Environment and Climate Change CanadaEnvironment and Climate Change Canada (Meteorological Service of Canada), department of the Government of Canada; service contact address: 77 Westmorland Street, Suite 260, Fredericton, New Brunswick E3B 6Z3, Canadahttps://www.canada.ca/en/transparency/privacy.htmlCanada. The EU adequacy decision for Canada covers only businesses subject to Canada's private-sector privacy law, not public authorities; no appropriate safeguards. Transfer only after your explicit consent in the app (Art. 49(1)(a) GDPR; sections 7 and 13).
Photon (komoot)komoot GmbH, Friedrich-Wilhelm-Boelcke-Straße 2, 14473 Potsdam, Germanyhttps://www.komoot.com/privacynot a third country
Open-MeteoOpenMeteo GmbH, Hintere Schilligmatte 6, 6463 Bürglen (UR), Switzerlandhttps://open-meteo.com/en/termsSwitzerland, adequacy decision.
MET NorwayMeteorologisk institutt (Norwegian Meteorological Institute), Postboks 43 Blindern, 0313 Oslo, Norwayhttps://www.met.no/en/About-us/privacyNorway is part of the EEA.
Amazon Web ServicesAmazon Web Services EMEA SARL, 38 Avenue John F. Kennedy, L-1855 Luxembourghttps://aws.amazon.com/privacy/Seat in the EU; the US parent company is DPF-certified according to its own statement.
NOAA SWPCNational Oceanic and Atmospheric Administration, US federal agencyhttps://www.noaa.gov/organization/information-technology/privacyUSA; receives no data about you.
GFZ PotsdamGFZ Helmholtz Centre for Geosciences, Telegrafenberg, 14473 Potsdam, Germanyhttps://kp.gfz.de/en/data-protectionnot a third country; receives no data about you.
RevenueCat (subscription check, processor)RevenueCat, Inc., 1032 E Brandon Blvd #3003, Brandon, FL 33511, USAhttps://www.revenuecat.com/privacy-policyUSA. DPF participation not found; standard contractual clauses in the data processing agreement (section 12).
Google (Play services, Android backup, Safe Browsing, review card)Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Irelandhttps://policies.google.com/privacyThe US parent Google LLC is DPF-certified according to its own statement.
Google Play (purchase and payment, separate controller)for payment data Google Ireland Limited, Gordon House, Barrow Street, Dublin 4, Ireland; contracting party for the purchase in the EEA Google Commerce Limited, Irelandhttps://payments.google.com/payments/apis-secure/get_legal_document?ldo=0&ldt=privacynotice&ldl=enThe US parent Google LLC is DPF-certified according to its own statement.
Google Workspace (our mailbox, also for the contact form and press contacts)Google; which Google company is our contracting party depends on the Google Workspace terms of service and our billing addresshttps://cloud.google.com/terms/data-processing-addendumUSA and other countries possible; basis see below under “Processing on our behalf”.

Processing on our behalf: Cloudflare, Hostinger, Google Workspace and RevenueCat process data on our behalf. With all four, a data processing agreement under Art. 28 GDPR applies:


16. Your rights

You have the right of access (Art. 15 GDPR), rectification (Art. 16), erasure (Art. 17), restriction of processing (Art. 18) and data portability (Art. 20). You may withdraw consent at any time with effect for the future (Art. 7(3)). An informal message to support@rooksbury.com is sufficient.

Right to object: Where we process data on the basis of legitimate interests (Art. 6(1)(f) GDPR), you may object at any time on grounds relating to your particular situation (Art. 21 GDPR), informally to support@rooksbury.com. You may object to receiving press releases without giving reasons (Art. 21(2) GDPR, section 11a).

Because there is no account and feedback carries no identifier of your device, we can match it on the server only via the place and time you tell us (section 8). We find your entry at RevenueCat from your details of the purchase (section 12). Payment and account data at Google Play are managed by Google; please contact Google about them.

You can revoke the location permission at any time in the Android settings (Settings → Apps → ExposureCast → Permissions).


17. Complaints to the supervisory authority

You may lodge a complaint with a data protection supervisory authority (Art. 77 GDPR), in particular in the Member State of your residence, place of work or the alleged infringement. The authority responsible for us is:

Bayerisches Landesamt für Datenschutzaufsicht (BayLDA)
Promenade 18, 91522 Ansbach, Germany (postal address: Postfach 1349, 91504 Ansbach)
https://www.lda.bayern.de · Complaints: https://www.lda.bayern.de/de/beschwerde.html


18. Security

The app connects to all services only over encrypted connections (HTTPS).


19. No automated decisions

The app computes probabilities for weather and sky events. It makes no decisions about persons within the meaning of Art. 22 GDPR. We do not process special categories of personal data (Art. 9 GDPR).


20. Children

The app is not directed at children under 16.


21. Changes

We update this policy when the processing changes. The version linked in the app and published at https://www.rooksbury.com/exposurecast/privacy applies.