Skip to main content

Dynamic Links

The AppTrove Expo SDK provides comprehensive dynamic link creation capabilities, allowing you to generate dynamic links with advanced configuration options for attribution tracking and deep linking.


Overview

Dynamic links enable you to:

  • Create shareable links that work across platforms
  • Track attribution data through link parameters
  • Configure platform-specific redirect behavior
  • Add social media metadata for better sharing
  • Set custom SDK parameters for enhanced tracking

Configure Trackier Panel

  1. Log in to the Trackier Panel
  2. Go to Unilink Management > Create Template
  3. Setup Template
    • Save and note the template ID (Required for Dynamic Link)

Create dynamic links with comprehensive configuration options:

import { TrackierConfig, TrackierSDK, TrackierEvent } from 'trackier-expo-sdk';

async function createAdvancedDynamicLink() {
try {
const config = {
// Basic configuration
templateId: "your_template_id",
link: "https://yourdomain.com/product/123",
domainUriPrefix: "https://yourdomain.page.link",
deepLinkValue: "product_detail?product_id=123",

// Platform-specific parameters
androidParameters: {
redirectLink: "https://play.google.com/store/apps/details?id=com.example.app"
},
iosParameters: {
redirectLink: "https://apps.apple.com/app/id123456789"
},
desktopParameters: {
redirectLink: "https://yourdomain.com/desktop"
},

// Social media metadata
socialMetaTagParameters: {
title: "Amazing Product",
description: "Check out this amazing product!",
imageLink: "https://example.com/product-image.jpg"
},

// SDK parameters for tracking
sdkParameters: {
param1: "value1",
param2: "value2",
param3: "value3"
},

// Attribution parameters
attributionParameters: {
channel: "social",
campaign: "summer_sale",
mediaSource: "facebook",
p1: "custom_param1",
p2: "custom_param2",
p3: "custom_param3",
p4: "custom_param4",
p5: "custom_param5"
}
};

const dynamicLinkUrl = await TrackierSDK.createDynamicLink(config);
console.log("Advanced dynamic link created:", dynamicLinkUrl);
return dynamicLinkUrl;
} catch (error) {
console.error("Error creating dynamic link:", error);
}
}

Configuration Parameters

Basic Parameters

ParameterTypeDescriptionRequired
templateIdstringYour dynamic link template IDYes
linkstringThe base URL for your dynamic linkYes
domainUriPrefixstringYour domain URI prefixYes
deepLinkValuestringCustom deep link valueNo

Platform Parameters

Android Parameters

androidParameters: {
redirectLink: "https://play.google.com/store/apps/details?id=com.example.app"
}

iOS Parameters

iosParameters: {
redirectLink: "https://apps.apple.com/app/id123456789"
}

Desktop Parameters

desktopParameters: {
redirectLink: "https://yourdomain.com/desktop"
}

Social Media Parameters

socialMetaTagParameters: {
title: "Your App Title",
description: "Your app description for social sharing",
imageLink: "https://example.com/share-image.jpg"
}

SDK Parameters

sdkParameters: {
param1: "custom_value_1",
param2: "custom_value_2",
param3: "custom_value_3"
}

Attribution Parameters

attributionParameters: {
channel: "social", // Marketing channel
campaign: "summer_sale", // Campaign name
mediaSource: "facebook", // Media source
p1: "custom_param1", // Custom parameter 1
p2: "custom_param2", // Custom parameter 2
p3: "custom_param3", // Custom parameter 3
p4: "custom_param4", // Custom parameter 4
p5: "custom_param5" // Custom parameter 5
}

Use Cases

E-commerce Product Sharing

async function createProductShareLink(productId: string, productName: string) {
try {
const config = {
templateId: "product_share_template",
link: `https://yourapp.com/product/${productId}`,
domainUriPrefix: "https://yourapp.page.link",
deepLinkValue: `product_detail?product_id=${productId}`,

socialMetaTagParameters: {
title: productName,
description: `Check out ${productName} on our app!`,
imageLink: `https://yourapp.com/products/${productId}/image.jpg`
},

attributionParameters: {
channel: "social",
campaign: "product_sharing",
mediaSource: "user_generated",
p1: productId,
p2: "product_share"
}
};

const shareLink = await TrackierSDK.createDynamicLink(config);
return shareLink;
} catch (error) {
console.error("Error creating product share link:", error);
}
}

