DoggyWalky Privacy Policy

This is a translation of the Ukrainian original. If the two versions differ, the Ukrainian version prevails.

Last updated: 9 November 2026

Operator (data controller): Dmytro Khait (an individual), Kyiv, Ukraine

Contact for data matters: privacy@doggyapps.com

1. In brief

2. What data we process and why

Data Purpose Who sees it
Email (for sign-in by code) or an Apple / Google identifier together with the email that Apple or Google passed on (with Apple, this may be a private address that forwards mail) Signing in to your account Only you; the operator, for support
The name that Apple or Google passed on at sign-in (Apple passes it only at the first sign-in and only if you chose to share it); from Google, also a link to the Google profile photo Signing in to your account. The name is only prefilled in the field on the Як тебе звати? (What's your name?) screen — it gets into your profile only if you confirm it. The app does not download or show the Google profile photo Only you; the operator, for support. Not shown to the family
The name you provide Shown to family members (“Maksym has already walked…”) You and the dog's family
The dog's name Profile, family notifications You and the dog's family
Dog card: mascot look (size, coat, ears, mixed breed), breed, “mixed breed”, month and year of birth, weight, personality traits, “Yellow Ribbon” marker Dog profile, mascot, choosing the look You and the dog's family
“Who is walking the dog now” (a record of an active walk: who and since when; disappears after the finish or after 3 hours) Letting the family know the dog is already being walked The dog's family
Walks: start and end time, distance, number of “toilet” marks, route, unlocked map cells (H3), the walk's name (the app makes it up; you don't type it) History, calendar, Paw Streak, unlocked map cells, Park Passport You and the dog's family
Finds from walks: which item was found, which family member found it, on which walk and when — no coordinates The dog's collection of finds You and the dog's family
Anonymous count of cities where dogs walk: once a week the server rolls the unlocked map cells it already has up into large cells of about 250 km² (Ukraine only, only outside the cities the app already covers) and keeps a cell only if at least 3 different dogs walked in it on at least 2 different days in 28 days. What is stored: the cell, the number of dogs rounded down to 5 (3 means "3–4") and the dates of the first and last time — no account or dog id, no names, no points To decide which cities to add to the app next. The app sends nothing extra for this The operator only
Friends: the “you — friend” pair and the exact date and time you became friends (friends are shown only the month); a friend code (8 characters, valid for 7 days, up to 10 joins by code, up to 50 friends); your choices: “Show my name to friends” (off by default), “Show my walks to friends” (on by default), “Paw notifications” (on) The friends list, invitations by link or code, your visibility choice Someone who opened your code sees, before becoming a friend, only the name and mascot look of your main (first) dog. A friend sees the same plus that dog's AI portrait (while you are friends), the month the friendship began, and your name only if you allow it; a friend does not see your other dogs. Friends do not see routes, the map, cells, places or the time of walks
Paws: who gave a paw (the account) and for which walk; the number of paws The friends feed (“today · 2.1 km · 3 paws” — the day, the length to 100 m), the notification “Bublik gives Luna a paw” A friend sees the day and length of only those walks of your main dog that you walked yourself, from the last 48 hours (unless you turn the switch off); a walk appears in the feed in groups — not before its 3-hour interval has ended — and without a time; in the notification you see the friend's dog name and the number of paws, not a name. A paw can only be given to a friend
Privacy zones — up to three (for example after moving house, or for a country house): each has an offset centre and a radius of 200–400 m (not your address); each is created once and never changes, and a new one must be at least 1 km from the existing ones Clipping routes in the cards you share and in the cards shared by the other family members of your dogs You; the apps of the other family members of your dog receive all your zones (without your name) as soon as you join the family and for as long as you stay in it — only to clip the cards they share; nobody sees them on screen
Dog photo and walk memory photo Avatar and memories You and the dog's family
Device token for notifications “The dog has already been walked” notifications Nobody; used only for delivery
AI recognition log: date, status (succeeded / not a dog / error), cost (without the photo) Attempt limit and budget Only you (your own records)

Geolocation. During a walk, the app records coordinates, including in the background (when the screen is locked) — only between “Start” and “Finish”. Outside a walk, your location is not recorded. Points with poor accuracy do not unlock fog; signs of GPS interference (jamming, spoofing) are stored only as a flag on the walk.

2a. What is stored only on your phone

So that a walk is not lost when the app is closed or the connection drops, some data lives on the phone. Walks and the queue are stored on iPhone in the app's private folder, which is not included in the iCloud backup; on Android, in the app's data folder, which is not included in the Google backup; in the web version, in the browser storage.

