Privacy Policy

Last updated: September 2026

1. Introduction

This Privacy Policy describes how WingDex™ ("we," "us," or "the Service") collects, uses, and shares information when you use the WingDex web application or iOS app. By accessing or using WingDex, you acknowledge that you have read and understood this policy.

2. Information we collect

2.1 Information you provide

  • Account and authentication information: Display name, email address, profile image, provider-issued account identifiers, and authentication tokens when you use social login. For passkeys, WingDex stores the public key and credential metadata; the private key remains with your device or passkey provider.
  • Birding data: Observations, outings, species lists, counts, identification confidence, notes, dates and times, location names, precise coordinates when present, checklist details, and related metadata you enter into the app.
  • Photo metadata: Images you add for bird identification are processed entirely on your device. WingDex does not upload or store the image pixels. We store associated metadata such as capture time, GPS coordinates when present, file name, and a file fingerprint hash used for duplicate detection.
  • Imported data: When you import an eBird CSV export, the file is uploaded to WingDex for server-side parsing. WingDex stores the resulting birding records, submission identifiers, and an import fingerprint used to prevent duplicate imports, but does not retain the original CSV after the request is processed.
  • Private contact information: If you use the private contact form linked in Section 11, the separately hosted form collects your name, email address, and message, along with technical information including your user agent and referrer.

2.2 Information collected automatically

  • Session and request data: Session identifiers and expiration, IP address, user-agent information, authenticated account identifier, requested API route, response status, request duration, trace identifiers, and limited operational counts. WingDex does not include request bodies, photos, coordinates, location searches, file names, or notes in its application logs.
  • Device storage: The web app uses first-party cookies and browser storage for sessions, preferences, and limited content caches. The iOS app stores authentication tokens in the system Keychain and may keep a local cache of your WingDex account data. Photos shared to the iOS app may be staged temporarily on your device while the app imports them. We do not use third-party tracking or advertising cookies.

3. How we use your information

  • Provide, operate, and maintain the WingDex application and its features
  • Authenticate your identity and manage your account
  • Identify birds from your photos on your device, without uploading the image
  • Import and export birding records at your request
  • Suggest outing names and search for places
  • Display species information, media, and related content
  • Diagnose failures and understand aggregate service operation
  • Monitor and protect the security and integrity of the Service
  • Receive and respond to private questions and privacy requests
  • Comply with legal obligations

4. Photo handling

Bird identification runs entirely on your device using a model the web app downloads once and the iOS app ships with. The photo you identify is not transmitted to us or to any third party for identification. We do not use your photos to train AI models. The web app processes selected photos in local browser memory. The iOS share extension may temporarily copy selected photos into the WingDex app group on your device until the app accepts and removes them. To prevent accidental duplicate imports, we store a file fingerprint hash and related metadata such as capture time and location, when present, but not the image contents.

5. Third-party services

