Migrate from Firebase Dynamic Links to Flyn
FDL shut down Aug 25, 2025, inventory your old links, recreate them in Flyn, and repoint your custom domain
Last updated: September 2026
Previewing is free on every plan. Importing needs Pro, Lifetime or Team.
Already have a Flyn account? Open the importer
Pre-Migration Checklist
Complete these steps before starting the migration to ensure a smooth transition.
- 1Inventory every recoverable FDL link from Google Takeout, the Firebase Console, app source, and external materials into one spreadsheet (the live links are already dead)
- 2For each link, record the destination URL and the intended in-app deep-link target
- 3Document your current custom domain DNS settings (screenshot recommended)
- 4Decide whether you need deferred deep linking / attribution, if so, plan an MMP alongside Flyn
- 5If your links use your own branded domain, add it in Flyn (Settings > Domains) before you import
- 6Check your Flyn plan: previewing an import is free, creating the links needs Pro, Lifetime or Team
Step 1: Export from Firebase Dynamic Links
First, get your existing links out of Firebase Dynamic Links so you can import them into Flyn.
Understand what survived the shutdown
Firebase Dynamic Links shut down on August 25, 2025. Every FDL link (page.link and custom-domain) stopped resolving, so there is no live link list to export, recovery means recreating the mappings from whatever records you still have.
Try a Google Takeout export
Google's FDL guide describes an export through Google Takeout: sign in as the project owner, choose Firebase Dynamic Links, and pick your projects. It produces one CSV per domain and can take up to a day. We could not confirm that Takeout still returns data after the shutdown; if it does, upload that file and check the Review step: the deep link column should be mapped to Destination URL and the short link column to Old short link, which carries each link's domain and back-half.
Open the Firebase Console
Go to console.firebase.google.com, select your project, and open Engage > Dynamic Links (if your project still exposes the section). Record every short link, its destination URL, and its deep-link / fallback parameters that are still listed.
Pull from your app and codebase
Search your app source and backend for hardcoded FDL domains (yourapp.page.link or your custom short domain) and any Dynamic Links API calls. These reveal link patterns and deep-link targets you need to recreate.
Gather links from external records
Collect any FDL short links embedded in marketing emails, social posts, QR codes, printed materials, or analytics exports. Build one spreadsheet of: original short link, destination URL, and intended in-app deep-link target.
Step 2: Import into Flyn
Upload your export and Flyn detects the format, maps the columns (you can change any of them), and previews every link before anything is created. Previewing is free; importing needs Pro, Lifetime or Team.
Using your own branded domain? Add it in Settings > Domains before you import (Step 3 lists the DNS records), so the preview can match those links to it. Want to look first? Drop the file on the migration page: it is read in your browser and nothing is uploaded.
Create a Flyn account
Sign up at flyn.to/signup, no credit card required. Free accounts can create up to 25 links a month by hand; importing a file needs Pro, Lifetime or Team (previewing it is free).
Import your inventory
On the Links page, choose Import links and upload the Takeout CSV or your own spreadsheet. Flyn recognizes the column names Google documents for the Takeout file (Short link, Deep link) and finds the URL columns in any other file from their contents; you can change the mapping. You can also create links one at a time in the dashboard or through the Flyn REST API.
Configure deep-link targets
The importer brings in each destination only. Where an FDL link opened your app, set the matching deep-link destination and device routing on the link in Flyn. Flyn supports deep links to 16+ native platforms with no SDK, you only need App Links / Universal Links configured on the app side to open directly in-app.
Preview, then import
The preview shows what will happen to every link before anything is created. Links on your own branded domain can keep their back-halves when that domain is added in Flyn first. Links on page.link cannot move, so each gets a new Flyn link on flyn.co (or a domain you pick in the preview). Choose whether to reuse old back-halves on flyn.co where they are free, and whether a taken back-half is skipped or renamed; existing links are never overwritten. Then start the import and download the report that maps each old short link to its new one. Where you control the domain, the same back-halves rebuild the paths of your old links.
Step 3: Domain & DNS Migration
Only links on your own branded domain can keep working after the move. Add the domain in Flyn and import its links before you switch DNS, so the links are already there when traffic arrives. Links on domains Firebase Dynamic Links owns stay with Firebase Dynamic Links, and printed QR codes that encode those links keep pointing there.
Add your domain in Flyn first
In Flyn, go to Settings > Domains > Add Domain and enter your branded short domain (for example go.yourcompany.com). Custom domains are included on Pro, Lifetime and Team, up to 3 per account. Do this before you import, so the preview matches your links to the domain.
Add the TXT record and click Verify
At your DNS provider, add the TXT record Flyn shows: _flyn on your root domain (_flyn.yourcompany.com, even when the short domain is go.yourcompany.com; many DNS panels want just _flyn as the name) with the flyn-verify value. Click Verify. This proves you own the domain and does not change where your links point.
Point the domain at Flyn
After your links are imported, replace the Firebase Hosting records for that hostname: use a CNAME to cname.flyn.to for a subdomain, or an A record to 76.76.21.21 for a root domain. Keep the hostname the same. Remove any leftover Firebase or Google hosting records on it so the domain resolves to Flyn.
Verify again and test
DNS changes usually apply within minutes but can take up to 48 hours. Click Verify again: Flyn marks the domain Active once it finds the TXT record and the record pointing at Flyn. Then open a few old short links to confirm they redirect.
DNS Record Summary
| Field | Before | After |
|---|---|---|
| Type | A or CNAME | CNAME (subdomain) or A (root domain) |
| Host | go (or your subdomain) | go (no change), or @ for a root domain |
| Target | Firebase Hosting records | cname.flyn.to or 76.76.21.21 |
| Ownership (TXT) | None | _flyn.yourcompany.com with the flyn-verify= value from Settings > Domains |
What Transfers
Here is what carries over from Firebase Dynamic Links to Flyn and what needs to be reconfigured. A back-half can be reused when it uses only letters, numbers, hyphens and underscores and is not reserved for Flyn's own pages; the preview flags the rest, and those links get a new random back-half.
| Item | Transfers | Notes |
|---|---|---|
| Destination URLs | Recreate | FDL is shut down, re-enter long URLs from your inventory or Takeout file |
| Custom slugs | Recreate | Kept on your own domain when the file has the old short links and the domain is added in Flyn first |
| Deep-link targets | Recreate | Re-map app deep links in Flyn (16+ platforms, no SDK) |
| Deferred deep linking | Not a Flyn feature, use an MMP (Branch, Adjust, AppsFlyer) if required | |
| Custom domains | Add it in Flyn, repoint it (CNAME cname.flyn.to, root domain: A record 76.76.21.21) and click Verify | |
| Click analytics | FDL console data is not portable, new clicks tracked in Flyn | |
| page.link short links | page.link is Google-owned and already dead, only custom domains can be reused |
Post-Migration Verification
After completing the migration, work through this checklist to verify everything is working.
- Verify 5-10 recreated short links resolve to the correct destinations
- Confirm app deep links open the intended in-app content (with App Links / Universal Links configured)
- Confirm your custom domain shows a green checkmark in the Flyn dashboard
- Check that new clicks are appearing in Flyn analytics
- Update any app code or backend that referenced FDL domains or the Dynamic Links API
- Update QR codes and printed materials that pointed at dead page.link URLs
Troubleshooting
Common issues and how to resolve them.
Old FDL / page.link links return errors
This is expected, Firebase Dynamic Links shut down on August 25, 2025 and all FDL links (page.link and custom-domain) stopped resolving. There is no way to restore them through Firebase; you must recreate the links in Flyn and, where you control the domain, add it in Flyn, repoint it (CNAME cname.flyn.to) and click Verify.
Recreated links resolve but do not open the app
Standard deep links require App Links (Android) or Universal Links (iOS) configured on the app side. Set up the platform association files for your domain, then point the Flyn deep-link target at the in-app path. This is a one-time app configuration, not an SDK dependency.
Need deferred deep linking that FDL provided
Flyn does not do deferred deep linking (routing a user to in-app content after a fresh install). For that specific use case, add a mobile-measurement platform such as Branch, Adjust, or AppsFlyer, the providers Google itself recommended, and keep Flyn for short links and standard deep links.
Custom domain still not resolving to Flyn
DNS changes can take up to 48 hours. Use a DNS checker (like whatsmydns.net) to confirm the CNAME points to cname.flyn.to (or the A record to 76.76.21.21), check the TXT record at _flyn.yourdomain.com, and remove any stale Firebase/Google hosting records left on that hostname. The domain should show Active under Settings > Domains; if it does not, click Verify there.
Frequently Asked Questions
How do I migrate from Firebase Dynamic Links to Flyn?
Since FDL shut down on August 25, 2025, migration means recreating your links rather than transferring live ones. Inventory your old FDL links (Google Takeout, Firebase Console, app source, marketing materials), recreate them in Flyn by importing a spreadsheet (or through the dashboard or REST API), set deep-link targets, and if you owned a custom domain, add it in Flyn, point it at cname.flyn.to and click Verify.
Can I recover my old Firebase Dynamic Links?
The links themselves cannot be recovered, they stopped resolving on August 25, 2025 and Firebase no longer serves them. What you can recover is the mapping data (destination URLs and deep-link targets) from your Firebase project, app code, and any records, which you then recreate in Flyn.
Will my page.link short links work after migrating?
No. The page.link domain is owned by Google and was decommissioned with FDL, so those exact URLs are permanently dead. Only links on a custom domain you control can be reused, by adding that domain in Flyn, repointing it to Flyn, clicking Verify and rebuilding the slugs.
Does Flyn replace deferred deep linking from FDL?
No. Flyn handles standard deep links (opening content directly in 16+ native apps) but not deferred deep linking, which routes users to in-app content after a fresh install. For deferred deep linking and install attribution, use an MMP such as Branch, Adjust, or AppsFlyer alongside Flyn.
Do my Firebase Dynamic Links analytics transfer to Flyn?
No. FDL's click and conversion data lived in the Firebase console and is not portable. Once your recreated links are live, all new clicks are tracked in Flyn with richer data, real-time streams, city-level geo, and A/B test metrics that FDL never offered.
How long does it take to move from FDL to Flyn?
It depends on how many links you are recreating. The main effort is inventorying your old FDL links. The Flyn importer creates links in batches of 100, so most imports take minutes. Accounts in their first week may have a daily limit on new links; if an import reaches it, the importer stops and lets you download the remaining rows as a file to import once 24 hours have passed. A custom domain waits on DNS, which usually applies within minutes but can take up to 48 hours.
Do I need to rebuild my app to switch from FDL to Flyn?
Not to recreate short links, those are made entirely in Flyn with no app changes. You only touch the app to configure App Links / Universal Links so links open directly in-app, which is standard platform setup and removes the Firebase SDK dependency rather than adding a new one.
Ready to Migrate from Firebase Dynamic Links?
Create a free Flyn account and preview your Firebase Dynamic Links import at no cost. No credit card required to sign up. Importing needs Pro, Lifetime or Team, and most imports take minutes. Accounts in their first week may have a daily limit on new links; if an import reaches it, the importer stops and lets you download the remaining rows as a file to import once 24 hours have passed.
Already have a Flyn account? Open the importer