link
code
Python
verified
Free Download
devices
Cross-platform
code Code Preview
Python#!/usr/bin/env python3
"""
UTM Builder
Build UTM tracking parameters for campaign URLs
"""
from urllib.parse import urlencode, urlparse, parse_qs
def build_utm_url(base_url, source, medium, campaign,
term=None, content=None):
"""Build URL with UTM parameters"""
params = {
'utm_source': source,
'utm_medium': medium,
'utm_campaign': campaign
}
if term:
params['utm_term'] = term
if content:
params['utm_content'] = content
# Handle existing query params
parsed = urlparse(base_url)
existing_params = parse_qs(parsed.query)
# Merge params
for key, value in existing_params.items():
if key not in params:
params[key] = value[0]
# Build final URL
query = urlencode(params)
return f"{parsed.scheme}://{parsed.netloc}{parsed.path}?{query}"
def build_batch(urls, source, medium, campaign):
"""Build UTM URLs for multiple links"""
return [build_utm_url(url, source, medium, campaign) for url in urls]
# Presets for common sources
PRESETS = {
'newsletter': {'source': 'newsletter', 'medium': 'email'},
'cold_email': {'source': 'outreach', 'medium': 'email'},
'drip': {'source': 'drip', 'medium': 'email'},
'transactional': {'source': 'transactional', 'medium': 'email'}
}
if __name__ == '__main__':
url = build_utm_url(
'https://example.com/landing',
source='newsletter',
medium='email',
campaign='jan2024_promo'
)
print(url)
info About This Tool
The UTM Builder creates properly formatted UTM tracking parameters for your email campaign links. Track email performance in Google Analytics with consistent naming.
UTM Parameters
- utm_source - Traffic source (newsletter, outreach)
- utm_medium - Marketing medium (email)
- utm_campaign - Campaign name (promo_jan2024)
- utm_term - Paid keywords (optional)
- utm_content - A/B test variant (optional)
Key Features
- Presets - Quick templates for common email types
- Batch Processing - Add UTMs to multiple URLs at once
- URL Validation - Ensures valid URL structure
- Existing Params - Preserves existing query parameters
Requirements
- Python 3.7+
- No external dependencies
Best Practice: Use consistent naming conventions. lowercase_with_underscores works best for campaign names.
download Download Script
Need Full Automation?
Try Postigo for automated email campaigns with AI personalization
rocket_launch Start Free Trial