Referral Program

async function createReferralLink(userId: string, referralCode: string) {
try {
const config = {
templateId: "referral_template",
link: `https://yourapp.com/referral/${referralCode}`,
domainUriPrefix: "https://yourapp.page.link",
deepLinkValue: `referral?code=${referralCode}&referrer=${userId}`,

attributionParameters: {
channel: "referral",
campaign: "user_referral",
mediaSource: "referral_program",
p1: userId,
p2: referralCode,
p3: "referral_link"
}
};

const referralLink = await TrackierSDK.createDynamicLink(config);
return referralLink;
} catch (error) {
console.error("Error creating referral link:", error);
}
}

Promotional Campaign

async function createPromoLink(campaignId: string, discountCode: string) {
try {
const config = {
templateId: "promo_template",
link: `https://yourapp.com/promo/${campaignId}`,
domainUriPrefix: "https://yourapp.page.link",
deepLinkValue: `promo?campaign=${campaignId}&code=${discountCode}`,

socialMetaTagParameters: {
title: "Special Offer!",
description: "Get exclusive discounts on our app!",
imageLink: "https://yourapp.com/promo-banner.jpg"
},

attributionParameters: {
channel: "promotional",
campaign: campaignId,
mediaSource: "email",
p1: discountCode,
p2: "promo_campaign"
}
};

const promoLink = await TrackierSDK.createDynamicLink(config);
return promoLink;
} catch (error) {
console.error("Error creating promo link:", error);
}
}

Error Handling

Handling Creation Errors

async function createDynamicLinkWithErrorHandling() {
try {
const config = {
templateId: "your_template_id",
link: "https://yourdomain.com/product/123",
domainUriPrefix: "https://yourdomain.page.link"
};

const dynamicLinkUrl = await TrackierSDK.createDynamicLink(config);
console.log("Dynamic link created successfully:", dynamicLinkUrl);
return dynamicLinkUrl;
} catch (error) {
if (error.code === "CREATE_DYNAMIC_LINK_FAILED") {
console.error("Failed to create dynamic link:", error.message);
// Handle specific creation failure
} else if (error.code === "CREATE_DYNAMIC_LINK_EXCEPTION") {
console.error("Exception during dynamic link creation:", error.message);
// Handle general exception
} else {
console.error("Unknown error creating dynamic link:", error);
}
throw error;
}
}

Best Practices

Configuration Management

  • Template Management: Use consistent template IDs for different use cases
  • URL Validation: Always validate URLs before creating dynamic links
  • Error Handling: Implement comprehensive error handling for production use
  • Testing: Test dynamic links across different platforms and scenarios

Attribution Tracking

  • Consistent Parameters: Use consistent attribution parameters across campaigns
  • Parameter Naming: Use descriptive parameter names for better analytics
  • Campaign Tracking: Implement proper campaign tracking for ROI measurement

Performance Optimization

  • Async Operations: Always handle dynamic link creation asynchronously
  • Caching: Consider caching frequently used dynamic links
  • Rate Limiting: Implement rate limiting for high-volume link creation

Troubleshooting

Common Issues

Problem: Dynamic link creation fails Solution:

  • Verify template ID is correct and active
  • Check domain URI prefix configuration
  • Ensure all required parameters are provided

Problem: Links not working on specific platforms Solution:

  • Verify platform-specific redirect links
  • Check app store URLs are correct
  • Test with different device types

Problem: Attribution data not tracking correctly Solution:

  • Verify attribution parameters are properly formatted
  • Check campaign and channel naming conventions
  • Ensure SDK is properly initialized

Debug Steps

  1. Validate Configuration: Check all required parameters are present
  2. Test Template: Verify template ID is active and accessible
  3. Check URLs: Ensure all URLs are properly formatted
  4. Monitor Logs: Check console logs for detailed error messages
  5. Test Platforms: Verify links work across all target platforms

Next Steps

After implementing dynamic link creation:

  1. Test dynamic links across different platforms and scenarios
  2. Monitor attribution data in your Trackier dashboard
  3. Implement link analytics and tracking
  4. For assistance, contact Trackier support at support@trackier.com