Link Templates
Link templates allow you to create reusable configurations for your short links, saving time and ensuring consistency across campaigns.
Overview
Instead of filling in the same iOS URL, Android URL, attribution window, and UTM parameters for every link, create a template once and reuse it for all links in a campaign.
Benefits:
- ✅ Save time - Fill in common values once
- ✅ Ensure consistency - All campaign links have same configuration
- ✅ Flexible overrides - Override any template value per link when needed
- ✅ Team collaboration - Share templates across organization
- ✅ Best practices - Enforce attribution windows, UTM structure
Templates provide default values that are automatically applied when creating links. However, you can override any template value on a per-link basis by providing a different value when creating the link. This gives you the flexibility of reusable templates while allowing exceptions when needed.
When to Use Templates
Campaign Templates
Create one template per marketing campaign:
Instagram Campaign Template:
- iOS URL: Your App Store link
- Android URL: Your Google Play link
- Attribution Window: 7 days
- UTM Medium:
social - UTM Source:
instagram
All Instagram links inherit these defaults. You only specify what's unique (the destination URL, campaign name).
Platform Templates
Create templates for each traffic source:
- Social Media Template - 7-day attribution, social UTM
- Email Template - 3-day attribution, email UTM
- Paid Search Template - 3-day attribution, CPC UTM
- Display Ads Template - 30-day attribution, display UTM
- Referral Template - 90-day attribution, referral UTM
Use Case Templates
Create templates for common scenarios:
- E-commerce Product Link - App Store URLs, product tracking
- Content Deep Link - Article/video routing
- Referral Link - Long attribution window, referral tracking
- Event Promotion - Event-specific settings
Creating Templates
Via Dashboard
Step 1: Navigate to Templates
- Click Settings in sidebar
- Click Link Templates
- Click "Create Template" button
Step 2: Configure Template
Basic Settings:
- Template Name: "Instagram Campaign"
- Description: "Default template for all Instagram ads"
Platform URLs:
- iOS URL:
https://apps.apple.com/app/yourapp/id123456789 - Android URL:
https://play.google.com/store/apps/details?id=com.yourapp - Web Fallback URL:
https://example.com/download
Attribution:
- Attribution Window: 168 hours (7 days)
UTM Parameters:
{
"utm_medium": "social",
"utm_source": "instagram"
}
Step 3: Save Template
Click "Create Template". Template is now available when creating links.
Via API
curl -X POST https://api.linkforty.com/api/templates \
-H "Authorization: Bearer $LINKFORTY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Instagram Campaign",
"description": "Default template for Instagram ads",
"settings": {
"defaultIosUrl": "https://apps.apple.com/app/yourapp/id123456789",
"defaultAndroidUrl": "https://play.google.com/store/apps/details?id=com.yourapp",
"defaultWebFallbackUrl": "https://example.com/download",
"defaultAttributionWindowHours": 168,
"utmParameters": {
"medium": "social",
"source": "instagram"
}
}
}'
Response:
{
"id": "template_a1b2c3d4",
"name": "Instagram Campaign",
"slug": "x7k9m2p5",
"description": "Default template for Instagram ads",
"settings": {
"defaultIosUrl": "https://apps.apple.com/app/yourapp/id123456789",
"defaultAndroidUrl": "https://play.google.com/store/apps/details?id=com.yourapp",
"defaultWebFallbackUrl": "https://example.com/download",
"defaultAttributionWindowHours": 168,
"utmParameters": {
"medium": "social",
"source": "instagram"
}
},
"is_default": false,
"created_at": "2024-01-20T10:00:00Z",
"updated_at": "2024-01-20T10:00:00Z"
}
Using Templates
Creating Links from Templates
Via Dashboard:
- Click "Create Link"
- Select template from "Template" dropdown
- Template values pre-fill the form
- Fill in unique values:
- Original URL:
https://example.com/product/123 - UTM Campaign:
spring-sale-2024
- Original URL:
- Click "Create Link"
Via API:
curl -X POST https://api.linkforty.com/api/links \
-H "Authorization: Bearer $LINKFORTY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateId": "template_a1b2c3d4",
"originalUrl": "https://example.com/product/123",
"utmParameters": {
"utm_campaign": "spring-sale-2024"
}
}'
Result: Link inherits iOS URL, Android URL, attribution window, utm_medium, and utm_source from template. You only provide the original URL and campaign name.
Overriding Template Values
You can override any template default value when creating a link. The backend applies this logic:
finalValue = userProvidedValue || templateDefaultValue || systemDefault
This means:
- If you provide a value when creating the link → your value is used
- If you don't provide a value → template default is used
- If template doesn't have a default → system default is used (e.g., 168 hours for attribution window)
Example: Override attribution window and UTM medium
curl -X POST https://api.linkforty.com/api/links \
-H "Authorization: Bearer $LINKFORTY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateId": "template_a1b2c3d4",
"originalUrl": "https://example.com/special-promo",
"attributionWindowHours": 336,
"utmParameters": {
"campaign": "special-promo",
"medium": "influencer"
}
}'
Result:
- ✅ Uses template's iOS/Android URLs (not overridden)
- ✅ Uses template's utm_source (not overridden)
- ✅ Overrides attribution window (14 days instead of template's 7 days)
- ✅ Overrides utm_medium (influencer instead of template's social)
- ✅ Adds new utm_campaign (special-promo)
Template Examples
Social Media Template
{
"name": "Social Media Default",
"description": "Template for all social media campaigns",
"settings": {
"defaultIosUrl": "https://apps.apple.com/app/id123",
"defaultAndroidUrl": "https://play.google.com/store/apps/details?id=com.app",
"defaultAttributionWindowHours": 168,
"utmParameters": {
"medium": "social"
}
}
}
Usage: Set utm_source per platform (instagram, facebook, tiktok, twitter) when creating links.
Email Campaign Template
{
"name": "Email Campaign",
"description": "Template for email marketing",
"settings": {
"defaultIosUrl": "https://apps.apple.com/app/id123",
"defaultAndroidUrl": "https://play.google.com/store/apps/details?id=com.app",
"defaultAttributionWindowHours": 72,
"utmParameters": {
"medium": "email"
}
}
}
Usage: Set utm_source to email service (mailchimp, sendgrid) and utm_campaign to campaign name when creating links.
Paid Search Template
{
"name": "Google Ads",
"description": "Template for Google Ads campaigns",
"settings": {
"defaultIosUrl": "https://apps.apple.com/app/id123",
"defaultAndroidUrl": "https://play.google.com/store/apps/details?id=com.app",
"defaultAttributionWindowHours": 72,
"utmParameters": {
"medium": "cpc",
"source": "google"
}
}
}
Usage: Add utm_campaign and utm_term per ad group when creating links.
Referral Program Template
{
"name": "Referral Program",
"iosUrl": "https://apps.apple.com/app/id123",
"androidUrl": "https://play.google.com/store/apps/details?id=com.app",
"attributionWindowHours": 2160,
"utmParameters": {
"utm_medium": "referral",
"utm_source": "friend"
}
}
Usage: Long 90-day attribution window for word-of-mouth referrals.
Content Marketing Template
{
"name": "Blog Content",
"iosUrl": "https://apps.apple.com/app/id123",
"androidUrl": "https://play.google.com/store/apps/details?id=com.app",
"attributionWindowHours": 336,
"utmParameters": {
"utm_medium": "content",
"utm_source": "blog"
}
}
Usage: Moderate 14-day window for educational content.
Managing Templates
List All Templates
Via Dashboard:
Settings → Link Templates → View all templates
Via API:
curl -X GET https://api.linkforty.com/api/templates \
-H "Authorization: Bearer $LINKFORTY_API_KEY"
Response:
{
"templates": [
{
"id": "template_a1b2c3d4",
"name": "Instagram Campaign",
"description": "Default template for Instagram ads",
"iosUrl": "https://apps.apple.com/app/id123",
"androidUrl": "https://play.google.com/store/apps/details?id=com.app",
"attributionWindowHours": 168,
"utmParameters": {
"utm_medium": "social",
"utm_source": "instagram"
},
"createdAt": "2024-01-20T10:00:00Z"
},
{
"id": "template_e5f6g7h8",
"name": "Email Campaign",
"attributionWindowHours": 72,
"utmParameters": {
"utm_medium": "email"
},
"createdAt": "2024-01-15T09:00:00Z"
}
],
"total": 2
}
Update Template
Via Dashboard:
- Settings → Link Templates
- Click template to edit
- Update fields
- Click "Save"
Via API:
curl -X PUT https://api.linkforty.com/api/templates/template_a1b2c3d4 \
-H "Authorization: Bearer $LINKFORTY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Instagram Campaign (Updated)",
"attributionWindowHours": 336
}'
Important: Updating a template does NOT update existing links. Only new links created from the template will use new values.
Delete Template
Via Dashboard:
- Settings → Link Templates
- Click template
- Click "Delete" button
- Confirm deletion
Via API:
curl -X DELETE https://api.linkforty.com/api/templates/template_a1b2c3d4 \
-H "Authorization: Bearer $LINKFORTY_API_KEY"
Important: Deleting a template does NOT delete links created from it. Existing links remain unchanged.
Advanced Strategies
Template Hierarchy
Create a base template and specialized variants:
Base Template: "Mobile App Default"
{
"name": "Mobile App Default",
"iosUrl": "https://apps.apple.com/app/id123",
"androidUrl": "https://play.google.com/store/apps/details?id=com.app",
"attributionWindowHours": 168
}
Variant 1: "Mobile App - Social"
{
"name": "Mobile App - Social",
"iosUrl": "https://apps.apple.com/app/id123",
"androidUrl": "https://play.google.com/store/apps/details?id=com.app",
"attributionWindowHours": 168,
"utmParameters": {
"utm_medium": "social"
}
}
Variant 2: "Mobile App - Paid"
{
"name": "Mobile App - Paid",
"iosUrl": "https://apps.apple.com/app/id123",
"androidUrl": "https://play.google.com/store/apps/details?id=com.app",
"attributionWindowHours": 72,
"utmParameters": {
"utm_medium": "cpc"
}
}
Campaign-Specific Templates
Create template for each major campaign:
// Create campaign template programmatically
async function createCampaignTemplate(campaignName, source, attributionDays) {
return await fetch('https://api.linkforty.com/api/templates', {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: `${campaignName} - ${source}`,
iosUrl: 'https://apps.apple.com/app/id123',
androidUrl: 'https://play.google.com/store/apps/details?id=com.app',
attributionWindowHours: attributionDays * 24,
utmParameters: {
utm_campaign: campaignName.toLowerCase().replace(/\s+/g, '-'),
utm_source: source
}
})
});
}
// Create templates for Q1 2024 campaign
await createCampaignTemplate('Spring Sale 2024', 'instagram', 7);
await createCampaignTemplate('Spring Sale 2024', 'facebook', 7);
await createCampaignTemplate('Spring Sale 2024', 'google', 3);
Team Templates
Share templates across your organization:
- Admin creates templates with best practices
- Team members select from templates when creating links
- Ensures consistency across all campaigns
- Enforces attribution windows (e.g., always 7 days for social)
Dynamic Template Selection
Select template based on traffic source:
const TEMPLATES = {
instagram: 'template_instagram',
facebook: 'template_facebook',
google: 'template_google',
email: 'template_email',
referral: 'template_referral'
};
function createLink(url, source, campaign) {
return fetch('https://api.linkforty.com/api/links', {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
templateId: TEMPLATES[source],
originalUrl: url,
utmParameters: {
utm_campaign: campaign
}
})
});
}
// Automatically uses correct template
await createLink('https://example.com/product', 'instagram', 'spring-2024');
Best Practices
1. Create Templates Before Links
Set up templates before launching campaigns. This ensures all links follow same structure.
2. One Template Per Traffic Source
Create separate templates for each major traffic source:
- Social media (Instagram, Facebook, TikTok, Twitter)
- Paid search (Google, Bing)
- Display ads
- Referrals
- Content/organic
3. Include All Platform URLs
Always set iOS, Android, and web URLs in templates. Don't make team members fill these in manually.
4. Set Appropriate Attribution Windows
Match window to traffic source behavior:
- Immediate channels (SMS, push): 1-6 hours
- Direct response (search, email): 1-3 days
- Social/content: 7-14 days
- Brand awareness: 14-30 days
- Referrals: 30-90 days
5. Use Consistent UTM Structure
Establish UTM naming conventions in templates:
Good:
{
"utm_medium": "social",
"utm_source": "instagram"
}
Bad:
{
"utm_medium": "Social Media",
"utm_source": "Instagram Stories"
}
Use lowercase, no spaces, semantic naming.
6. Document Template Purpose
Add clear descriptions:
{
"name": "Instagram - Stories",
"description": "Use for all Instagram Stories campaigns. 7-day attribution, social UTM tags."
}
7. Review Templates Quarterly
Every 3 months:
- Review attribution windows (are they optimal?)
- Check if iOS/Android URLs changed
- Update based on performance data
- Remove unused templates
8. Limit Template Count
Don't create too many templates. Aim for 5-10 core templates covering main use cases. Too many templates = confusion.
Template vs. Link Settings
What to Put in Templates
Template (consistent across campaign):
- iOS/Android URLs
- Attribution window
- UTM medium
- UTM source (for platform-specific templates)
- Default targeting rules
Link (unique per link):
- Original URL (destination)
- UTM campaign
- UTM content (ad variant)
- Custom short code
- Expiration date
Example
Template: Facebook Ads Default
{
"iosUrl": "https://apps.apple.com/app/id123",
"androidUrl": "https://play.google.com/store/apps/details?id=com.app",
"attributionWindowHours": 168,
"utmParameters": {
"utm_medium": "cpc",
"utm_source": "facebook"
}
}
Link 1: Spring sale product page
{
"templateId": "template_facebook",
"originalUrl": "https://example.com/spring-sale",
"utmParameters": {
"utm_campaign": "spring-2024",
"utm_content": "carousel-ad-1"
}
}
Link 2: Summer sale product page
{
"templateId": "template_facebook",
"originalUrl": "https://example.com/summer-sale",
"utmParameters": {
"utm_campaign": "summer-2024",
"utm_content": "video-ad-1"
}
}
Both links share template defaults (platform URLs, attribution, medium/source), but have unique URLs and campaigns.
Comparison with Other Platforms
| Feature | LinkForty | AppsFlyer | Branch | Adjust |
|---|---|---|---|---|
| Templates | ✅ Unlimited | ✅ Limited (Enterprise) | ❌ No templates | ❌ No templates |
| API Access | ✅ Yes | ✅ Yes (Enterprise) | ⚠️ Limited | ⚠️ Limited |
| Tier Availability | All tiers | Enterprise | N/A | N/A |
| Team Sharing | ✅ Yes | ✅ Yes | ❌ No | ❌ No |
| Override Values | ✅ Yes | ✅ Yes | N/A | N/A |
LinkForty Advantage: Templates included free, unlimited templates, full API access.
Troubleshooting
Template Not Appearing in Dropdown
Cause: Template belongs to different organization.
Solution: Verify you're logged into correct organization.
Links Not Inheriting Template Values
Cause: Template was updated after link creation.
Solution: Template changes only affect new links. Update existing links manually or recreate.
Can't Delete Template
Cause: Templates can always be deleted (links remain unaffected).
Solution: If delete button is disabled, check permissions (must be Owner or Admin).
Next Steps
- 📋 Creating Links - Use templates when creating links
- 🎯 Attribution Windows - Configure optimal windows
- 📊 UTM Parameters - Set up campaign tracking
- 🔧 API Reference - Template API docs
API Reference
See full template API documentation: