Skip to main content

Privacy Policy

Version 2.3 • July 2026

Mobile Application & Website — Version 2.0 (Replaces all previous versions)

Operated by Tusker Trails (Pty) Ltd | Governed by the laws of South Africa

Summary

Kruger Companion does not sell your data. Your location is processed locally on your device. Conservation reports are anonymised. Data donation is voluntary. We comply with POPIA (South Africa) and align with GDPR principles.

  • Optional user accounts support Cloud Sync of personal sighting logs and Camp Chat participation.
  • Push notifications are optional and only sent for Camp Chat when explicitly enabled per camp.
  • An optional Referral / Invite programme attributes installs or invite codes so inviting users can earn points and badges; the Top-10 leaderboard requires a separate opt-in.
  • Crash reports are collected via Firebase Crashlytics to improve app stability.
  • Users may permanently delete their account and all associated cloud data at any time from Account Settings in the app or at krugercompanion.co.za/delete-account.

1. Information We Collect

1.1 Location Data (GPS)

Our App requires access to your device's location services to provide core functionality, specifically:

  • Displaying your current position on the map (both online and offline).
  • Calculating distances to points of interest (camps, gates, picnic spots).
  • Navigating along routes within the park.

Important: This location data is processed locally on your device. We do not transmit, store, or share your location history on our servers. Your movement data stays on your phone.

1.2 User Accounts

Creating an account is entirely optional. If you choose to register (via the mobile App or the Website), we collect your email address, a password hash, and a chosen username (alias) to secure your profile. Your sightings are only synced to our secure cloud database if you explicitly turn on the "Cloud Sync" feature. You may log out, disable sync, or permanently delete your account and all associated sightings at any time via the app or krugercompanion.co.za/delete-account.

What is stored at registration

FieldWhere storedPurpose
Email addressFirebase Authentication only (not in Firestore)Login, email verification, password reset
PasswordFirebase Auth (hashed)Authentication
Alias (username)Firestore users/{uid}Display in Camp Chat
newsletterOptIn (boolean)FirestoreOptional newsletter
dataProcessingConsent + timestampFirestoreConsent at registration (required)
syncEnabled (boolean)FirestoreCloud Sync on/off
createdAtFirestoreAccount creation

Important: Your email address is deliberately not stored in Firestore (data minimisation under GDPR/POPIA).

Cloud Sync (Sightings)

When you enable Cloud Sync, your personal sighting logs are stored in users/{uid}/sightings:

  • Animal ID, date/time, GPS coordinates, notes, count
  • Not visible to other app users
  • Only the account holder can read or delete this data

Account deletion

