What changed: Firebase Dynamic Links shut down completely in August 2025. A year later, plenty of teams still haven't finished migrating, and some are only now discovering broken links in old marketing materials. This guide has been updated to reflect that the shutdown is no longer a future event — it's already happened — and to walk you through migrating to Smler whether you're doing this for the first time or cleaning up an incomplete migration.
If you're weighing platforms, we also compare Branch.io to Smler below so you can decide before committing. Before the technical steps, check our broader deferred deep linking guide and our roundup of device-based redirect options.
Firebase Dynamic Links Shutdown: Where Things Stand Now
Firebase Dynamic Links is fully offline as of today — there's no legacy API to fall back on, no export console, and no support channel. If you're reading this because a link stopped working, that's why. Any *.page.link URL, or a custom domain that was pointed at Firebase's Dynamic Links service, now returns an error or a blank page instead of routing users.
The practical impact one year in:
Old marketing assets are silently broken. QR codes on packaging, print ads, and old emails that used Dynamic Links no longer route anywhere.
App Store and Play Store listings that referenced Dynamic Links in screenshots or descriptions need updating.
Deferred deep linking flows built specifically around Firebase's SDK need a full replacement, not a patch.
If you're still comparing options at this stage, our tier list of free Firebase Dynamic Links alternatives and our breakdown of the cheapest Firebase alternative for startups are worth a look before you commit to a rebuild.
Branch.io vs Smler.io: What You Need to Know Before Migrating
Branch.io is the more established platform for enterprise attribution; Smler is the leaner choice for teams that just need reliable deep linking, URL shortening, and analytics. Here's the honest breakdown.
Branch.io Advantages
Mature attribution SDK: Industry-leading mobile measurement partner (MMP) capabilities with advanced attribution modeling
Cross-platform journey orchestration: Sophisticated user journey tracking across web, email, SMS, and in-app channels
Deep integration ecosystem: Pre-built integrations with major ad networks and marketing automation tools
Advanced audience segmentation: Build user segments based on deep link interactions and app behavior
Enterprise support infrastructure: Dedicated account managers and custom SLAs for large organizations
Branch.io Disadvantages
Pricing complexity: Enterprise-tier pricing scales quickly once you need custom domains, webhooks, or meaningful MAU limits
Feature lock-in: Data exports, advanced analytics, and webhook customization are often gated behind higher tiers
Over-engineering for simple use cases: If you only need URL shortening and basic deep linking, the setup overhead outweighs the benefit
Attribution-first focus: Heavily optimized for ad measurement, which is overkill if deep linking is your primary need
Vendor dependency: Proprietary SDK implementation makes any future migration harder
Smler.io Advantages
Transparent, click-based pricing: No hidden MAU charges or features locked behind enterprise-only tiers
Fast migration: Direct API compatibility with Firebase-style link creation means minimal code changes
Full feature access: Deferred deep linking, link-level analytics, custom domains, and webhooks available on paid plans, not gated behind an enterprise tier
TRAI compliance built in: Native support for regulatory-compliant SMS campaigns with custom headers
No vendor lock-in: Standard deep linking protocols mean you're never boxed into one platform
Developer-friendly docs: Clean API reference with code samples for iOS and Android
Bottom line: Choose Branch.io if you're an enterprise with complex attribution needs and a large annual budget for deep linking infrastructure. Choose Smler if you need reliable deep linking, URL shortening, and analytics without that overhead. For most teams migrating off Firebase, Smler covers the core functionality at a fraction of the cost.
Step 1: Reconstruct Your Firebase Dynamic Links Data
You can no longer export Dynamic Links data directly from Firebase — the console and APIs that supported this are offline. If you exported your link configuration before the shutdown, use that file. If you didn't, you'll need to rebuild your link inventory from secondary sources.
Where to Find Your Old Link Structure
Marketing platforms (email tools, ad managers, social schedulers) that stored the original Dynamic Links you sent out
Your own app code — search for
page.linkor your custom domain string across the codebase and CMSAnalytics tools (Firebase Analytics exports, GA4, or any internal event logging) that recorded which Dynamic Links drove installs
Print and packaging assets — QR codes on physical materials often point to Dynamic Links that need to be reissued
Document Your Link Structure
For each link you find, record:
The original long URL and its short link
Custom URL parameters and UTM tags
Platform-specific fallback URLs (App Store, Play Store, web fallback)
Social meta tags (OG titles, descriptions, images)
Campaign associations and naming conventions
Deep link paths and custom schemes (e.g.,
yourapp://product/12345)
This inventory is tedious but it's the foundation for everything else — you can't recreate working links in Smler until you know what the old ones were supposed to do.
Step 2: Custom Domain Transfer and DNS Configuration
One of the biggest migration pitfalls is custom domain handling. Firebase let you use domains like link.yourbrand.com instead of generic *.page.link addresses. Moving these to Smler requires careful DNS reconfiguration.
Common Domain Transfer Pitfalls
Propagation delays: DNS changes can take up to 24-48 hours to fully propagate. Plan the cutover during a low-traffic window so users don't hit broken links mid-change.
Existing link breakage: Every previously shared Firebase link using your custom domain is already dead, since Firebase's service is offline. Recreate the same URL paths in Smler so old links resolve correctly going forward.
Root domain vs subdomain: Smler requires a subdomain (like
link.yourbrand.com) rather than a bare root domain. If you were using a root domain with Firebase, update your links to the subdomain pattern.
Smler supports custom branded domains through a standard CNAME setup, and if your root domain needs to redirect somewhere specific, root routing handles that without extra infrastructure.
Step 3: API Mapping — Firebase Dynamic Links to Smler.io
The core of your migration is translating Firebase Dynamic Links API calls into Smler equivalents. Firebase's link-creation API is retired, so there's nothing to call there anymore — the work is entirely on the Smler side now.
Creating Links in Smler
Full request and payload examples for creating deep links are in the Postman API docs. Smler builds on Universal Links (iOS) and App Links (Android) rather than a proprietary SDK, so the amount of integration code you need is smaller than with most Firebase alternatives. If you want the underlying mechanics before you start wiring up calls, our technical guide to how deep linking works is a useful primer.
Retrieving Link Data: getLink API
Firebase's link-stats endpoint (shown below for reference) is no longer callable — it's included only so you can see what you're replacing:
// Firebase - Get link stats (retired, no longer callable)
const getFirebaseLinkStats = async (shortLink) => {
const response = await fetch( `https://firebasedynamiclinks.googleapis.com/v1/${shortLink}/linkStats?durationDays=7`,
{ headers: { 'Authorization': 'Bearer ' + authToken } } );
return await response.json();
};
Smler approach: hit the get-long-URL endpoint with the short code to retrieve the corresponding long URL and its metadata. The exact request structure is documented in the API docs.
Step 4: Testing Your Migration
Thorough testing is what prevents a migration from creating a second wave of broken links. Test on real devices, not just simulators.
Smler Dashboard Testing
Link validation: Go to Smler dashboard → Links → Create new link, and enable deep linking when you generate the URL.
Device testing:
iOS: test with the app installed and not installed. Confirm Universal Links open the app directly without a Safari redirect — our iOS deep link testing guide covers the full checklist.
Android: confirm App Links open the app automatically without a disambiguation dialog — see our Android testing guide for device-specific edge cases.
Desktop: confirm web fallback URLs display correctly.
Deep link routing: verify custom parameters pass through correctly, test deferred deep linking by installing via a link and confirming routing on first open, and validate that deep link paths land on the correct in-app content.
Analytics: What You Get With Smler
Metric | Firebase Analytics (historical) | Smler Analytics |
|---|---|---|
Click tracking | Real-time, unlimited history | Real-time, with retention tied to your plan |
Geographic data | Country-level | Country and city-level |
Device breakdown | Platform and OS version | Platform, OS, device model, browser |
Conversion tracking | Basic event tracking | Funnel-style analysis with attribution |
Data export | CSV export | API export |
For teams that just want geographic breakdowns, device tracking, and click trends without attribution complexity, Smler's link-level analytics cover it without tier restrictions.
Step 5: Troubleshooting Common Migration Errors
Redirect loops between app and browser
Symptom: Link clicks bounce between your app and web browser instead of settling.
Cause: Misconfigured Universal Links (iOS) or App Links (Android) with incorrect path patterns in your app's association file.
Deep link parameters not passing through
Symptom: The app opens correctly, but custom parameters (product IDs, user tokens) are missing.
Cause: Usually the wrong endpoint is being hit, or the payload is missing the parameter field entirely.
Solution: Send the same payload directly to Smler's API and inspect the response — the mismatch is almost always visible immediately.
Custom domain shows an SSL warning
Symptom: The custom domain resolves but browsers flag a certificate error.
Cause: DNS propagation hasn't finished, or the CNAME record points to the wrong target.
Solution: Double-check the CNAME value against your Smler dashboard settings and wait out the propagation window before assuming it's broken.
Analytics show fewer clicks than expected
Symptom: Click counts in Smler look lower than what you saw in Firebase Analytics.
Cause: Firebase and Smler count clicks differently (bot filtering, pre-fetch requests, and deduplication windows vary by platform).
Solution: Compare trends over a full week rather than absolute numbers day one — the shapes should match even if the totals don't line up exactly.
Feature and Pricing Comparison: Branch vs Smler
Feature | Branch (Free) | Branch (Paid) | Smler |
|---|---|---|---|
Deep Linking | ✅ Basic | ✅ Advanced | ✅ Full |
Deferred Deep Links | ✅ | ✅ | ✅ |
Custom Domains | ❌ | ✅ Enterprise pricing | ✅ Included on paid plans |
Link Analytics | 📊 Basic, limited history | 📊 Advanced | 📊 Full |
Webhooks | ❌ | ✅ Higher tiers | ✅ All plans |
Bulk Shortening | ❌ | ✅ | ✅ CSV/XLSX |
Attribution/MMP | ❌ | ✅ Enterprise | ❌ |
For exact current pricing on either platform, check each provider's pricing page directly — figures move often enough that we won't quote them here. As a rule of thumb, Branch's paid tiers target enterprise attribution budgets, while Smler's plans start affordably and scale with click volume rather than app-wide MAU.
When to Choose Branch vs Smler
Choose Branch if you:
Need enterprise-grade mobile attribution and MMP capabilities
Run large-scale paid advertising campaigns across multiple ad networks
Require sophisticated cross-channel attribution and journey mapping
Have budget for enterprise-level deep linking infrastructure
Choose Smler if you:
Primarily need URL shortening with deep linking capabilities
Want simple, click-based pricing without MAU complexity
Need TRAI compliance for SMS campaigns in India
Prefer straightforward API integration without heavy SDK dependencies
Need bulk URL shortening for campaigns
Quick Smler Migration Checklist
Sign up at Smler
Get an API key from dashboard → Settings → API Keys
Update link creation code to call Smler's endpoints instead of the retired Firebase API
Configure custom domains via the dashboard with CNAME records
Test deep links on real iOS and Android devices
Once your API key and domain are set up, most teams have working links within the hour — the exact timeline depends mostly on how much link inventory you're reconstructing from Step 1. See the iOS and Android integration guides for the implementation details.
FAQ: Migrating Off Firebase Dynamic Links
Is Firebase Dynamic Links still working at all?
No. Firebase Dynamic Links shut down completely in August 2025. There is no legacy API, console, or fallback — any link still pointing to a page.link domain or a custom domain tied to Firebase is broken.
Can I still export my old Dynamic Links data?
Not through Firebase directly. If you exported your configuration before the shutdown, use that file. Otherwise, reconstruct your link inventory from marketing tools, app code, analytics exports, and physical assets like packaging QR codes.
How long does migrating from Firebase to Smler take?
Most of the time goes into rebuilding your link inventory, not the technical integration itself. Once you have your data, connecting Smler's API, setting up a custom domain, and testing on devices typically takes well under an hour.
Is Branch.io or Smler better for replacing Firebase Dynamic Links?
Branch fits teams needing enterprise attribution and ad-network integrations at enterprise budgets. Smler fits teams that mainly need reliable URL shortening, deep linking, custom domains, and analytics without that overhead or pricing complexity.
Will my old Firebase short links work again after I migrate?
Only if you recreate the same URL paths in Smler using your custom domain. Firebase's service itself won't come back online, but you can make a previously shared link resolve correctly again by rebuilding it under the same path.
Conclusion: Choose Your Migration Path Wisely
Migrating off Firebase Dynamic Links isn't optional anymore — the service has been offline for a year, and every day without a replacement means more broken links in the wild. Branch.io offers strong enterprise capabilities but comes with enterprise-level complexity and cost.
For most teams that relied on Firebase for URL shortening, deep linking, and basic analytics, Branch is significant over-engineering. Smler covers the core functionality — intelligent short links, deferred deep linking, custom domains, and detailed analytics — without the attribution complexity or price tag.
Next Steps
Review the Firebase-to-Smler migration documentation in your Smler dashboard
Explore the API reference for detailed endpoint specifications
Read about QR code deep linking strategies if physical assets are part of your migration
Set up real-time webhook notifications for link events
Whether you land on Branch for enterprise attribution or Smler for cost-effective deep linking, the priority now is closing the gap left by Firebase before more of your links quietly fail.
Ready to Migrate from Firebase?
Smler makes Firebase Dynamic Links migration straightforward with API compatibility, transparent pricing, and full deep linking capabilities.
View Pricing Plans | Read Documentation | Contact Support
Published with LeafPad