# Amplitude + Redirectly Attribution > Send install attribution and deep link events from Redirectly to Amplitude. Track which campaigns drive your best users and measure ROI by install source. - Canonical: https://redirectly.app/integrations/amplitude - Site: [Redirectly](https://redirectly.app) — deferred deep linking for Flutter & React Native 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. ## 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 ## Send attribution events to Amplitude Initialize Amplitude in your app and send attribution events when you capture Redirectly deep links. ```dart // 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 initialize(String apiKey) async { await _instance.init(apiKey) await _instance.trackingSessionEvents(true) } /// Track install with attribution data from Redirectly static Future 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: ```dart // 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()) } ``` ## 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. ```dart // Set detailed user properties for cohort building Future 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 ``` ## 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. ## Attribution-aware funnel analysis Track user conversion funnels and measure dropoff by installation source. ```dart // Track funnel events with attribution context class FunnelTracking { static Future 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 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 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: - [Segment Integration](https://redirectly.app/integrations/segment.md) - [Mixpanel Attribution](https://redirectly.app/integrations/mixpanel.md) - [Flutter Deferred Linking](https://redirectly.app/flutter-deferred-deep-linking.md) - [All Integrations](https://redirectly.app/integrations.md) --- Full site index for AI agents: https://redirectly.app/llms.txt