What Purpose How long
Current walk: route points (coordinates, time, accuracy), start time, “Toilet” marks The recording survives closing the app; the summary after the finish Until you start a new walk or delete the account — including after it has been saved to the server
Finds of the current walk: up to three points on the map where items lie (never closer than your home zone + 100 m), and which of them you have picked up; how many items of the set the dog had when the walk began (item names and a number only) To show the finds on the map and keep what you picked up if the app is closed; to count for the statistics which item of the set was picked up Erased as soon as the walk is saved on the server or you discard it, and when you sign out or delete the account. Only the names of the items picked up go to the server, never where they were
Memory photo of the current walk (already without EXIF) and its upload queue: the photo stays on the phone until the walk itself is saved and the photo is uploaded A photo can only be added to a walk that is already on the server; without a connection it waits Until the server accepts or rejects it; until the account is deleted on this phone
Queue of walks waiting for a connection Offline saving (blackouts, no network) Until the server accepts them
Walks the server has permanently rejected So they are not lost without a trace Until the account is deleted on this phone
A “parked” walk of your account — when you signed out or another account signed in on the phone Another person on this phone cannot see it or save it for themselves; it returns to you when you sign in Until you sign in again or delete the account
Identifier of the last account on the phone and whether it is signed in So that a new walk belongs to the right account; a walk recorded without signing in on a phone where someone has already signed in is confirmed manually by the account While the app is on the phone or until this account is deleted
Sign-in session (tokens) — on iPhone and Android in the app's settings (on iPhone they may end up in the iCloud backup) Not having to sign in every time Until you sign out
The Анонімна статистика (Anonymous statistics) switch and, while it is on, random statistics identifiers (device and session) Remembering your choice; counting sessions, not people The choice — while the app is on the phone; the identifiers are erased as soon as statistics are turned off, and a new anonymous one appears after signing out
Sunrise and sunset times where the phone last was: two numbers accurate to 10 minutes, without coordinates; only while Авто (Auto) is selected for Світло (Light) in Налаштування (Settings) So that Авто (Auto) switches on the night theme right after launch, before the app finds out where you are While Авто (Auto) is selected and the app is on the phone; erased as soon as you choose День (Day) or Ніч (Night), and when the account is deleted. Not sent anywhere
Where the Safari twin last stood on the home map: one point accurate to about 1 m (the end of the dog's latest walk, or where the phone was before the first walk) and the dog's and the account's identifiers. On iPhone, in the app's private folder, outside the iCloud backup; on Android, outside the Google backup So that after launch the map opens right on the dog instead of somewhere else first Until you sign out, delete the account or another account signs in on the phone; a new walk replaces it. Not sent anywhere
What the profile shows for each dog on this phone — a photo or a Safari lookalike: only the identifiers of dogs for which a photo is chosen (a dog's first photo added from this phone is chosen at once) So that the profile opens with your choice, and the dog looks the same on your maps (home, walk, walk summary) While the app is on the phone; a dog's identifier is erased as soon as you return its Safari lookalike, and the whole list when the account is deleted. Not sent anywhere
A copy of the dog's mascot drawn by AI (a sticker or a parts sheet; a picture the AI drew from the dog's photo or from a description of its look — the photo itself and the place are not in it) and when it was last compared with the server. On iPhone in the app's private folder outside the iCloud backup, on Android outside the Google backup So that the dog keeps its own look on the maps, in the walk summary and on the cards without a connection, without downloading the picture every time; once a day the app checks whether the server has a newer mascot Until you sign out or delete the account; also erased when the dog's mascot is no longer on the server. Not sent anywhere
First-run markers: whether location is allowed and whether only approximately (no coordinates), whether the fog hint was shown, whether the card about parks and districts outside the larger cities was closed (no place), whether you were offered to create a home zone, and when you closed the zone reminder Not to ask or show the same thing again While the app is on the phone. Not sent anywhere
Keys of the cities from our coverage list (for example kyiv) where the dog has been, and a marker that it has been outside coverage; no coordinates and no time To show the "Now here too" card once when parks and districts appear in the city where you walk While the app is on the phone; erased on sign-out and with the account. Not sent anywhere
How you started signing in (Apple, Google or an email code) and when So that the statistics (section 3a) count the sign-in method when you return from the browser Erased as soon as the sign-in completes; an entry older than 30 minutes is ignored
Identifiers of walks that included a ride on transport The “with transport” note in the calendar on this phone While the app is on the phone; erased when the account is deleted. Not sent anywhere
Your settings on this phone: the look (Стиль (Style) and Світло (Light)), Купки на карті (Poops on the map), Кнопки зліва (Buttons on the left); whether you have already made a “big” toilet mark and on how many walks the Туалет (Toilet) hint was shown So the app looks and works the way you chose and hints are not repeated While the app is on the phone. Not sent anywhere
The last notification token this phone registered, and for which account Not registering the phone for notifications again every time (the token itself is on the server, section 2) Erased when you sign out or delete the account
A scheduled «… вже вдома?» ("… home already?") reminder: the dog's name (if there is one) and the time to show it; only if notifications are allowed. It sits in the phone's notification system, and on Android also in the app's private folder; no coordinates Reminding you to finish the walk after 10 minutes without movement Only while a walk is recording: moving on moves it later, and finishing or Не зберігати (Don't save) cancels it. Once shown, the app removes it as soon as you return to the app, move on or finish the walk. Not sent anywhere: the phone shows it itself
The walk reminder, if you turned it on: your choice (Як зазвичай (As usual) or a time you picked), whether you answered the offer on the home screen, and the scheduled reminders — the dog's name and the time, a few days ahead. The phone works out your usual time itself from the start times of your walks of the last 14 days (it reads them from the server, like the calendar); no coordinates Reminding you about a walk at your usual time, once a day and not when the dog has already been walked While the app is on the phone; the scheduled reminders are erased when you turn the reminder off, sign out or delete the account. Not sent anywhere: the phone shows the reminder itself
The Monday weekly summary, if you turned it on: the switch, the scheduled notification — the dog's name, the week's totals (number of walks, kilometres, days with a walk, new cells) and the time — and the day a summary was last shown. The phone works out the totals itself from the dog's walk calendar (all family members' walks, as in the calendar); no coordinates Showing how the dog's week went, once a week, and not sending a walk reminder on the same day as well While the app is on the phone; the scheduled notification is erased when you turn the summary off, sign out or delete the account. Not sent anywhere: the phone shows the notification itself
A crash report that has not been sent yet (for example, the app crashed without a connection), and a random installation identifier for crash reports Sending the report when the app opens again; telling one recurring crash from many The report — until it is sent; the identifier — while the app is on the phone

