Skip to main content

Migrate from AppsFlyer

Complete guide to migrating your AppsFlyer OneLink URLs to LinkForty with zero downtime.

Overview

AppsFlyer is one of the most popular mobile attribution platforms, but it comes with a high price tag. LinkForty provides the same core functionality at a fraction of the cost while giving you complete control over your data.

Why Migrate?

FeatureAppsFlyerLinkForty Cloud
Starting Price$499+/month$49/month
Self-Hosting❌ Not available✅ Free & open source
Data OwnershipLimitedComplete
Vendor Lock-inHighNone
SupportEnterprise queueDirect access

Prerequisites

Before migrating from AppsFlyer:

  1. Custom Domain - You must be using a custom domain (e.g., go.yourcompany.com) with AppsFlyer OneLink
  2. Export Access - Verify you can export OneLink data from the AppsFlyer dashboard
  3. DNS Access - Ensure you can update your domain's CNAME records
Cannot Migrate Without Custom Domain

If you're using AppsFlyer's default domain (e.g., yourcompany.onelink.me), you'll need to set up a custom domain with AppsFlyer first, then migrate to LinkForty after your links have transitioned to the custom domain.

  1. Log in to your AppsFlyer dashboard
  2. Navigate to OneLinkLinks
  3. Click Export or use AppsFlyer's API to export all links
  4. Download as CSV

CSV Format

Your AppsFlyer export should include:

link_id,shortCode,iosUrl,androidUrl,webUrl,pid,c,af_channel,af_adset,af_ad
abc123,summer-sale,https://apps.apple.com/app/123,https://play.google.com/store/apps/details?id=com.example,https://example.com,facebook,summer2024,paid_social,summer-campaign,creative-1

Required Fields

  • shortCode or link_id - The path after your domain
  • iosUrl - iOS destination URL
  • androidUrl - Android destination URL
  • webUrl or fallbackUrl - Web fallback URL

Optional Fields (Preserved)

  • pid - Media source (mapped to utm_source)
  • c or campaign - Campaign name (mapped to utm_campaign)
  • af_channel - Channel (mapped to utm_medium)
  • af_adset - Ad set (mapped to utm_content)
  • af_ad - Ad name (mapped to utm_term)

Step 2: Import into LinkForty

Using the Migration Wizard

  1. Log in to LinkForty dashboard
  2. Navigate to Migration in the sidebar
  3. Select AppsFlyer as your platform
  4. Upload your CSV file
  5. Review the preview
  6. Choose conflict resolution strategy (if any duplicates)
  7. Click Import

Using the API

curl -X POST https://api.linkforty.com/migrations/import \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@appsflyer-links.csv" \
-F "platform=appsflyer" \
-F "conflictStrategy=skip"

Parameter Mapping

LinkForty automatically maps AppsFlyer parameters to standard UTM parameters:

AppsFlyerLinkForty
pidutm_source
c or campaignutm_campaign
af_channelutm_medium
af_adsetutm_content
af_adutm_term
af_idStored in migration_metadata
Query Parameters Preserved

Any query parameters appended to your links (e.g., ?pid=facebook&c=summer) will be automatically passed through to the destination URL.

Step 3: Test on Temporary Domain

Before switching DNS, test your links on LinkForty's temporary domain:

  1. Your links are available at: https://[your-org].linkforty.app/summer-sale
  2. Test iOS, Android, and Web redirects
  3. Verify UTM parameters are passed correctly
  4. Check analytics tracking

Testing Checklist

  • iOS app opens correctly
  • Android app opens correctly
  • Web fallback works
  • UTM parameters preserved
  • Analytics events tracked
  • QR codes work (if applicable)

Step 4: DNS Preparation

Lower TTL (24-48 hours before migration)

  1. Access your DNS provider (GoDaddy, Cloudflare, etc.)
  2. Find your current CNAME record for your custom domain
  3. Lower the TTL to 300 seconds (5 minutes)
  4. Wait 24-48 hours for this change to propagate

Document Current Settings

Note your current AppsFlyer CNAME:

Type: CNAME
Name: go (or your subdomain)
Value: onelink.appsflyer.com
TTL: 3600 (or whatever it currently is)

Step 5: DNS Cutover

Update CNAME Record

When ready to migrate:

  1. Log in to your DNS provider
  2. Update the CNAME record:
Type: CNAME
Name: go (your subdomain)
Value: links.linkforty.app
TTL: 300 (keep low for now)
  1. Save changes

Propagation Time

  • With lowered TTL: 5-10 minutes
  • Without lowered TTL: Up to 48 hours
Instant Verification

After updating DNS, you can verify it's working with:

dig go.yourcompany.com

Look for links.linkforty.app in the CNAME answer section.

Step 6: Verify Migration

Check Traffic

  1. Monitor LinkForty analytics dashboard
  2. Verify clicks are being tracked
  3. Check that device detection works correctly
  4. Ensure UTM parameters are captured

Test links that are "in the wild":

  • Old emails sent to customers
  • Social media posts
  • Website embedded links
  • QR codes on printed materials

All should redirect through LinkForty now.

Step 7: Post-Migration

Monitor Period (7-30 days)

  • Keep AppsFlyer account active
  • Monitor LinkForty analytics
  • Compare traffic patterns
  • Address any issues

Increase TTL

Once confident (after 7-30 days):

  1. Update DNS TTL back to normal (3600 seconds)
  2. This allows caching and improves performance

Cancel AppsFlyer

When everything is working perfectly:

  1. Export any remaining analytics data from AppsFlyer
  2. Cancel AppsFlyer subscription
  3. Celebrate cost savings! 🎉

Troubleshooting

Problem: Links still going to old destination

Solutions:

  • Clear browser cache
  • Wait for DNS propagation (up to TTL time)
  • Verify DNS change with dig or nslookup

Missing Analytics Data

Problem: Clicks not showing in LinkForty dashboard

Solutions:

  • Verify links are actually routing through LinkForty (check DNS)
  • Check that link exists in LinkForty with correct short code
  • Look for errors in browser dev tools

UTM Parameters Not Working

Problem: UTM parameters not reaching destination

Solutions:

  • Verify parameters are configured in LinkForty link settings
  • Check URL encoding
  • Test link directly (not through redirect)

Advanced: AppsFlyer-Specific Features

AppsFlyer's custom deep link data can be preserved:

{
"af_dp": "myapp://product/123",
"af_force_deeplink": "true",
"custom_param": "value"
}

Store these as link metadata in LinkForty for reference.

Fractional Attribution

AppsFlyer's fractional attribution is not directly supported in LinkForty. Instead:

  • Use UTM parameters for campaign attribution
  • Track install events via SDK (if using attribution features)
  • Export AppsFlyer historical data before migrating

Need Help?

Migration from AppsFlyer can be complex. We're here to help:

  • Email: support@linkforty.com
  • Live Chat: Available in dashboard
  • Migration Concierge: Enterprise customers get hands-on support

Next Steps