Dub provides comprehensive analytics to help you understand how your links are performing. Track clicks, leads, sales, and conversions across multiple dimensions including geography, devices, browsers, referrers, and more.
// API Example: Get analytics by browserconst analytics = await fetch( '/api/analytics?event=clicks&groupBy=browsers&interval=30d');// Returns: Chrome, Firefox, Safari, Edge, etc.
// API Example: Get analytics by OSconst analytics = await fetch( '/api/analytics?event=clicks&groupBy=os&interval=30d');// Returns: Windows, Mac, iOS, Android, Linux, etc.
// Get top referring domainsconst analytics = await fetch( '/api/analytics?event=clicks&groupBy=referers');// Returns: google.com, twitter.com, facebook.com, etc.
// Get full referrer URLs for detailed analysisconst analytics = await fetch( '/api/analytics?event=clicks&groupBy=referer_urls');
View analytics over time with different granularities:
// Example: Get daily time series for the last 30 daysconst timeseries = await fetch( '/api/analytics?event=clicks&groupBy=timeseries&interval=30d');// Custom date range with specific granularityconst custom = await fetch( '/api/analytics?' + 'event=clicks&' + 'groupBy=timeseries&' + 'start=2024-01-01&' + 'end=2024-01-31&' + 'granularity=day&' + 'timezone=America/New_York');
Supported granularities:
minute - Minute-by-minute data
hour - Hourly aggregation
day - Daily aggregation (default)
month - Monthly aggregation
Specify timezone using IANA time zone codes (e.g., America/New_York) to align data with your local time.
// Example: Get top links by clicksconst topLinks = await fetch( '/api/analytics?event=clicks&groupBy=top_links&interval=30d');// Get top destination URLsconst topUrls = await fetch( '/api/analytics?event=clicks&groupBy=top_urls&interval=30d');// Get top foldersconst topFolders = await fetch( '/api/analytics?event=clicks&groupBy=top_folders&interval=30d');// Get top tagsconst topTags = await fetch( '/api/analytics?event=clicks&groupBy=top_link_tags&interval=30d');
// Example: Get total sales and revenueconst sales = await fetch( '/api/analytics?event=sales&groupBy=count&interval=30d');// Filter by sale type (new vs recurring)const newSales = await fetch( '/api/analytics?event=sales&saleType=new&interval=30d');const recurringSales = await fetch( '/api/analytics?event=sales&saleType=recurring&interval=30d');// Get sales by partner (for affiliate programs)const partnerSales = await fetch( '/api/analytics?event=sales&groupBy=partners&interval=30d');
Sales analytics require conversion tracking to be enabled on your links.
// Example: Filter analytics by customerconst customerAnalytics = await fetch( '/api/analytics?event=sales&customerId=cus_123&interval=all');// Get analytics for a specific customer across all linksconst customerActivity = await fetch( '/api/analytics?event=clicks&customerId=cus_123');