Convert users from any channel with deferred deep linking

Don't lose users in the App Store. Deferred deep linking safely passes contextual data through the install process so new users land directly on the content they clicked, even on their very first app launch.

The App Store "black hole"

Standard deep links fail gracefully only when the app is already installed. When a prospective user clicks a link without the app, they are bounced to the App Store or Play Store, walk through the download, open the app, and land on a generic home screen. The context of their original click is gone. Multiple independent mobile attribution studies, including AppsFlyer's State of Mobile report and Branch's annual data, put this drop-off between 60% and 80%: four in five people who downloaded specifically to see a product, an invite, or a piece of content never see it because the routing was broken.

Deferred deep linking closes that gap. ChottuLink captures the click context, routes the user to the correct store, and on the first app launch the SDK retrieves the original destination and sends the user directly there. The effect on first-session activation, attribution accuracy, and campaign ROI is immediate and measurable.

The impact is not limited to e-commerce. Mobile growth teams across SaaS, gaming, and media report the same pattern: carefully crafted referral programs, paid acquisition campaigns, and creator partnerships all leak users at the install boundary. Deferred deep linking is the fix that closes the loop, and once implemented, it runs silently on every link without any per-campaign configuration.

How it works

  1. 1. The click. A user taps a ChottuLink URL: from Twitter, an email, an SMS, or a QR code.
  2. 2. The store detour. ChottuLink detects the missing app and routes the user to the App Store or Play Store with the original context persisted.
  3. 3. The first open. Upon first launch, the ChottuLink SDK fetches the deferred payload: destination, parameters, campaign IDs, referral codes.
  4. 4. The destination. The app navigates the user directly to the intended content. No friction, no generic home screen.

How ChottuLink resolves deferred context

When a user taps a ChottuLink link without the app installed, there is no app process to hand data to. The browser forwards them to the App Store or Play Store and the original URL is normally lost. ChottuLink resolves this in two ways depending on what the device makes available.

Deterministic matching is the most accurate path. On Android, the Google Play Install Referrer API passes a string directly from the Play Store download to the first app open, so the originating link is retrieved with 100% certainty. On iOS, Universal Links pass control back to the app when the user already has it installed -- but for new installs, Apple provides no equivalent channel.

Probabilistic matching (fingerprinting) covers the iOS install gap. When the user clicks the ChottuLink URL, the edge node records a fingerprint: device model, OS version, screen resolution, and an anonymised IP hash with a short TTL. When the app opens for the first time and calls ChottuLink.initialize(...), the SDK sends the same signals to the backend, which matches them against the stored click record. Match confidence above the threshold triggers the deferred callback; below it, the SDK fires no callback and the app starts normally.

iOS 14.5+ and ATT: ChottuLink's fingerprint approach does not use IDFA (the identifier that ATT restricts). The signals collected -- model, OS, screen size, anonymised IP -- are not personal data under ATT. Match accuracy on iOS remains above 85% in practice. All fingerprint signals are anonymised, stored for the TTL duration only, and automatically deleted on match or expiry.

SDK integration: one init call per platform

ChottuLink's deferred deep linking fires through the same init call you make once at app startup. No extra configuration beyond registering your bundle ID and package name in the dashboard.

// Init
let config = CLConfiguration(apiKey: "your-api-key")
ChottuLink.initialize(config: config)

class AppDelegate: ChottuLinkDelegate {

    // Called when a deep link or deferred link is successfully resolved
    func chottuLink(didResolveDeepLink link: URL, metadata: [String : Any]?) {

        print("✅ link received: \(link.absoluteString)")

        // Tip: ➡️ Navigate to a specific page or take action based on the link

        if let metadata = metadata {

            print("📦 Metadata: \(metadata)")

            // Metadata contains the following keys (available since v1.0.7+):
            // - isDeferred: Bool         Indicates if the link is deferred
            // - originalURL: String      The resolved destination URL (may be nil if not found)
            // - resolvedAt: Date         Timestamp when the link was resolved
            // - shortLinkRaw: String     The deeplink url which was clicked with all the parameters intact
        }
    }

    // Called when there's an error resolving the deep link
    func chottuLink(didFailToResolveDeepLink originalURL: URL?, error: any Error) {

        print("❌ Failed to resolve deep link: \(error.localizedDescription)")
    }
}

Full install instructions, parameter reference, and advanced callback options are in the Developer Guide. Unity and Capacitor packages are also available. see Multi-Platform SDKs.

Why teams ship it

Higher first-session activation

Users experience the value that made them click within the first 10 seconds instead of bouncing at the home screen.

Accurate install attribution

Know exactly which ad, influencer, email, or social post caused the install. see Advanced Analytics.

Personalized onboarding

Custom per-link parameters let you tailor the welcome flow to the campaign that drove the install.

Referral loops that close

The deferred payload carries the referrer's ID through the install, so the app can credit the inviter and reward the invitee on first open, no manual lookup required.

One link, every channel

The same ChottuLink URL handles users who have the app (Universal Link), users who do not (deferred), web fallback, and QR scan. No per-channel link variants to manage.

Use cases

  • E-commerce: A user taps a product link in an Instagram Story. They do not have the app. ChottuLink routes them to the App Store, they install, and on first open they land directly on that product, not the home screen, not a search results page.
  • SaaS: A team admin invites a colleague via email. The colleague clicks the invite link, downloads the app, and lands in the correct workspace on first launch. The workspace context, org ID, role, invite token, is passed through the deferred payload.
  • Content and media: A creator shares a link to their latest video. Viewers who tap on mobile and do not have the app install it and open directly on that video. Retention from creator-driven installs outperforms paid channels for most media apps.
  • Gaming: A player shares a squad invite. The new player installs, opens, and is placed directly into the inviter's lobby. The inviter is credited for the recruit. Both outcomes happen in the first session.
  • Loyalty and promotions: QR codes on physical packaging carry deferred parameters. A customer scans, installs, opens, and a promo code fires automatically on first launch, tying offline marketing spend to a measurable in-app action.

How ChottuLink compares

Firebase Dynamic Links was the most widely used deferred deep linking service. It was deprecated in August 2023 and shut down in August 2025. Branch and Adjust remain the enterprise options, both require sales calls and minimum spend. ChottuLink is the only self-serve replacement that ships all three resolution methods on both platforms.

ChottuLink Firebase Dynamic Links Branch Adjust
Status Active Shut down Aug 2025 Active Active
Self-serve signup Yes, 60 seconds Was self-serve Sales call required Sales call required
iOS deterministic matching Universal Links Universal Links Universal Links Universal Links
iOS probabilistic matching Yes Yes (deprecated) Yes Yes
Android Play Referrer Yes Yes Yes Yes
In-app browser handling Yes (IG, TikTok, FB) Partial Yes Partial
Context TTL (default) 60 min, configurable 1 hour Configurable Configurable
Custom parameters Any JSON payload Limited KV pairs Any JSON payload Limited
Free tier Forever Free, unlimited links Was free No free tier No free tier
Pricing Transparent Pricing n/a Opaque / negotiated Opaque / negotiated

Sources: Firebase deprecation notice Aug 2023; Branch and Adjust onboarding flows as of Q1 2026.

Frequently Asked Questions

Related features

Stop losing users post-install.

Start free — implement deferred deep linking today and boost first-session conversion.

See Pricing