# Deferred Deep Link Not Firing After Install? > Fix deferred deep links that fail after app install. Troubleshoot SDK initialization, clipboard access, Play Install Referrer, and real-device testing. - Canonical: https://redirectly.app/debug/deferred-deep-link-not-firing - Site: [Redirectly](https://redirectly.app) — deferred deep linking for Flutter & React Native Complete troubleshooting guide for deferred deep link failures. Learn about SDK initialization, clipboard access, Play Install Referrer, real device testing, and dashboard debugging. ## Why deferred deep links fail after installation ### Link opens but deep link data is not passed If your app opens but doesn't navigate to the intended deep link destination, the attribution data failed to transmit from the link to your app on install. Deferred deep links require data to survive the app install process. This depends on SDK initialization timing, platform-specific referral mechanisms, clipboard access, and proper handling in your app code. ### SDK Init SDK must initialize before the app renders. Delayed init can cause referral data to be lost. ### Referrer Source iOS uses clipboard; Android uses Play Install Referrer. Both must be properly configured. ### Callback Handler App must listen for and handle deep link data callbacks from the SDK. ## Step-by-step troubleshooting ### 1. Initialize SDK at app startup SDK must initialize before any views render or callbacks are registered. - Call Redirectly.init() or equivalent SDK method in your main app widget/activity - For Flutter: Call in main() before runApp(). For React Native: Call in App.js before rendering. - For native iOS: Call in AppDelegate application(_:didFinishLaunchingWithOptions:) - For native Android: Call in MainActivity onCreate() or Application onCreate() - Verify init is not deferred by loading screens, state managers, or async operations ### 2. Request clipboard permission on iOS Redirectly uses clipboard to pass deferred link data. Request permission in Info.plist. - Add to Info.plist: NSPasteboardUsageDescription or NSPrivacyAccessedAPITypes entry - Include purpose: "To detect and attribute app installs from links" - User will see permission prompt on first app open - Without permission, fallback mechanisms still work but attribution may be limited - Grant permission when prompted for best results ### 3. Enable Play Install Referrer on Android Android needs Google Play Services for referral data. Configure your build.gradle. - Add to build.gradle: `implementation 'com.google.android.gms:play-services-ads:...'` or play-services-basement - Redirectly SDK will automatically use Play Install Referrer API - Verify referrer is passed: Check Redirectly dashboard logs - Test on real device with Google Play Store installed - Emulator with Play Services may not properly simulate referrer behavior ### 4. Test on real device with proper flow Emulators do not properly simulate deferred deep link behavior. Real devices required. - Fully delete your app from the device (Settings > Apps > Uninstall) - Open a link from Safari (iOS) or Chrome (Android) pointing to your Redirectly link - If prompted, choose "App Store" / "Play Store" - do NOT open the link yet - Install your app from App Store or Play Store - Launch the app - if configured correctly, you should see the deferred deep link data ### 5. Monitor with Redirectly dashboard and app logs Verify link tracking and data delivery via logs and dashboard analytics. - Go to Redirectly dashboard and create a test link - Enable debug logging in your app (check SDK documentation) - Add console.log or print statements in your deep link callback handler - View log output to see if data is received from SDK - Check Redirectly dashboard for link clicks, installs, and conversion events ## Common causes of deferred deep link failures ### SDK not initialized at startup **Cause:** Init called too late or after app views render **Fix:** Move SDK init to app entry point before any UI rendering ### No callback handler registered **Cause:** App not listening for deep link data from SDK **Fix:** Register deep link callback handler in your SDK init or setup code ### Testing on emulator/simulator **Cause:** Emulators do not simulate referrer APIs or clipboard correctly **Fix:** Always test on real device. Emulator may show false negatives. ### No clipboard permission on iOS **Cause:** User denied or app did not request clipboard access **Fix:** Request UIPasteboard permission in Info.plist and prompt user ### Play Install Referrer not configured on Android **Cause:** Google Play Services not included in app dependencies **Fix:** Add Google Play Services to build.gradle and rebuild ### Testing by re-opening the app (not install from store) **Cause:** Deferred deep links only fire on fresh install, not app update **Fix:** Fully delete and reinstall app from App Store or Play Store ### Deep link data callback throws error **Cause:** Callback handler has syntax errors or crashes **Fix:** Check app logs for exceptions in deep link handler ### Deep link bundle ID or app ID incorrect in Redirectly **Cause:** Configuration in Redirectly dashboard does not match app **Fix:** Verify bundle ID in Redirectly matches exactly your app bundle ID ## Deferred deep link fix checklist - SDK initialization called at app startup before any views render - Clipboard permission requested on iOS (Info.plist configured) - Deep link callback handler is registered with the SDK - Callback handler has no syntax errors or exceptions - Google Play Services included in Android build.gradle - Testing on real device (not emulator or simulator) - App completely deleted before each test install - Link clicked from Safari (iOS) or Chrome (Android) - App installed fresh from App Store or Play Store - Deep link data expected after first app launch - Redirectly dashboard shows link clicks and install events - App logs show deep link data callbacks executing - App bundle ID matches Redirectly dashboard configuration - No network or permission restrictions blocking Redirectly API calls ## Debug deferred deep links with Redirectly Use Redirectly's dashboard to track link clicks, app installs, and verify deferred deep link delivery: - [Flutter Deferred Deep Linking](https://redirectly.app/flutter-deferred-deep-linking.md) - [React Native Deferred Deep Linking](https://redirectly.app/react-native-deferred-deep-linking.md) ## Frequently asked questions ### Why does deferred deep link work in development but not in production? Ensure your production app is signed with the same key as your development build. Different signing keys result in different bundle/package identifiers that Redirectly cannot recognize. ### Can I test deferred deep links on the same device? Not really - deferred deep links require the app to be completely uninstalled. Testing on the same device requires full delete and reinstall from app store, which is slow. Use multiple test devices. ### What if my app handles deep links correctly but Redirectly does not show conversions? Check Redirectly dashboard for link clicks and install events. If clicks show but installs do not, the referrer mechanism may not be working. Verify Play Install Referrer on Android or clipboard on iOS. ### How long does deferred deep link data persist? Deferred link data typically persists for 24-48 hours after app install. After that window, the link data expires and the app will not receive deep link information. ### Can I use deferred deep links with user login? Yes. Store the deep link data in your app state or preferences. After user logs in, navigate to the saved deep link destination. This is useful for onboarding flows. --- Full site index for AI agents: https://redirectly.app/llms.txt