DropplinkDocsPowered bydropp.

Test and launch

Testing your integration

Test an install, a deferred deep link and an App Link before you release.

Test these before you release: that a new install is attributed, that it opens the right screen (the deferred deep link), that a link opens the installed app (the direct deep link), and, if you use them, that events and users arrive. It takes about 15 minutes on one phone.

Before you start#

  • Create a test link in Links with a deep link path, like /product/123, so you can see the right screen open.
  • Turn on debug logging: debug = BuildConfig.DEBUG on Android, debug: true on iOS while testing, kDebugMode in Flutter, or __DEV__ in React Native.
  • Use a real phone. Emulators and simulators work for the SDK itself, but most of them can't install from the Play Store.

Find the install ID#

With debug on, the SDK logs this install's ID and the server's answer on every launch:

Dropplink: install id 6f1c2a9e-3b7d-4c51-9a8e-2d4f6b1c0e73 (paste into Dropplink → Install debugger)
Dropplink: init 200 attributed via install_referrer, link 6711a0…, deep link /product/123
PlatformWhere to look
Android, Flutter, React Native on AndroidLogcat, filtered by the tag Dropplink: adb logcat -s Dropplink
iOS, Flutter, React Native on iOSXcode's console, or Console.app filtered by subsystem:app.ondropp.dropplink

You can also show it on a debug screen in your app with getInstallId().

  1. Start clean

    Uninstall the app from the phone.

  2. Tap your test link

    Open it from a chat or notes app, not by typing it into the browser. It should take you to the Play Store or App Store.

  3. Install the app and open it

    • Android: install from a Play internal testing track, so the Play Store passes the install referrer. An APK installed from Android Studio or with adb install gets no referrer, and is matched by network instead.
    • iOS: install your build from Xcode or TestFlight, on the same Wi-Fi or mobile network you tapped the link on, within your attribution window.
  4. Check the result

    The log shows attributed, and your deep link listener opens the test link's screen with isDeferred set to true. Paste the install ID into the dashboard's Install debugger to see why it matched.

With the app installed, tap the test link again in a chat or notes app. The app should open directly, without a browser, and the listener should get the link with isDeferred set to false.

If a browser opens instead, the domain isn't verified for your app:

  • Android 12 and up: run adb shell pm get-app-links com.yourbrand.app. Your link domain should show verified. If it doesn't, check that the SHA-256 fingerprint of the certificate this build was signed with is in Settings → Project details.
  • iOS: tap the link from Notes or Messages. Typing it into Safari's address bar never opens apps. Check that the Associated Domains entry matches your link domain exactly.

Test 3: events and users#

After Test 1, with the same install:

  1. Log in and track

    Sign in to your app with a test account (your app calls identify), then do something that calls track, like adding to the cart. The log shows the identify, then events 200: 1 accepted.

  2. Send a test purchase from your server

    Send a purchase for the same user ID with POST /v1/s2s/events, using a test order ID.

  3. Check the Install debugger

    Refresh the install. User and revenue credit shows your test user and the link's channel with First touch. Latest events shows the app event marked App and the purchase marked Server, both credited to User's creator.

One test user per install

An install that logs in as more than 3 users in a day is flagged and stops changing credit. Use a fresh install for each test user.

The Install debugger#

Paste an install ID into Install debugger in the dashboard to see:

  • whether the install was attributed or organic, how it was matched, and why, with a suggested fix when something is wrong;
  • the device, and on Android the Play Store install referrer it sent;
  • whether the deferred deep link was delivered to the app;
  • every tap that was considered, with its match score;
  • the signed-in user, and which link's creator gets their revenue (details);
  • the install's last 50 events, from the app and from your server, with revenue and who each was credited to.

The page's URL includes the install ID, so you can send it to a teammate.

Run a few installs, on both platforms

Test Android and iOS separately, since they're matched differently. A few installs from different links and channels give you confidence that the counts in the dashboard are right before real traffic arrives.

Something not working? See Troubleshooting.

Something unclear? Tell us.Powered bydropp.