Skip to content

Migrate from Firebase Dynamic Links

Firebase Dynamic Links was deprecated by Google in August 2025. If you are still using it, now is the time to migrate.

Firebase conceptTolinku equivalent
Firebase projectAppspace
Dynamic Links domain (xxx.page.link)Tolinku subdomain or custom domain
Firebase API keyAPI key (tolk_pub_ / tolk_sec_)
Dynamic Link (long or short)Route (static or dynamic)
Firebase SDK (Dynamic Links module)Tolinku SDK
Firebase Analytics eventsCustom events via analytics/track
  1. Create your Appspace

    Sign up at app.tolinku.com and create an Appspace. Configure iOS (Bundle ID, Team ID, App Store URL) and Android (package name, SHA-256 fingerprint, Play Store URL) settings.

  2. Set up your domain

    Use your Tolinku subdomain or add a custom domain. If you had a custom domain with Firebase, you can repoint it to Tolinku.

  3. Map your Dynamic Links to routes

    Firebase Dynamic Links used a URL format like:

    https://example.page.link/?link=https://myapp.com/product/123&apn=com.example.myapp&isi=123456789

    In Tolinku, this becomes a dynamic route:

    • Prefix: product
    • Path pattern: product/:id
    • URL: https://myapp.tolinku.com/product/123

    Firebase’s query parameters (apn, isi, ibi, ofl) are replaced by Appspace-level settings (package name, Bundle ID, fallback URL).

  4. Remove the Firebase Dynamic Links SDK

    PlatformRemoveInstall
    iOSFirebaseDynamicLinks pod/SPMTolinkuSDK via SPM
    Androidcom.google.firebase:firebase-dynamic-linkscom.tolinku:sdk
    Flutterfirebase_dynamic_linkstolinku
    React Native@react-native-firebase/dynamic-links@tolinku/react-native-sdk
  5. Update initialization

    // Before (Firebase)
    FirebaseDynamicLinks.getInstance()
    // After (Tolinku)
    Tolinku.configure(apiKey = "tolk_pub_your_key", context = this)
  6. Update deep link handling

    // Before (Firebase)
    Firebase.dynamicLinks.getDynamicLink(intent).addOnSuccessListener { data ->
    val deepLink = data?.link
    }
    // After (Tolinku)
    val uri = intent.data
    val path = uri?.path // "/product/123"

    For deferred deep linking:

    // Before: Firebase handled deferred links automatically in getDynamicLink()
    // After (Tolinku)
    val link = Tolinku.deferred.claimByToken(referrerToken)
    if (link != null) {
    navigateTo(link.deepLinkPath)
    }
  7. Configure Universal Links and App Links

    Firebase auto-hosted the AASA and assetlinks files. Tolinku does the same. Verify:

    • Your AASA file is accessible at https://your-domain/.well-known/apple-app-site-association
    • Your assetlinks file is accessible at https://your-domain/.well-known/assetlinks.json
    • Update your Associated Domains entitlement (iOS) to point to the new domain.
    • Update your intent filter host (Android) to the new domain.
  8. Design landing pages

    Firebase showed a basic interstitial page. Tolinku lets you design custom landing pages with the visual builder. Create branded pages with product previews, app screenshots, and download buttons.

  9. Test everything

    • Test Universal Links on iOS and App Links on Android.
    • Test deferred deep linking on fresh installs.
    • Verify analytics events are being tracked.
    • Check that existing shared links redirect correctly (or update them).

Firebase Dynamic Links on the xxx.page.link domain will stop working when Firebase shuts down the service. For links you cannot update (shared in old emails, social posts, etc.):

  • If you own the custom domain, point it to Tolinku and create matching routes.
  • For links on the page.link domain, there is no migration path after shutdown. Prioritize updating links in places you control (website, emails, app store listings).
  • Consider setting up a redirect from your website’s old link paths to the new Tolinku URLs.

If you were using Firebase Analytics for ecommerce tracking (purchase, add_to_cart, etc.), you can migrate to Tolinku’s built-in ecommerce analytics on paid plans. Tolinku supports 13 ecommerce event types that map closely to Firebase’s standard ecommerce events:

Firebase eventTolinku equivalent
add_to_cartecommerce.addToCart()
remove_from_cartecommerce.removeFromCart()
begin_checkoutecommerce.beginCheckout()
add_payment_infoecommerce.addPaymentInfo()
purchaseecommerce.purchase()
refundecommerce.refund()
view_itemecommerce.viewItem()
add_to_wishlistecommerce.addToWishlist()
searchecommerce.search()

The main advantage of using Tolinku for ecommerce tracking is that revenue is automatically attributed to your deep link campaigns, giving you a complete picture from click to purchase.