Amplitude + Attribution

Amplitude + Redirectly Attribution

Send install attribution and deep link events from Redirectly to Amplitude. Track cohorts by install source, measure campaign ROI, and understand which links drive the most valuable users.

Why Amplitude

Cohort analysis by attribution source

Amplitude excels at behavioral analytics and user segmentation. By integrating Redirectly attribution with Amplitude, you can build cohorts of users acquired from specific campaigns, measure retention by attribution source, and understand the lifetime value of each marketing channel.

What you measure

  • Install source: Which link drove each install
  • Retention by cohort: D1, D7, D30 retention by campaign
  • LTV by channel: Revenue per user by attribution source
  • Feature adoption: Which users engage with which features
  • Conversion funnels: Sign up → purchase by install source

Real use cases

  • Instagram campaign drives 5,000 installs, 8% D7 retention
  • TikTok campaign drives 2,000 installs, 18% D7 retention
  • Facebook referral link drives 1,000 installs, 35% D7 retention
  • Email re-engagement link drives high-value returning users
  • → Optimize budget toward best-performing channels
Implementation

Send attribution events to Amplitude

Initialize Amplitude in your app and send attribution events when you capture Redirectly deep links.

// lib/services/amplitude_service.dart import 'package:amplitude_flutter/amplitude.dart' import 'package:redirectly/redirectly.dart' class AmplitudeService { static final _instance = Amplitude.getInstance() static Future<void> initialize(String apiKey) async { await _instance.init(apiKey) await _instance.trackingSessionEvents(true) } /// Track install with attribution data from Redirectly static Future<void> trackInstallAttribution() async { final link = await Redirectly.getInitialLink() if (link != null) { // Build event properties from Redirectly deep link final eventProperties = { 'redirectly_link_id': link.id, 'redirectly_path': link.path, 'campaign': link.params['campaign'], 'source': link.params['source'], 'medium': link.params['medium'], 'content': link.params['content'], } // Track install attributed event _instance.logEvent( 'Install Attributed', eventProperties: eventProperties, ) // Set user properties for cohort analysis _instance.setUserProperties({ 'install_link': link.id, 'install_campaign': link.params['campaign'], 'install_source': link.params['source'], 'install_timestamp': DateTime.now().toIso8601String(), }) print('Tracked install attribution: ${link.id}') } } /// Listen for deep link events during session static void listenToDeepLinks() { Redirectly.onDeepLink.listen((link) { _instance.logEvent( 'Deep Link Opened', eventProperties: { 'path': link.path, 'campaign': link.params['campaign'], 'source': link.params['source'], 'redirectly_link_id': link.id, }, ) }) } }

Call these methods in your app's main initialization to start tracking attribution:

// main.dart import 'package:flutter/material.dart' import 'services/amplitude_service.dart' void main() async { WidgetsFlutterBinding.ensureInitialized() // Initialize Redirectly await Redirectly.initialize(apiKey: 'your_redirectly_key') // Initialize Amplitude await AmplitudeService.initialize('your_amplitude_key') // Track initial attribution await AmplitudeService.trackInstallAttribution() // Listen for future deep link events AmplitudeService.listenToDeepLinks() runApp(const MyApp()) }
User Properties

Build cohorts with user properties

Set user properties in Amplitude so you can segment users by their install attribution source. This powers cohort analysis and retention tracking.

// Set detailed user properties for cohort building Future<void> setAttributionProperties() async { final link = await Redirectly.getInitialLink() if (link != null) { amplitude.setUserProperties({ // Campaign tracking 'install_campaign': link.params['campaign'], 'install_source': link.params['source'], 'install_medium': link.params['medium'], // Time-based properties for lifecycle analysis 'install_date': DateTime.now().toIso8601String(), 'install_week': DateTime.now().week.toString(), 'install_month': DateTime.now().month.toString(), // Custom parameters from your links 'referrer_id': link.params['referrer'], 'promo_code': link.params['promo'], 'cohort': link.params['cohort'], // Analytics flags 'is_organic': link.params['source'] == 'organic', 'is_paid': link.params['source'] == 'paid', 'is_referral': link.params['source'] == 'referral', }) } } // Now you can segment users: // - All Instagram installs: install_source = "instagram" // - Summer 2024 campaign: install_campaign = "summer_2024" // - High-value cohort: referrer_id exists // - Organic traffic: is_organic = true
Retention Analysis

Measure retention by attribution source

In Amplitude, use Retention Chart and Cohort Analysis to measure D1, D7, D30 retention for each traffic source.

Retention chart setup

In Amplitude, create a Retention chart with:

Cohort: Users who triggered "Install Attributed" event

Segmented by: install_source user property

Retention event: Any event (or specific events like "Session Start")

Time periods: D1, D7, D14, D30

Expected insights

You'll see retention curves like:

Instagram: 8% D1 → 5% D7 → 2% D30

TikTok: 18% D1 → 12% D7 → 6% D30

Facebook referral: 35% D1 → 28% D7 → 18% D30

Email re-engagement: 45% D1 → 38% D7 → 25% D30

Act on the data

Use these insights to optimize: reallocate budget toward highest-retention sources, improve onboarding for low-retention cohorts, or refocus campaigns on best-performing channels.

Funnels

Attribution-aware funnel analysis

Track user conversion funnels and measure dropoff by installation source.

// Track funnel events with attribution context class FunnelTracking { static Future<void> trackSignup(String email) async { final link = await Redirectly.getInitialLink() amplitude.logEvent( 'User Signup', eventProperties: { 'email': email, 'install_source': link?.params['source'], 'install_campaign': link?.params['campaign'], }, ) } static Future<void> trackPurchase( String orderId, double amount, ) async { final link = await Redirectly.getInitialLink() amplitude.logEvent( 'Purchase Completed', eventProperties: { 'order_id': orderId, 'amount': amount, 'install_source': link?.params['source'], 'install_campaign': link?.params['campaign'], }, ) } static Future<void> trackFeatureUsage(String featureName) async { final link = await Redirectly.getInitialLink() amplitude.logEvent( 'Feature Used', eventProperties: { 'feature': featureName, 'install_source': link?.params['source'], }, ) } } // Amplitude funnel: // Install → (50% from Instagram, 80% from TikTok) // Signup → (40% from Instagram, 70% from TikTok) // Purchase → (15% from Instagram, 45% from TikTok) // → Clearly TikTok users are more valuable

Next steps

Understand your users better with Amplitude + Redirectly attribution:

Try Redirectly Free

Get a free API key, subdomain, and 10k monthly links.