- No IDFA and no App Tracking Transparency prompt. The install id is a random id stored in the app.
- Events are queued on the device and sent in batches. They survive offline periods and app restarts.
- The client runs in Dart. The plugin’s native code only supplies the Apple Search Ads token, SKAdNetwork conversion value updates, the Play Install Referrer, the URL that opened the app and device fields.
- Flutter 3.38 or later, iOS 13+ and Android 5.0 (API 21)+.
Setup
1
Turn on Analytics for the app
In Appeeky, open the app under My Apps → Attribution and click Turn on attribution. Copy the publishable key (
apk_pub_…). See the Quickstart for the API call.2
Add the package
http and shared_preferences. On iOS it works with both CocoaPods and Swift Package Manager.3
Add the postback keys on iOS
Add these keys to An app can name only one endpoint. Leave the keys out if another provider already receives the copies, and use your own registrable domain when you self-host.Nothing has to be added to
ios/Runner/Info.plist, so iOS sends copies of winning SKAdNetwork and AdAttributionKit postbacks to Appeeky:AppDelegate, SceneDelegate or the Android manifest. The plugin reads the URL that opened the app itself and never consumes it, so Flutter’s own deep linking and deep link packages keep working.4
Initialize the SDK and link RevenueCat
identify again with the new id after Purchases.logIn(), and pass null on logout. With Superwall, pass the same user id you give Superwall.shared.identify(userId: ...).The SDK sends to https://ingest.appeeky.com/v1/ingest. For a self-hosted server, pass endpoint: 'https://analytics.example.com/v1/ingest'.5
Track screens
Add the navigator observer to record a screen for each named page route:Dialogs, bottom sheets and routes without a name are skipped. Pass
nameExtractor to map RouteSettings to your own names, or routeFilter to choose which routes count. With go_router, name your routes and add the observer to GoRouter(observers: [...]).Methods
_, ., : and -, up to 64 characters. Property values are strings (up to 512 characters), numbers, booleans or null.
Ad revenue
Options
Automatic Events
Attribution
Attribution is collected once, on the first launch. Each source has 3 seconds to answer.
A smart link with an in-app destination can route the user on the first launch. This works on Android, through the install referrer:
SKAdNetwork conversion values
On iOS the SDK keeps the conversion value up to date. Values only go up:purchased and trialStarted only change the conversion value. Revenue comes from RevenueCat or Superwall, so nothing is counted twice.

