{"id":854,"date":"2026-04-19T17:00:00","date_gmt":"2026-04-19T22:00:00","guid":{"rendered":"https:\/\/tolinku.com\/blog\/?p=854"},"modified":"2026-03-07T03:48:28","modified_gmt":"2026-03-07T08:48:28","slug":"migrate-from-adjust","status":"publish","type":"post","link":"https:\/\/tolinku.com\/blog\/migrate-from-adjust\/","title":{"rendered":"How to Migrate from Adjust to Tolinku"},"content":{"rendered":"\n<p>Adjust is a mobile measurement and attribution platform that includes deep linking capabilities. Like AppsFlyer, many teams using Adjust for deep linking are paying for a full attribution stack when they only need reliable link routing and basic analytics.<\/p>\n\n\n\n<p>This guide covers how to migrate your deep linking from Adjust to Tolinku while handling existing links and SDK dependencies.<\/p>\n\n\n\n<p>For the general migration guide, see <a href=\"https:\/\/tolinku.com\/blog\/migrating-to-tolinku\/\">Migrating to Tolinku from Branch, Firebase, and AppsFlyer<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What You&#39;re Migrating<\/h2>\n\n\n\n<p>Adjust&#39;s deep linking features include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Direct deep linking<\/strong>: Route users to specific app screens via URL schemes or Universal Links\/App Links<\/li>\n<li><strong>Deferred deep linking<\/strong>: Pass link data through the install process<\/li>\n<li><strong>Short links<\/strong>: Branded URLs for marketing campaigns<\/li>\n<li><strong>Link management<\/strong>: Dashboard for creating and managing links<\/li>\n<li><strong>Reattribution<\/strong>: Re-engage lapsed users through deep links<\/li>\n<\/ul>\n\n\n\n<p>The core deep linking functionality maps directly to Tolinku. Attribution-specific features (install tracking, event attribution, fraud prevention) are separate and not part of this migration.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 1: Audit Your Adjust Setup<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Link Configuration<\/h3>\n\n\n\n<p>Document your Adjust link setup:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>App Token<\/strong>: Your Adjust app identifier<\/li>\n<li><strong>Tracker tokens<\/strong>: Unique IDs for each campaign tracker<\/li>\n<li><strong>Deep link paths<\/strong>: URL paths configured for deep linking<\/li>\n<li><strong>Universal Link domain<\/strong>: Your Associated Domains configuration (e.g., <code>adj.st<\/code> or a custom domain)<\/li>\n<li><strong>Custom link parameters<\/strong>: Any custom parameters you pass through links<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Deep Link Handling<\/h3>\n\n\n\n<p>Search your codebase for Adjust deep link integrations:<\/p>\n\n\n\n<p><strong>iOS<\/strong>: Look for <code>AdjustDelegate<\/code> methods, specifically <code>adjustDeeplinkResponse<\/code> and <code>adjustDeferredDeeplinkReceived<\/code>.<\/p>\n\n\n\n<p><strong>Android<\/strong>: Look for <code>OnDeeplinkResponseListener<\/code> and <code>OnDeferredDeeplinkResponseListener<\/code> implementations.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Link Inventory<\/h3>\n\n\n\n<p>Collect all active Adjust links:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Campaign links from the Adjust dashboard<\/li>\n<li>Links generated via the Adjust Link API<\/li>\n<li>In-app generated links (if any)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Set Up Tolinku<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Appspace Configuration<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Create an Appspace at <a href=\"https:\/\/tolinku.com\">tolinku.com<\/a><\/li>\n<li>Configure your iOS Bundle ID, Team ID, and App Store ID<\/li>\n<li>Configure your Android Package Name and SHA-256 fingerprint<\/li>\n<li>Set default fallback URLs<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Domain Setup<\/h3>\n\n\n\n<p>Set up a branded domain (e.g., <code>go.yourapp.com<\/code>):<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Add the domain in <a href=\"https:\/\/tolinku.com\/docs\/user-guide\/domains\/\">Domains<\/a> settings<\/li>\n<li>Create a DNS CNAME record<\/li>\n<li>Wait for SSL provisioning<\/li>\n<\/ol>\n\n\n\n<p>If you used a custom domain with Adjust, you can reuse it after updating DNS.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Route Creation<\/h3>\n\n\n\n<p>Map your Adjust deep link paths to Tolinku routes:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Adjust Configuration<\/th>\n<th>Tolinku Route<\/th>\n<\/tr>\n<\/thead>\n<tbody><tr>\n<td>Deep link path <code>\/product\/:id<\/code><\/td>\n<td>Route: <code>\/product\/:id<\/code><\/td>\n<\/tr>\n<tr>\n<td>Campaign tracker with custom params<\/td>\n<td>Route with corresponding path + query parameters<\/td>\n<\/tr>\n<tr>\n<td>Reattribution link<\/td>\n<td>Route linked to re-engagement campaign<\/td>\n<\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3: Replace the SDK<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Remove Adjust SDK<\/h3>\n\n\n\n<p><strong>iOS<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Remove <code>Adjust<\/code> dependency (CocoaPods, SPM, or manual)<\/li>\n<li>Remove <code>Adjust.appDidLaunch()<\/code> from AppDelegate<\/li>\n<li>Remove <code>AdjustDelegate<\/code> implementations<\/li>\n<li>Remove deep link callback handling (<code>adjustDeeplinkResponse<\/code>)<\/li>\n<li>Remove event tracking calls (<code>Adjust.trackEvent()<\/code>)<\/li>\n<\/ol>\n\n\n\n<p><strong>Android<\/strong>:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Remove <code>com.adjust.sdk:adjust-android<\/code> from build.gradle<\/li>\n<li>Remove <code>Adjust.onCreate()<\/code> from Application class<\/li>\n<li>Remove deep link listener registrations<\/li>\n<li>Remove <code>Adjust.appWillOpenUrl()<\/code> calls<\/li>\n<li>Remove event tracking calls<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Add Tolinku SDK<\/h3>\n\n\n\n<p>Standard Universal Links (iOS) and App Links (Android) setup. The deep link handling code is simpler because Tolinku uses standard URL parameters:<\/p>\n\n\n\n<pre><code class=\"language-swift\">\/\/ iOS: Handle incoming Universal Link\nfunc scene(_ scene: UIScene, continue userActivity: NSUserActivity) {\n    guard let url = userActivity.webpageURL else { return }\n    let path = url.path\n    let params = URLComponents(url: url, resolvingAgainstBaseURL: false)?.queryItems\n\n    \/\/ Route based on path\n    routeDeepLink(path: path, params: params)\n}\n<\/code><\/pre>\n\n\n\n<pre><code class=\"language-kotlin\">\/\/ Android: Handle incoming App Link\nprivate fun handleDeepLink(intent: Intent) {\n    val uri = intent.data ?: return\n    val path = uri.path ?: return\n    routeDeepLink(path, uri)\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Key Differences<\/h3>\n\n\n\n<p><strong>Adjust&#39;s callback pattern<\/strong>: Adjust uses delegate\/listener callbacks to deliver deep link data. You register a callback, and the SDK calls it with link parameters after resolving.<\/p>\n\n\n\n<p><strong>Tolinku&#39;s URL pattern<\/strong>: Tolinku delivers deep link data through the URL itself. Universal Links and App Links pass the URL directly to your app. You parse it using standard URL utilities.<\/p>\n\n\n\n<p>The Tolinku approach is more transparent: the URL is the data. No SDK-specific data format to learn.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4: Handle Existing Links<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Links on Adjust&#39;s Domain<\/h3>\n\n\n\n<p>Links on <code>adj.st<\/code> or Adjust&#39;s subdomain structure will continue to work as long as your Adjust account is active. You can maintain both platforms in parallel.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Custom Domain Transfer<\/h3>\n\n\n\n<p>If you used a custom domain with Adjust, transfer it by:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Creating all existing link paths as Tolinku routes<\/li>\n<li>Lowering DNS TTL to 60 seconds<\/li>\n<li>Updating the CNAME to point to Tolinku<\/li>\n<li>Verifying all routes work<\/li>\n<li>Raising TTL back to 3600+<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Parallel Running Period<\/h3>\n\n\n\n<p>Run both platforms for 2-4 weeks:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>All new links use Tolinku<\/li>\n<li>Existing Adjust links continue through Adjust<\/li>\n<li>Monitor both dashboards during the transition<\/li>\n<li>Cut over the custom domain once new traffic patterns are established<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5: Attribution Continuity<\/h2>\n\n\n\n<p>If you&#39;re keeping Adjust for attribution:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The Adjust SDK can coexist with Tolinku for deep link routing<\/li>\n<li>Configure Adjust to track installs and events without handling deep links<\/li>\n<li>Deep links are handled by Tolinku; attribution is handled by Adjust<\/li>\n<\/ul>\n\n\n\n<p>If you&#39;re replacing Adjust entirely:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Set up Tolinku&#39;s <a href=\"https:\/\/tolinku.com\/features\/analytics\">analytics<\/a> for click and conversion tracking<\/li>\n<li>Export historical attribution data from Adjust before deactivating<\/li>\n<li>Use UTM parameters on Tolinku links for campaign attribution<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Timeline<\/h2>\n\n\n\n<p><strong>Day 1-2<\/strong>: Audit Adjust configuration, set up Tolinku\n<strong>Day 3-4<\/strong>: SDK replacement and deep link handler updates\n<strong>Day 5<\/strong>: Testing all flows\n<strong>Day 6<\/strong>: Begin parallel running\n<strong>Day 6-21<\/strong>: Transition period\n<strong>Day 21+<\/strong>: DNS cutover (if applicable), evaluate Adjust account status<\/p>\n\n\n\n<p>For the general migration approach, see <a href=\"https:\/\/tolinku.com\/blog\/migrating-to-tolinku\/\">Migrating to Tolinku from Branch, Firebase, and AppsFlyer<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Migrate your deep linking from Adjust to Tolinku. Step-by-step guide covering link configuration, SDK replacement, and data continuity.<\/p>\n","protected":false},"author":2,"featured_media":853,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"How to Migrate from Adjust to Tolinku","rank_math_description":"Migrate your deep linking from Adjust to Tolinku. Step-by-step guide covering link configuration, SDK replacement, and data continuity.","rank_math_focus_keyword":"migrate from Adjust","rank_math_canonical_url":"","rank_math_facebook_title":"","rank_math_facebook_description":"","rank_math_facebook_image":"https:\/\/tolinku.com\/blog\/wp-content\/uploads\/2026\/03\/og-migrate-from-adjust.png","rank_math_facebook_image_id":"","rank_math_twitter_title":"","rank_math_twitter_description":"","rank_math_twitter_image":"https:\/\/tolinku.com\/blog\/wp-content\/uploads\/2026\/03\/og-migrate-from-adjust.png","footnotes":""},"categories":[17],"tags":[65,25,28,20,24,52,30],"class_list":["post-854","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-comparisons","tag-adjust","tag-android","tag-attribution","tag-deep-linking","tag-ios","tag-migration","tag-sdks"],"_links":{"self":[{"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/posts\/854","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/comments?post=854"}],"version-history":[{"count":3,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/posts\/854\/revisions"}],"predecessor-version":[{"id":2511,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/posts\/854\/revisions\/2511"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/media\/853"}],"wp:attachment":[{"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/media?parent=854"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/categories?post=854"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tolinku.com\/blog\/wp-json\/wp\/v2\/tags?post=854"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}