Migration ran in three parallel tracks: domain swap, SDK install, and analytics cut-over. Jefit’s engineers didn’t have to re-key thousands of long-form destinations or write any fingerprinting plumbing on the app side — the SDK does the resolving, Grivn does the matching server-side. A custom subdomain went live behind their CDN within an afternoon.
On iOS, the SDK is a small Universal Link handler that resolves the link on cold start and returns the structured payload to the app:
// AppDelegate.swift
import GrivnDeeplink
Grivn.configure(apiKey: "your-api-key")
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
Grivn.handleUniversalLink(userActivity) { result in
// route to the deferred destination
Router.handle(result.deeplink)
}
return true
}
On Android, the SDK pulls the Play Install Referrer on first launch and reports the install — Grivn matches it server-side against the originating click, no fingerprinting required when the referrer is present:
Custom domain end-to-end. Webhooks stream into Jefit’s warehouse. The team kept their existing dashboards — Grivn slotted in behind, not on top of, the analytics layer.