WingDex relies on third-party services to deliver its functionality. These services may receive limited data as necessary:

  • Cloudflare: WingDex uses Cloudflare for website delivery, DNS, edge computing, databases, object storage, rate limiting, and operational logging. Cloudflare processes network and request information such as IP address, request URL, user agent, timestamps, and security metadata to provide and protect these services. Its retention varies by data type, configuration, operational need, and legal obligation.
  • Wikimedia Foundation: When WingDex displays Wikipedia descriptions or Wikimedia Commons images, your device may request them directly from Wikimedia. Wikimedia therefore receives the requested species or media URL and ordinary request information such as your IP address, user agent, and timestamp under its own privacy policy.
  • eBird / Cornell Lab of Ornithology: WingDex includes taxonomy and species identifiers derived from eBird/Clements data. Using that bundled data and importing an eBird CSV into WingDex do not contact eBird. If you follow an optional eBird species link, your device contacts eBird and its terms and privacy practices apply.
  • BirdLife International: WingDex provides optional links to species factsheets on BirdLife's DataZone. WingDex does not place your photo or coordinates in those links. If you follow one, your device contacts BirdLife and may disclose ordinary request information such as IP address, user agent, timestamp, and referrer.
  • iNaturalist Open Data: WingDex's identification model was trained using images from the iNaturalist Open Data dataset, and its bundled geographic prior was derived from iNaturalist occurrence records. Identification and prior lookup run locally, so WingDex does not automatically send your photo, coordinates, or identification request to iNaturalist. If you follow an external iNaturalist link, your device contacts that site under its own privacy practices.
  • Geoapify: When you submit a typed place-name search, WingDex's server sends the query and technical API-request information to Geoapify. WingDex does not include your photo, photo coordinates, or WingDex account data in that request, and Geoapify ordinarily sees the server's network address rather than your device's IP address. Geoapify states that it stores request bodies, headers, IP addresses, and timestamps for access control, usage counting, troubleshooting, and service improvement, and that successful-request data is generally retained no longer than 24 hours to produce aggregated usage statistics. Other records may follow different retention requirements under Geoapify's privacy policy.
  • OpenStreetMap and Nominatim: Suggesting an outing name from photo coordinates runs on WingDex infrastructure using a locally hosted database derived from OpenStreetMap data; coordinates are not sent to OpenStreetMap or a third-party geocoding API. The database incorporates Nominatim's published Wikimedia-importance values to rank otherwise similar results. OpenStreetMap data is © OpenStreetMap contributors and available under the Open Database License (ODbL) 1.0. WingDex publishes its reproducible build method and related notices in scripts/osm-places/build-global.sh.
  • Google Maps: The web app provides optional links that include an outing's precise coordinates. If you follow one, your device sends those coordinates and ordinary request information to Google Maps under Google's privacy policy.
  • Apple MapKit and Apple Maps: The iOS app uses MapKit to display maps for saved outing coordinates. MapKit may send those coordinates and ordinary device and request information to Apple to provide map content. If you choose to open the location in Apple Maps, WingDex also passes the coordinates and outing name to Apple Maps. Apple's privacy policy applies.
  • Social-login providers: WingDex may offer GitHub, Google, and Apple sign-in. If you choose one, WingDex and that provider exchange a provider-issued account identifier, authentication tokens, and profile fields authorized for login, such as name, email address, and profile image. The provider also learns that you initiated a WingDex sign-in and receives ordinary network and device information. Each provider processes information under its own privacy policy, and you can review or revoke WingDex's access through the provider's account settings.
  • Private contact services: The private contact form linked in Section 11 is hosted separately on Cloudflare. It stores your name, email address, message, user agent, referrer, and submission time in Cloudflare KV, sends your name, email address, and message through Resend for email delivery, and sends a challenge token and your IP address to Cloudflare Turnstile for abuse prevention. Cloudflare and Resend process this information under their own privacy policies.

6. Data sharing and disclosure

We do not sell, rent, or trade your personal information. We may share information only:

  • With Cloudflare and authentication providers as described in Section 5, solely to operate and secure the Service or complete a login you choose
  • With Geoapify when you submit a typed location search; location name suggestions from photo coordinates do not involve Geoapify
  • With Wikimedia when your device requests species descriptions, images, or image-license information
  • With Google Maps when you choose to follow a web map link containing precise outing coordinates
  • With Apple when the iOS app uses MapKit to display saved outing coordinates or you choose to open a location in Apple Maps
  • With Cloudflare Turnstile and Resend when you submit the private contact form, as described in Section 5
  • With a third-party website when you choose to follow an external link
  • If required by law, regulation, legal process, or governmental request
  • To protect the rights, property, or safety of WingDex, its users, or the public

7. Data retention

Account and birding records remain in WingDex's live database until you delete the records, delete a registered account, or ask us to remove them. Guest users can delete their birding records in the app, and those records may instead be merged into a registered account when they sign up. When in-app account deletion succeeds, WingDex deletes the live account record and its associated birding data, sessions, passkeys, authentication tokens, linked-provider records, and import receipts. Private contact submissions stored in Cloudflare KV currently have no automatic expiration and remain until manually deleted; Cloudflare Turnstile and Resend may retain their own processing records under their policies. Operational logs, other provider records, and backup data may remain for the retention periods required by the relevant provider's configuration, security, recovery, or legal practices. WingDex does not retain the original eBird CSV after processing or cache Geoapify responses.

8. Your rights

Depending on your jurisdiction, you may have the right to access, correct, delete, or export your personal data, or to object to certain processing. To exercise these rights, contact us as described in Section 11.

9. Data security

We implement reasonable technical and organizational measures to protect your data, including encrypted transport (HTTPS/TLS), secure authentication, and access controls. No method of transmission or storage is 100% secure, and we cannot guarantee absolute security.

10. International data transfers

WingDex is hosted on globally distributed Cloudflare infrastructure. Cloudflare states that it primarily stores information in the United States and European Economic Area and may process or transfer it elsewhere using the safeguards described in its privacy policy. Your data may therefore be processed in jurisdictions outside your country of residence, which may have different data protection laws.

11. Changes and contact

We may update this policy from time to time. Material changes will be reflected in the "Last updated" date above. For private questions or requests, use the private contact form. For public project questions, open an issue on the WingDex GitHub repository.