You can permanently delete your account under Account Settings → Delete Account in the app, or on the website at krugercompanion.co.za/delete-account (also available from your dashboard when signed in). This removes:

  • Firebase Auth account
  • Firestore profile (users/{uid})
  • All cloud sightings (users/{uid}/sightings/*)
  • Push token (users/{uid}/private/device)
  • Camp Chat subscriptions
  • Referral profile fields (referral count, invite code, leaderboard opt-in) and related referral attribution records tied to your account

Note: Camp Chat messages you have already sent remain visible in the chat history (with the alias used at the time of sending) until removed by an administrator. They are not automatically deleted when you delete your account.

1.3 User-Submitted Conservation Reports

If you choose to submit sighting reports, invasive species reports, environmental incident reports (trash, road damage, erosion) or disease alerts through the App, the following information is collected at the moment of submission:

  • GPS coordinates of the reported location
  • Photograph (if attached)
  • Report type and description
  • Date and timestamp

All conservation reports are anonymised before processing. No personal identifiers are attached to any report visible to our team or to third parties including SANParks.

1.4 Donated Data

The App includes an optional Donate Data feature. If you choose to activate this feature, you voluntarily share anonymised sighting coordinates, species identifications and timestamps for conservation and research purposes. Data donation is entirely voluntary and the App functions fully without it. See Section 3 for details on how donated data is shared.

1.5 Anonymous Usage Analytics

We collect anonymous, aggregated data about how the App is used — such as which features are accessed and session frequency — to improve the App. This data cannot be used to identify you personally.

1.6 Push Notifications (Camp Chat)

If you enable push notifications for a camp chat room, we collect and store:

  • Expo Push Token — a device-specific identifier used to deliver notifications. Stored in users/{uid}/private/device (not on your public profile).
  • Camp subscription record — which camp(s) you subscribed to, stored in camp_chats/{campId}/subscribers/{uid} including your push token for delivery.

Push notifications are entirely optional. You enable them per camp via the "Push On" toggle in Camp Chat. You can disable them at any time.

We use the Expo Push Notification Service (operated by Expo / 650 Industries) to deliver notifications. Expo processes your push token solely to route messages to your device. Expo Privacy Policy: expo.dev/privacy

We do not use push notifications for marketing or advertising.

1.7 Camp Chat

Camp Chat is an optional community feature available to registered, email-verified users. When you participate, the following data is stored on our Firebase servers:

Messages you send:

  • Message text
  • Your alias (username)
  • Your user ID (UID)
  • Badge name at time of sending
  • Timestamp
  • Optional: reply reference (quoted message text and sender alias)
  • Optional: emoji reactions (your UID + emoji)

Presence data:

While you are actively viewing a camp chat, a lightweight presence record (lastSeen timestamp) is written so other subscribers can receive push notifications when you are not in the chat.

Moderation data (on your profile):

  • User reports from other chat participants
  • Warning count, temporary ban expiry, permanent ban flag
  • Link-sharing permission flag (admin-controlled)

Camp chats require email verification before you can send messages. Messages are visible to all authenticated users in that camp's chat room. Profanity is filtered client-side; repeat violations may result in temporary or permanent bans.

Camp chat messages are not automatically deleted when you delete your account. Previously sent messages remain visible with the alias used at the time of sending.

1.8 Referral / Invite Program

The App includes an optional invitation programme. Registered users may share a personal invite link, QR code, or short invite code with friends. When a new user is successfully attributed to an inviter, the inviter receives referral points. At 10 points, an "Ambassador" badge may be awarded. An optional Top-10 leaderboard (opt-in only) may show a temporary "Top Ambassador" badge while a user remains in the Top 10.

How attribution works

  • Android: A Play Store link or QR code can include an install referrer (ref=<Firebase User UID>). After install and login, attribution is recorded server-side via the Google Play Install Referrer.
  • iOS: App Store links/QR codes open the store only. Attribution requires the new user to enter a 6-digit invite code manually (Settings → Account, after login). Apple does not allow equivalent automatic install attribution via QR/link.

Data we store

  • Inviter identifier (Firebase user ID and/or short invite code on the inviter's profile)
  • Attribution record in referrals/{newUserUid}: referrer UID, referred UID, platform (android/ios), timestamp
  • referralCount on the inviter's profile (server-incremented only)
  • Optional leaderboard flags: leaderboardOptIn and leaderboardOptInAt

Sources

  • Android: Google Play Install Referrer on first launch after install
  • iOS: invite code entered by the new user after registration/login
  • Inviter: generated invite code / share link

Purpose

  • Attribute installs/registrations to an inviter
  • Award referral points, badges, and (if opted in) leaderboard ranking
  • Abuse prevention (e.g. blocking self-referrals; each account can be counted as referred only once)

Visibility

  • Referral attribution records are not public by default.
  • Leaderboard (opt-in only): authenticated users may see chat alias and referral count only — never email or UID.
  • Email addresses are not shared for referral purposes.

Processing runs on Firebase / Google Cloud (including a Cloud Function such as registerReferral), aiming for the africa-south1 (Johannesburg) region where feasible — consistent with Section 3.4.

Leaderboard participation is optional and can be turned off at any time in the App. Referral-related profile fields and attribution records tied to your account are removed or anonymised when you delete your account (see Section 1.2 and Section 5).

2. How We Use Information

We use the information we collect solely for the following purposes:

  • Location data — to show your position on the park map, calculate distances and provide navigation. Processed locally on your device only.
  • User accounts & cloud sync — to authenticate you, sync your personal sighting logs across devices, and manage your profile preferences.
  • Camp Chat — to enable community messaging between authenticated users at each camp.
  • Push notifications — to alert you of new Camp Chat messages when you are not actively viewing the chat (only when explicitly enabled per camp).
  • Referral / Invite programme — to attribute invites, award points and badges, run an optional leaderboard, and prevent abuse.
  • Crash reporting — to diagnose and fix app stability issues via Firebase Crashlytics.
  • Conservation reports — to process, anonymise and display incident data, and to share with SANParks under a formal data sharing agreement.
  • Donated sighting data — to contribute anonymised records to conservation research programmes.
  • Anonymous analytics — to improve App performance and features.
  • Community submissions — to review and publish user-submitted experiences and ratings on our website, as described in Section 4.3.

We do not use your information for advertising profiling. We do not sell your data to any third party.

3. Third-Party Services

3.1 SANParks and Conservation Partners

If you activate the Donate Data feature, your anonymised sighting data may be shared with SANParks Scientific Services and other named conservation partners under a formal Memorandum of Understanding (MOU). Only anonymised data is shared — no personal identifiers are included. You may withdraw consent to future data donation at any time via the App settings.

3.2 OpenStreetMap / Leaflet

The App uses OpenStreetMap and Leaflet for rendering online maps. When fetching map tiles, your IP address may be received by OpenStreetMap servers. This is a standard technical requirement of how map tile services function. No other personal data is shared with OpenStreetMap or Leaflet.

OpenStreetMap Privacy Policy: openstreetmap.org/privacy

3.3 Google Cloud Infrastructure

Server-side data (anonymised conservation reports and donated data) is stored on Google Cloud infrastructure. Google acts as a data processor on our behalf and is contractually bound to process data only as we instruct. We aim to use the africa-south1 (Johannesburg) region where technically feasible. User account data, Camp Chat, and Cloud Sync are handled via Firebase — see Section 3.4.

3.4 Firebase (Google LLC)

We use Google Firebase services as our backend infrastructure:

ServicePurposeData processed
Firebase AuthenticationUser login & registrationEmail, password hash
Cloud FirestoreUser profiles, camp chat, cloud sync, referralsAlias, sightings, chat messages, push tokens, referral counts, attribution records
Cloud FunctionsServer-side referral attributionReferrer/referred UIDs, platform, timestamp
Firebase CrashlyticsCrash & error reportingDevice model, OS version, stack traces, app version

Firebase acts as a data processor on our behalf. Data may be processed in Google Cloud data centres. We aim to use the africa-south1 (Johannesburg) region where technically feasible.

Firebase Privacy Policy: firebase.google.com/support/privacy

Google Cloud Data Processing Terms: cloud.google.com/terms/data-processing-terms

3.5 Expo (650 Industries)

We use Expo Application Services (EAS) for:

  • Push Notification delivery (Expo Push API) — routes camp chat notifications to your device.
  • Over-the-air (OTA) updates — delivers JavaScript bundle updates without a full app store release.

Expo Privacy Policy: expo.dev/privacy

4. Website — Cookies and Local Storage

This section applies to our website at krugercompanion.com and is separate from the mobile App.

4.1 Cookies and Tracking

We use a consent banner to let you control optional storage and analytics. Essential storage is always active; everything else requires your opt-in.

  • Essential storage: We store your cookie consent preference so we do not ask you repeatedly.
  • Functional storage: If you accept functional storage, we save your packing list selections, saved routes, and community voting history in your browser's localStorage for your convenience.
  • Analytics cookies: If you accept analytics, we load Google Analytics (which may set cookies such as _ga) and Umami Analytics to measure traffic and engagement. These tools do not load until you opt in.

Your choice: When you first visit our website, a consent banner lets you choose "Accept All", "Essential Only", or customize each category. You can change your preferences at any time using the cookie icon in the bottom-left corner of the screen.

4.2 Fonts

All fonts are hosted locally on our servers. No requests are made to third-party font services such as Google Fonts.

4.3 Community Features

Our website allows anonymous ratings and experience submissions. Community ratings are stored on our server without any personally identifiable information. When you use the "Share your experience" feature or submit a blog article, you are sending an email directly to us via your own email client. We do not store these submissions on our server until they are manually reviewed and published by our team.

4.4 Website Analytics

If you opt in to analytics, we use the following services:

  • Google Analytics (Google LLC): Measures page views, traffic sources, and general engagement. Google may set cookies and process data in the United States. We use Google Consent Mode so no analytics data is collected until you grant consent. IP anonymisation is enabled.
  • Umami Analytics: A privacy-focused analytics service that helps us understand which pages and accommodation links are most useful. Umami does not use advertising cookies.
  • Anonymous click statistics: When you click "Visit Official Website" or "Book Now" on accommodation pages, we increment an anonymous counter on our server (Firebase/Firestore). No personal information is stored with these clicks.

None of these analytics services load or collect data unless you accept the Analytics category in our consent banner.

5. Data Retention

Data typeRetention
Location dataNever transmitted to our servers. Retained locally on your device only.
User account & cloud sightingsUntil deleted by the user via Account Settings
Push tokenUntil push is disabled or account is deleted
Camp chat messagesIndefinitely (community history); alias remains visible after account deletion
Moderation records (bans, warnings)Until account deletion; reports reset after 7 days
Crashlytics crash reports90 days (Firebase standard)
Newsletter opt-in flagUntil account deletion
Referral attribution & referral countUntil account deletion; then removed or anonymised with the account
Leaderboard opt-in flagsUntil opt-out or account deletion
Anonymised conservation reportsMaximum of 7 years, then deleted or further anonymised
Donated sighting dataMaximum of 7 years
Anonymous usage analytics12 months
Community ratings on the websiteIndefinitely in anonymised form

6. POPIA Compliance

Tusker Trails is committed to compliance with the Protection of Personal Information Act, 2013 (POPIA) of South Africa. In line with POPIA:

  • We collect only the minimum personal information necessary to operate the App and website.
  • All conservation and incident reports are anonymised — no personal information is attached to any report visible to third parties.
  • You have the right to access, correct or request deletion of any personal information we hold about you.
  • Right to deletion: Delete your account at any time via Account Settings → Delete Account in the app, or at krugercompanion.co.za/delete-account (automatic).
  • Right of access: Request a copy of your personal data by emailing hello@krugercompanion.com.
  • Disable push notifications: Turn off push per camp via Camp Chat → Push Off, or delete your account.
  • Leaderboard opt-out: Turn off leaderboard participation at any time in the App (referral attribution for points may continue separately if you use the invite feature).
  • We have appointed an Information Officer responsible for POPIA compliance. Contact details are provided in Section 10.
  • We will notify affected users and the Information Regulator in the event of a data breach, as required by POPIA Section 22.

7. EU Users — GDPR Alignment

For users based in the European Union, we aim to align our data practices with the General Data Protection Regulation (GDPR). The lawful basis for processing your data is either your consent (for functional storage, analytics, data donation, accounts, Camp Chat, push notifications, and leaderboard display) or our legitimate interest / contract performance in operating the App (for essential site operation, crash reporting, community moderation, and referral attribution when you use the invite feature).

Lawful basis by feature

FeatureLawful basis (GDPR)
Account & Cloud SyncConsent (at registration)
Camp ChatConsent + contract performance (use of the feature)
Push NotificationsConsent (explicit opt-in per camp)
Referral attributionContract performance / legitimate interest (feature use; abuse prevention)
Referral leaderboardConsent (explicit opt-in; withdrawable)
CrashlyticsLegitimate interest (app stability)
ModerationLegitimate interest (community safety)

Your rights as a data subject

  • Right to deletion: Account Settings → Delete Account in the app, or krugercompanion.co.za/delete-account (automatic).
  • Right of access: Request via hello@krugercompanion.com.
  • Disable push notifications: Camp Chat → Push Off, or delete your account.
  • Leaderboard opt-out: Disable leaderboard participation in the App at any time.

EU users may exercise all data subject rights under GDPR by contacting us at the address in Section 10.

App Store & Google Play — Data Disclosure Summary

The following summary reflects our disclosures for Apple App Store and Google Play privacy forms:

CategoryCollected?PurposeShared with third parties?
EmailYes (optional)AccountNo (Firebase as processor only)
Name / aliasYes (optional)Camp Chat displayNo
Location (GPS)YesMap, sightings, reportsAnonymised only for conservation reports
PhotosYes (optional)Conservation / infrastructure reportsAnonymised to Google Sheets
Device ID (push token)Yes (optional)Push notificationsYes (Expo as processor)
Crash dataYesApp stabilityYes (Firebase Crashlytics)
User content (chat)Yes (optional)Camp ChatNo

Tracking: No — we do not use advertising tracking frameworks, IDFA, or Google Analytics in the mobile App.

8. Children's Privacy

Our App is intended for general audiences and wildlife enthusiasts. We do not knowingly collect personally identifiable information from children under 13. If you become aware that a child has provided us with personal information, please contact us and we will take steps to delete it.

9. Changes to This Privacy Policy

We may update our Privacy Policy from time to time. You are advised to review this page periodically for any changes. Material changes will be communicated via an in-app notification. The effective date at the top of this document will always reflect the most recent version.

10. Contact Us

Tusker Trails (Pty) Ltd

Email: hello@krugercompanion.com

Information Officer: Alexander Hoppenrath

Postal Address: 1120 Vienna, Austria

Kruger Companion Privacy Policy | Tusker Trails (Pty) Ltd | Effective July 2026 · v2.3