Links
Short links and campaign tracking
Links
Entrolytics Links provides URL shortening and campaign tracking to measure the effectiveness of your marketing efforts.
Overview
Links allow you to:
- Shorten URLs for social media, emails, and campaigns
- Track clicks with detailed analytics (device, location, referrer)
- Measure campaigns with UTM parameters
- Attribute conversions to specific links
Creating Links
Via Dashboard
- Navigate to Links in the sidebar
- Click Create Link
- Enter the destination URL
- Customize the slug (optional)
- Add UTM parameters (optional)
- Click Create
Via API
import { getClient } from '@entro314labs/entro-api'
const client = getClient({
hostUrl: 'https://cloud.entrolytics.click',
websiteId: 'your-website-id',
})
const link = await client.links.create({
url: 'https://example.com/product',
slug: 'summer-sale', // Optional custom slug
utmSource: 'twitter',
utmMedium: 'social',
utmCampaign: 'summer-2024',
})
// Result: https://entrolytics.click/l/summer-saleVia CLI
entro links create https://example.com/product --slug summer-saleLink Structure
Links follow this format:
https://entrolytics.click/l/{slug}For self-hosted instances:
https://your-domain.com/l/{slug}UTM Parameters
Links support full UTM tracking:
| Parameter | Description | Example |
|---|---|---|
utm_source | Traffic source | twitter, newsletter |
utm_medium | Marketing medium | social, email, cpc |
utm_campaign | Campaign name | summer-sale-2024 |
utm_term | Search keywords | running shoes |
utm_content | Ad variation | cta-button-red |
const link = await client.links.create({
url: 'https://example.com/landing',
utmSource: 'facebook',
utmMedium: 'paid',
utmCampaign: 'retargeting-q4',
utmContent: 'carousel-ad-1',
})Link Analytics
Click Metrics
Each link tracks:
- Total clicks - All-time click count
- Unique visitors - Deduplicated by session
- Click rate - Clicks over time
- Geographic data - Country, region, city
- Device data - Browser, OS, device type
- Referrer - Where clicks came from
Viewing Analytics
// Get link with stats
const link = await client.links.get(linkId)
// Get detailed click analytics
const stats = await client.links.getStats(linkId, {
startAt: '2024-01-01',
endAt: '2024-12-31',
})Dashboard Views
Navigate to Links → Click on a link to see:
- Click timeline chart
- Top countries
- Top devices
- Top referrers
- Recent clicks
Organization Links
Links can be created at the organization level for team sharing:
// Create org-level link
const link = await client.links.createOrgLink(orgId, {
url: 'https://example.com/team-resource',
slug: 'team-docs',
})
// List all org links
const links = await client.links.getOrgLinks(orgId)API Reference
Create Link
const link = await client.links.create({
url: string, // Destination URL (required)
slug?: string, // Custom slug (auto-generated if omitted)
utmSource?: string,
utmMedium?: string,
utmCampaign?: string,
utmTerm?: string,
utmContent?: string,
})Get Link
const link = await client.links.get(linkId)Update Link
const link = await client.links.update(linkId, {
url?: string,
slug?: string,
// ... UTM parameters
})Delete Link
await client.links.delete(linkId)List Links
const links = await client.links.list({
page?: number,
limit?: number,
})Best Practices
Naming Conventions
Use descriptive, consistent slugs:
✅ summer-sale-2024
✅ newsletter-jan-promo
✅ twitter-bio-link
❌ link1
❌ abc123
❌ testUTM Consistency
Maintain consistent UTM parameter values:
✅ utm_medium=email (always lowercase)
✅ utm_source=newsletter (consistent naming)
❌ utm_medium=Email, EMAIL, e-mail (inconsistent)Link Expiration
For time-sensitive campaigns, consider:
- Using campaign dates in slugs:
black-friday-2024 - Tracking link performance after campaign end
- Archiving old links periodically
Integration with Events
Links automatically track as events:
// When a link is clicked, Entrolytics records:
{
eventName: 'link_click',
data: {
linkId: 'link_123',
slug: 'summer-sale',
destination: 'https://example.com/product',
utm_source: 'twitter',
utm_campaign: 'summer-2024',
}
}You can correlate link clicks with conversions:
// In your conversion tracking
await client.trackEvent({
name: 'purchase',
data: {
linkId: referringLinkId, // From URL parameter
amount: 99.99,
},
})Self-Hosted Configuration
For self-hosted instances, configure the link domain:
# .env
LINK_DOMAIN=https://short.yoursite.comEnsure your DNS and server are configured to handle the /l/* route.