Skip to main content

Dynamic Links

SDK Version Selection

Use the tabs below for SDK-specific dynamic-link implementation.

import { AppTroveSDK } from 'apptrove-expo-sdk';

const config = {
templateId: 'your_template_id',
link: 'https://yourdomain.com/product/123',
domainUriPrefix: 'https://yourdomain.page.link',
};

const url = await AppTroveSDK.createDynamicLink(config);
console.log(url);

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 Apptrove Panel​

  1. Log in to the Apptrove 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 { AppTroveConfig, AppTroveSDK, AppTroveEvent } from 'apptrove-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 AppTroveSDK.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 AppTroveSDK.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 AppTroveSDK.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 AppTroveSDK.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 AppTroveSDK.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 Apptrove Panel
  3. Implement link analytics and tracking
  4. For assistance, contact Apptrove support at support@apptrove.com