GPX export and the walk card are created on the phone. A GPX file contains exact coordinates and goes only where you yourself save or send it; the walk card is clipped by the privacy zones — yours and those of the other family members of the dog you walked; without a zone of your own it will not be created. To draw a map on the card, the app downloads map tiles around the route from OpenFreeMap; the areas of your home zones are covered with fog on the card — neither the map nor the route shows there. Without a connection the card has no map.

Android backups. The app does not hand its data to the Google backup: unsaved walks, the queue, the sign-in session and the settings on the phone do not go there. After reinstalling you sign in again, and everything saved on the server comes back. When you move data from an old Android phone to a new one directly (by cable or wirelessly, Android 12 and newer), the app's data moves along with the rest — from phone to phone, without the cloud.

Photos. Before uploading, the app re-encodes the photo on the device (up to 1080 pixels, up to 120 KB), which removes all EXIF metadata, including the GPS coordinates of the shot. Coordinates are not stored together with the photo.

3. Who the data is shared with (processors)

Service What it receives Purpose Where
Supabase (database, sign-in, file storage, server functions) All data from section 2; the IP address and technical data of every request from the app (see below) Storage and operation of the app; logs — security and troubleshooting EU, Frankfurt (Germany)
Google Vertex AI (Gemini) A dog photo — only if you run AI recognition, without EXIF; it is sent over an encrypted connection to two Gemini models (1) Determining the size, ears, coat and probable breed; (2) drawing the dog's mascot from the photo and those attributes (a sticker, and later a parts sheet for the animated mascot). Vertex AI does not use customer data to train models; we do not store the copy sent to the AI — it does not stay on our servers after processing (the photo you added to the dog's card as its avatar is kept under section 2). The drawn mascot picture is stored in private storage accessible to the dog's family (friends see it as the dog's AI portrait — section 2) and is deleted with the dog or the account Google; processing takes place in the EU multi-region. The feature is enabled; if AI is unavailable, the size and coat can be chosen manually
Google Firebase Cloud Messaging / Apple Push Notification service The device token and the notification text (dog's name, name, time, “toilet”) — without coordinates Delivering notifications Google / Apple
MET Norway (api.met.no) Only a ~10 km cell (coordinates rounded to 0.1°), without your IP address — the request comes from our server Weather for the mascot Norway
OpenFreeMap (tiles.openfreemap.org) Your app downloads map tiles directly: the service sees your IP address and the map area you are viewing Showing the map and the map on the walk card Under the OpenFreeMap policy: no cookies and no tracking, IP addresses are not logged by default, logs are deleted after 7 days
Apple / Google (sign-in) Only if you choose to sign in through them Authentication Apple / Google
Resend (Plus Five Five, Inc.) — email Your email and the email with the sign-in code (the code and the sign-in link) Delivering sign-in emails; the email and its delivery log are kept under Resend's rules — up to 30 days EU (Ireland)
Sentry (Functional Software, Inc.) — crash reports A technical report of a crash, an error, or an app hang, or of the app being force-terminated by the system (for example, for lack of memory): the type and text of the error (with the removals described in section 3a), the call stack, the phone's technical characteristics (model, system, memory and storage, battery charge, screen resolution, language, time zone), the app version, the latest technical steps before the crash (screens, taps without button labels, request addresses without parameters), a random installation identifier of the app; while statistics are on — also the account pseudonym and technical sessions (when the app was opened and closed and whether a crash happened) Finding and fixing crashes and hangs EU (Germany, Sentry EU region)
PostHog (PostHog Inc.) — usage statistics Only the events from section 3a with predefined values; the account pseudonym, if you are signed in; random device, session, and window identifiers; the system and its version, device type and model, the web view engine and its version, screen size, language, time zone, library version, event time Understanding what is convenient in the app and what is not EU (Germany, PostHog EU Cloud)

IP addresses in Supabase logs. Like any server, Supabase sees the IP address of every request from the app and records it in technical logs together with the time, the request address, the account identifier, and a technical description of the device and browser (user agent), as well as the approximate location that Cloudflare (which requests to Supabase pass through) derives from the IP address (country, city, postal code, approximate coordinates) and the name of your internet provider. The sign-in log is kept there too (when you signed in, signed out, or deleted the account), with the email and the name from Apple / Google, if there is one. The logs are needed for security (protection against abuse and break-ins) and to troubleshoot server failures; they are erased automatically — after 7 days at most (the log retention period on our Supabase plan). In addition, the sign-in system remembers the IP address and a technical description of the device for each sign-in session — until you sign out of the account or delete it. We do not use either the IP addresses or the location derived from them to track where you are or to build a profile of you, and we do not pass them on to anyone.

3a. Crash reports and usage statistics

What is not there. The statistics contain no free text — only the events from the list below with predefined values, so there can be no coordinates, map cells, addresses, names, dog names, photos, or invitation codes. From crash reports, the app removes, on the phone and before sending, coordinates, map cells, encoded routes, email, sign-in tokens, and request parameters, as well as the dog's name, your name, the names of family members, and the invitation code, if they ended up in the error text. Sentry and PostHog see your IP address while the request is made but do not store it (the projects are configured that way); city detection by IP is turned off in the statistics. For IP addresses in Supabase logs, see section 3.

A pseudonym, not anonymity. The switch is called Анонімна статистика (Anonymous statistics), but more precisely it is pseudonymised: while you are signed in, the services see not your account but a pseudonym — an irreversible hash (SHA-256) of the account identifier. Without the DoggyWalky database, a person cannot be found from the pseudonym; after you sign out, statistics on this phone are anonymous again. Crash reports receive the pseudonym only while statistics are on.

Installation identifier. Every crash report contains a random installation identifier of the app (on iPhone, a hash of the app identifier on this device), to tell one recurring crash from many. It is not linked to the account and disappears together with the app.

Which events the statistics count: opening the app; the steps of the first setup (sign-in, name, «Як почнемо?», dog, mascot, manual choice, family code) and the sign-in method (Apple, Google or an email code); the result of the location permission request (granted, denied, or approximate location only); completing the first setup (your own dog or a family code; mascot look from AI or chosen manually); starting a walk; finishing a walk — only ranges of duration and distance, numbers of new cells and “toilet” marks, whether there was a photo, and whether GPS was disrupted (jamming, spoofing); sharing a walk card; a family invitation sent and accepted (joining by code counts both as completed setup and as an accepted invitation); the notification permission (granted, denied or not asked yet; and what showed the request — a saved walk, the family or the reminder — or a check at start-up); opening the app by tapping a notification (the family's «… вже вигуляно» ("… already walked"), the walk reminder, «… вже вдома?» or the weekly summary); the reminder offer on the home screen (shown, accepted or dismissed) and turning the reminder on or off (from the offer or from settings; «Як зазвичай» ("As usual") or a time of your own — without the time itself); the «Explorer Pro — готуємо» ("Explorer Pro — in the works") card — where it was shown (a walk older than 30 days, a full family, all the dog's free AI portraits already drawn, or settings) and whether «Мені цікаво» ("I'm interested") was tapped (no price, no payment, none of your contacts); finds on a walk — which catalogue item was picked up, which of the dog's sets it is and how many of the set's 10 items are collected, and a completed set (only its number) — never where the find was, map cells, the district or the landmark; the weekly stamp earned for three walks in a week (the event alone, no values). Friends and paws — how a friend invitation was sent (the system sheet or copying), the result of a friend code entered (accepted, invalid, expired, used up, your own, from your family, list full or too many attempts), a friend added or removed, a paw given, the “Спільнота” (Community) tab opened (no friends, with friends or failed to load), the switches “Show my name to friends”, “Show my walks to friends” and “Paw notifications” turned on or off, and the app opened from a tap on a paw notification — only these values, without the codes and links themselves, names, friends' dog names, identifiers or places. There is no automatic collection of taps or screen views and no screen recording. To switch new features on gradually, the app (only while statistics are on) asks PostHog whether a feature flag is on: that request carries the same pseudonym and technical device data as the events, and nothing more; PostHog may work out an approximate location from the IP only to answer that request, without storing it.

How to turn it off. Профіль (Profile) → ⚙ Налаштування (Settings) → Анонімна статистика (Anonymous statistics) (the switch is present in builds where these services are connected). Turning it off takes effect immediately: statistics no longer send anything, its identifiers on the phone are erased, and crash reports no longer contain the account pseudonym; technical sessions in crash reports are turned off from the next launch of the app. The choice is remembered on this phone. The crash reports themselves are always sent: without them we would not know that the app crashes. You can object to them too — by writing to privacy@doggyapps.com.

4. Legal bases for processing

5. Family

When you invite a person to a dog (a one-time code, valid for 48 hours), you give them access to the raw routes of that dog's walks, the calendar, photos, and the name of whoever walked. A family member can leave; the owner can remove a participant. If you join another family while you already have your own dog of which you are the only member, after you confirm, the app deletes that dog together with its walks, fog, stamps, and photos.

Friends are not family. A friend does not see the routes, the map, the cells or the time of your walks and cannot walk your dog in the app. Friendship is mutual and starts when someone opens your /f/<code> link or enters your code and taps “Дружити” (“Be friends”); you cannot become friends with your own family or with yourself. You can remove a friend at any time on the friend's profile — the friend is not notified, and afterwards no longer sees your dog's name, mascot or walks. A code lets anyone who has it become your friend, so share it only with people you want to add; an expired code stops working.

6. How long we keep data

7. Account deletion and your rights

8. Children

The app is not intended for children under 16. If you learn that a child under 16 has created an account, write to us — we will delete it.

9. Security

Access to data is restricted by database-level rules (row-level security): every request checks that you are a family member of the relevant dog. Photos are stored in private storage and are served only through temporary links (1 hour). Connections are encrypted (HTTPS).

10. Changes

We will notify you of material changes in the app before they take effect.

11. Website and beta waitlist

The doggyapps.com website uses no cookies, browser storage, analytics or trackers. To serve a page, our host Cloudflare processes your IP address and the technical data of the request. A family invite link carries the code in the address itself (doggyapps.com/join/CODE), so the code, as part of the page address, ends up in Cloudflare Pages' technical logs; the code works once and only for 48 hours.

Waitlist. On the home page you can leave your email to get into the closed beta.

What we keep Why How long
Your email; the language of the page (Ukrainian or English); where the link came from, if it says so (for example, from a walk card — only from a short fixed list, never page addresses); when you gave consent and to which edition of this policy To invite you to the beta and to write once when the app is released on the App Store Until you ask us to delete it, but no longer than 12 months from sign-up; after the release email we delete the list
A one-way hash of your IP address (made with a secret key; the address itself is not kept; for IPv6, only its network part — the first four groups) and the time of the attempt Protecting the form from spam: no more than 5 attempts from one network per hour 1 day