What data does CityWalker collect
CityWalker is designed to keep your data on your device. Your walk routes, the streets you've covered, and the cities you've added are never sent to CityWalker. What we collect are anonymous analytics to help improve the app and crash reports when something goes wrong.
What's stored on your device
Everything CityWalker tracks lives in a local database on your phone. No account, no cloud sync.
- Street data. The map of walkable streets for each city you have added, downloaded from OpenStreetMap.
- Walks. The start time, end time, and distance of each walk you have recorded.
- Coverage. Which street segments you have walked.
- Settings. Your unit preference (km or miles), reminder times and privacy toggle states.
What gets sent
CityWalker sends two types of data. Both are on by default and you can turn them off in Settings.
Anonymous usage events
These are sent through Aptabase, an open-source analytics provider that does not use cookies, device identifiers, or personal data. Aptabase derives an approximate country code from your IP address. No city, region, or specific location is captured.
Show all 19 events
- app_opened Sent each time the app opens. Includes days since the previous open.
- onboarding_completed Sent once when you finish the first-run setup screens.
- walk_started Sent when you tap GO to begin a walk. Includes which walk number this is (e.g. your 3rd walk).
- walk_completed Sent when a walk is saved. Includes duration in seconds, distance in metres, and walk number. No route or location data.
- walk_abandoned Sent when a walk is discarded instead of saved. Includes how long the walk had been running.
- walk_milestone Sent when you reach a walk count milestone (5, 10, 25, 50, or 100 walks).
- walk_city_mismatch_shown Sent when you start a walk outside your selected city and the mismatch prompt appears.
- walk_city_mismatch_resolved Sent when you make a choice on that prompt. Includes the action taken: switch city, stay, or dismissed.
- city_search_started Sent when you initiate a city download. Does not include the city name.
- osm_download_started Sent when street data download begins.
- osm_download_completed Sent when street data downloads successfully.
- osm_download_failed Sent when a download fails. Includes the error reason, no city name.
- city_added Sent when a city is successfully added. No city name is included.
- city_too_large_shown Sent when the "city too large" prompt is shown.
- city_too_large_resolved Sent when you make a choice on that prompt (download a region or cancel).
- gpx_imported Sent when a GPX file import finishes. No file name or route data is included.
- share_tapped Sent when you tap the share button on a walk summary or the Stats screen.
- location_permission_result Sent when the location permission prompt is answered, records granted or denied.
- notification_permission_result Sent when the notification permission prompt is answered, records granted or denied.
Crash reports
Crash reports are sent through Firebase Crashlytics and include a stack trace only. No location, no walk data, no city names. They're used to identify and fix bugs.
How to opt out
Both can be turned off independently at any time.
-
1Open Settings in CityWalker.
-
2Scroll to the Privacy section.
-
3Toggle Send crash reports or Send anonymous usage stats off.
For the full policy, see the Privacy Policy.
