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
Dynamic Link Creation
Configure Trackier Panel
- Log in to the Trackier Panel
- Go to Unilink Management > Create Template
- Setup Template
- Save and note the template ID (Required for Dynamic Link)
Dynamic Link Configuration
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
Parameter | Type | Description | Required |
---|---|---|---|
templateId | string | Your dynamic link template ID | Yes |
link | string | The base URL for your dynamic link | Yes |
domainUriPrefix | string | Your domain URI prefix | Yes |
deepLinkValue | string | Custom deep link value | No |
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
- Validate Configuration: Check all required parameters are present
- Test Template: Verify template ID is active and accessible
- Check URLs: Ensure all URLs are properly formatted
- Monitor Logs: Check console logs for detailed error messages
- Test Platforms: Verify links work across all target platforms
Next Steps
After implementing dynamic link creation:
- Test dynamic links across different platforms and scenarios
- Monitor attribution data in your Trackier dashboard
- Implement link analytics and tracking
- For assistance, contact Trackier support at support@trackier.com