This article lists what the Userorbit iOS and Android SDKs store on the device and send to Userorbit, what the iOS privacy manifest declares, and how to pause collection until a person consents. Use it when you fill in App Store privacy details or the Google Play Data safety form.

What the SDKs send with every event

DataProperties
EventThe event or screen name, the properties you pass, a unique event ID and the time it happened
IdentityAn anonymous ID, or the user ID you pass to identify
Device ID$device_id, a random ID created by the SDK on first launch
Session$session_id
App$app_name, $app_version, $app_build_number, $app_namespace
Device$os, $os_version, $model, $manufacturer, $brand, $device_type, $screen_width, $screen_height, $screen_dpi
Locale$locale, $timezone
Library$lib, $lib_version

The device ID is generated by the SDK. It isn't the advertising identifier (IDFA or the Google advertising ID), the iOS identifier for vendor, or the Android ID, and the SDKs don't read any of those. The device ID stays the same after reset and is removed when the app is uninstalled.

What depends on the features you use

  • identify: the user ID, plus email, name and attributes when you pass them.
  • Surveys: the person's answers.
  • Feedback: the title, description, chosen board, screen name, and a screenshot of your app unless removed or turned off.
  • Messenger: questions asked to Ask AI, support messages, and any screenshot the person attaches.
  • Announcements: which announcements the person opened and their reactions.

What the SDKs store on the device

PlatformLocation
iOSApplication Support, or the storageDirectory you configure
AndroidfilesDir/userorbit in your app's private storage

The SDKs store the event queue (up to 1,000 events by default), unsent survey answers, the anonymous and device IDs, the opt-out state, properties you registered with register, a session token for surveys and support, and when the person last opened the announcements feed. Nothing is written to shared storage, the keychain or the clipboard.

The iOS privacy manifest

The iOS package ships PrivacyInfo.xcprivacy. Xcode merges it into your app's privacy report. It declares:

  • no tracking, and no tracking domains
  • Product Interaction, linked to the person, used for analytics
  • Device ID, linked to the person, used for analytics
  • no required-reason APIs

The manifest covers what the SDK always collects. If you pass email or name to identify, or use feedback and the messenger, declare those data types for your app too. For example, email is Contact Info, and feedback text, support messages and screenshots are User Content. Your App Store answers depend on how your whole app uses the data, so check them against your own privacy policy.

Google Play Data safety

For Android, the same split applies. The SDK always collects app interactions and a device ID for analytics. Add personal info, messages or photos to your Data safety answers when you send email or name with identify, or use feedback and the messenger. The default API host, https://api.userorbit.com, encrypts all traffic in transit.

To start with collection off, pass optOut: true (iOS) or optOut = true (Android) in UserorbitConfig. Then turn it on after the person agrees:

Userorbit.shared.optIn()   // start collecting
Userorbit.shared.optOut()  // stop collecting
Userorbit.shared.isOptedOut
swift

optOut stops all sending, deletes queued events and unsent survey answers, and starts a new anonymous identity. The choice is saved on the device, so it survives app restarts.

Filter or edit events before they leave the device

Use beforeSend to change or drop events. Return the event, edited if needed, to keep it. Return nil (iOS) or null (Android) to drop it.

UserorbitConfig(accountId: "YOUR_ACCOUNT_ID", beforeSend: { event in
    event.name == "Payment Details Viewed" ? nil : event
})
swift

For deleting a person's data from Userorbit, see the Privacy & Compliance articles in this help center.

Was this helpful?