SmartLink is the link layer for modern apps. Deep links, deferred deep links, and attribution -- engineered for product teams who refuse to lose users between web and app. One SDK. Every platform. Zero dropped sessions.
A single URL holding your destination, fallback, campaign, and parameters. Generate by hand, by API, or in bulk via CSV.
Tap on iOS opens the app. Android with no install? Send to store, then route post-install. Desktop? Web fallback.
Every install, click, conversion tied to its origin. Slice by campaign, channel, creative -- stream events to your warehouse.
A user clicks a link, hits the App Store, installs your app, opens it -- and lands exactly where the link pointed. We hold their context across the install boundary so attribution doesn't break and onboarding doesn't reset.
Apple Universal Links, Android App Links, custom URI schemes, and a graceful web fallback for everything else. We handle manifest files, AASA configs, and edge cases so your team ships once.
Every click attributed to a campaign, channel, and creative. Stream events into BigQuery, Snowflake, or your webhook of choice.
No cookies, no ad IDs. Match users across web-to-app with IP subnet, screen resolution, timezone, and locale signals. CGNAT-aware.
Group links into campaigns. Track attribution across email, social, SMS, and paid channels with real-time conversion data.
Flutter SDK with separated callbacks for direct and deferred deep links. Five lines to install, one method to handle a route. Open source, semver discipline, no surprise breaking changes.
Track clicks, installs, conversions, and match scores. Know exactly which links drive results with live dashboard.
Drop-in Flutter SDK with separated callbacks for direct and deferred deep links. Open source, no vendor lock-in.
→ Browse SDK reference01final sdk = SmartLinkSdk(); 02 03// initialize with separated callbacks 04await sdk.initialize({ 05 apiKey: 'sk_live_...', 06 onDeepLink: (data) { 07 // direct deep link (app installed) 08 navigate(data.path); 09 }, 10 onDeferredDeepLink: (data) { 11 // deferred (post-install match) 12 navigate(data.path); 13 }, 14});
01import { smartlink } from '@smartlink/sdk' 02 03// create a link with deferred routing 04const link = await smartlink.create({ 05 destination: '/events/music-fest-42', 06 fallback: 'https://allevents.in', 07 campaign: 'summer-launch-ig', 08 defer: true, 09}) 10 11console.log(link.url) // → trl.lk/8aB3z
01import io.smartlink.sdk.TrailLink 02 03// in your Application onCreate 04TrailLink.init(this, "sk_live_...") 05 06TrailLink.onRoute { route -> 07 navController.navigate(route.path) 08 analytics.track("link_opened", route.params) 09}
01import TrailLink 02 03// in your AppDelegate or SceneDelegate 04TrailLink.shared.handle(url) { route in 05 guard let path = route.path else { return } 06 router.navigate( 07 to: path, 08 params: route.params 09 )} 10}
10,000 routes free, every month, forever. No card. No sales call. No SDK lock-in.