UTM tracking guide
Track performance and optimize commission attribution with UTM parameters
What are UTM parameters?
UTM (Urchin Tracking Module) parameters are small pieces of text added to URLs that help you track where your website traffic comes from. Think of them as digital breadcrumbs that tell you exactly how users found your sherpa° integration.
How UTM tracking works
UTM parameters are small pieces of text added to URLs that act like digital breadcrumbs. When someone clicks your WebApp link, these parameters tell you exactly where that traffic came from - whether it was an email campaign, website button, mobile app, or any other marketing channel.
Example: When a user clicks a link with utm_source=email&utm_campaign=pre-departure-7day
, you can see in your analytics that this visitor came from your 7-day pre-departure email campaign.
When to use UTM tracking
Consider implementing UTM tracking when you want to:
- Track campaign performance: See which email campaigns, website buttons, or marketing channels drive the most eVisa applications
- Optimize commission revenue: Identify which touchpoints generate the highest conversion rates and commission earnings
- A/B test marketing efforts: Compare different approaches to see what works best
- Understand user journeys: See how users move from different entry points to completing eVisa purchases
- Measure ROI: Calculate the return on investment for different marketing channels and campaigns
UTM parameter structure
UTM parameters are added to URLs as query parameters. Here's the basic structure:
https://apply.joinsherpa.com/travel-restrictions?affiliateId=your-id&utm_source=email&utm_medium=newsletter&utm_campaign=summer-travel
Core UTM parameters
Parameter | Purpose | Example Values |
---|
utm_source | Identifies the traffic source | email , website , social-media , airline-app |
utm_medium | Specifies the marketing medium | email , banner , button , push-notification |
utm_campaign | Groups related marketing activities | pre-departure-7day , booking-confirmation , summer-promo |
utm_content | Differentiates between similar links | visa-check-button , travel-requirements-link |
utm_term | Provides additional context | usa-travelers , turkey-destination |
UTM tracking with WebApp deep-linking
Basic WebApp UTM Implementation
website-button.html
<a
href="https://apply.joinsherpa.com/travel-restrictions?affiliateId=your-id&utm_source=website&utm_medium=button&utm_campaign=visa-check&utm_content=header-button"
>
Check Travel Requirements
</a>
Email Campaign Example
email-template.html
<!-- Pre-departure email link -->
<a
href="https://apply.joinsherpa.com/explore/USA?affiliateId=your-id&utm_source=email&utm_medium=email&utm_campaign=pre-departure-7day&utm_content=visa-reminder&utm_term=usa-travelers"
>
Don't forget to check visa requirements
</a>
<!-- Travel requirements link -->
<a
href="https://apply.joinsherpa.com/travel-restrictions/TUR?affiliateId=your-id&originCountry=USA&nationality=USA&departureDate=2024-06-15&tripType=oneWay&fullyVaccinated=true&utm_source=email&utm_medium=email&utm_campaign=pre-departure-7day&utm_content=travel-requirements&utm_term=turkey-trip"
>
View Turkey travel requirements
</a>
Dynamic UTM generation for WebApp
dynamic-utm.js
function generateWebAppLink(travellerData, campaignInfo) {
const baseUrl = 'https://apply.joinsherpa.com/travel-restrictions';
const params = new URLSearchParams({
affiliateId: 'your-unique-affiliateid',
nationality: travellerData.nationality,
originCountry: travellerData.originCountry,
departureDate: travellerData.departureDate,
tripType: travellerData.tripType,
fullyVaccinated: travellerData.fullyVaccinated,
// UTM Parameters
utm_source: campaignInfo.source,
utm_medium: campaignInfo.medium,
utm_campaign: campaignInfo.campaign,
utm_content: campaignInfo.content,
utm_term: `${travellerData.destination}-${travellerData.nationality}`,
});
return `${baseUrl}/${travellerData.destination}?${params.toString()}`;
}
// Usage example
const link = generateWebAppLink(
{
nationality: 'USA',
originCountry: 'USA',
destination: 'TUR',
departureDate: '2024-06-15',
tripType: 'oneWay',
fullyVaccinated: true,
},
{
source: 'airline-email',
medium: 'email',
campaign: 'pre-departure-7day',
content: 'travel-requirements',
},
);
UTM tracking with Trip Element SDK
The Trip Element SDK also supports UTM parameters through the placement
and utmParameters
configuration options.
Basic Trip Element UTM Implementation
trip-element-utm.js
const elementConfig = {
placement: 'mmb', // Manage My Booking placement
travellers: [
{
nationality: 'USA',
},
],
segments: [
{
segmentType: 'OUTBOUND',
origin: { airportCode: 'JFK' },
destination: { airportCode: 'HAN' },
departureDate: '2024-06-15',
},
],
// UTM Parameters for tracking
utmParameters: {
source: 'website',
medium: 'trip-element',
campaign: 'mmb-integration',
content: 'visa-check',
term: 'vietnam-trip',
},
};
function onSherpaEvent(event) {
if (event.type === 'sdkLoaded') {
$sherpa.V2.createElement('trip', elementConfig).mount(
'#sherpa-trip-element',
);
}
}
Advanced trip element UTM with dynamic data
advanced-trip-element.js
function createTripElementWithUTM(travellerData, placement, campaignInfo) {
const elementConfig = {
placement: placement,
travellers: [
{
nationality: travellerData.nationality,
},
],
segments: travellerData.segments,
utmParameters: {
source: campaignInfo.source,
medium: campaignInfo.medium,
campaign: campaignInfo.campaign,
content: `${placement}-${travellerData.segments[0].destination.airportCode}`,
term: `${travellerData.nationality}-${travellerData.segments[0].destination.airportCode}`,
},
};
return elementConfig;
}
// Usage example
const config = createTripElementWithUTM(
{
nationality: 'USA',
segments: [
{
segmentType: 'OUTBOUND',
origin: { airportCode: 'LAX' },
destination: { airportCode: 'LHR' },
departureDate: '2024-07-20',
},
],
},
'discovery',
{
source: 'airline-website',
medium: 'trip-element',
campaign: 'summer-travel-2024',
},
);
Real-world use cases
1. Airline pre-departure email campaign
Scenario: Airline sends emails 7, 3, and 1 day before departure
airline-email-campaign.html
<!-- 7 days before departure -->
<a
href="https://apply.joinsherpa.com/explore/USA?affiliateId=airline-id&utm_source=airline-email&utm_medium=email&utm_campaign=pre-departure-7day&utm_content=visa-reminder&utm_term=early-reminder"
>
Check visa requirements for your upcoming trip
</a>
<!-- 3 days before departure -->
<a
href="https://apply.joinsherpa.com/travel-restrictions/TUR?affiliateId=airline-id&originCountry=USA&nationality=USA&departureDate=2024-06-15&tripType=oneWay&fullyVaccinated=true&utm_source=airline-email&utm_medium=email&utm_campaign=pre-departure-3day&utm_content=urgent-reminder&utm_term=last-minute"
>
Final reminder: Check travel requirements
</a>
<!-- 1 day before departure -->
<a
href="https://apply.joinsherpa.com/travel-restrictions/TUR?affiliateId=airline-id&originCountry=USA&nationality=USA&departureDate=2024-06-15&tripType=oneWay&fullyVaccinated=true&utm_source=airline-email&utm_medium=email&utm_campaign=pre-departure-1day&utm_content=final-reminder&utm_term=day-before"
>
Last chance: Verify travel documents
</a>
2. Travel agency website integration
Scenario: Travel agency with multiple touchpoints
travel-agency-website.html
<!-- Header navigation -->
<a
href="https://apply.joinsherpa.com/travel-restrictions?affiliateId=agency-id&utm_source=agency-website&utm_medium=header-nav&utm_campaign=general-traffic&utm_content=nav-link"
>
Travel Requirements
</a>
<!-- Booking confirmation page -->
<a
href="https://apply.joinsherpa.com/explore/USA?affiliateId=agency-id&utm_source=agency-website&utm_medium=booking-page&utm_campaign=post-booking&utm_content=confirmation-cta&utm_term=usa-travelers"
>
Check visa requirements for your booking
</a>
<!-- Mobile app push notification -->
<a
href="https://apply.joinsherpa.com/travel-restrictions/EGY?affiliateId=agency-id&originCountry=USA&nationality=USA&departureDate=2024-08-10&tripType=roundTrip&fullyVaccinated=true&utm_source=agency-app&utm_medium=push-notification&utm_campaign=egypt-promo&utm_content=destination-alert&utm_term=egypt-summer"
>
Egypt travel requirements updated
</a>
3. Trip Element SDK integration
Scenario: Airline website with embedded Trip Element
airline-trip-element.js
// Manage My Booking page
const mmbConfig = {
placement: 'mmb',
travellers: [{ nationality: 'USA' }],
segments: [
{
segmentType: 'OUTBOUND',
origin: { airportCode: 'JFK' },
destination: { airportCode: 'CDG' },
departureDate: '2024-09-15',
},
],
utmParameters: {
source: 'airline-website',
medium: 'trip-element',
campaign: 'mmb-page',
content: 'visa-check-mmb',
term: 'usa-france-trip',
},
};
// Discovery page
const discoveryConfig = {
placement: 'discovery',
travellers: [{ nationality: 'USA' }],
utmParameters: {
source: 'airline-website',
medium: 'trip-element',
campaign: 'discovery-page',
content: 'visa-search',
term: 'general-search',
},
};
Performance tracking & commission attribution
Why UTM tracking is critical
Commission attribution:
- Track which campaigns drive actual eVisa purchases
- Identify high-converting touchpoints for optimization
- Ensure proper commission tracking across all channels
- Measure ROI by campaign and channel
Performance insights:
- Compare conversion rates across different campaigns
- Identify optimal timing for pre-departure communications
- Measure effectiveness of different content types
- Track user journey from first touch to conversion
Best Practices
1. Consistent naming convention
utm_campaign: {campaign-type}-{timing}-{year}
utm_content: {link-type}-{destination}
utm_term: {nationality}-{destination}-{context}
2. Campaign segmentation
- Pre-departure:
pre-departure-7day
, pre-departure-3day
, pre-departure-1day
- Post-booking:
booking-confirmation
, itinerary-sent
- Promotional:
summer-promo-2024
, holiday-special
- Seasonal:
spring-travel
, winter-vacation
3. Content differentiation
- eVisa links:
visa-check
, visa-application
, visa-reminder
- Travel requirements:
travel-requirements
, entry-requirements
, documentation
- Health requirements:
vaccination-info
, health-requirements
4. Testing and optimization
- A/B test different UTM parameter combinations
- Monitor performance by time of day and day of week
- Test different content and messaging approaches
- Optimize based on conversion data
Common mistakes to avoid
- Inconsistent naming: Use the same naming convention across all campaigns
- Missing affiliateId: Always include your affiliate ID for commission tracking
- Over-complicated UTM terms: Keep parameter values simple and descriptive
- Not testing links: Always test UTM links before sending to users
- Ignoring mobile: Ensure UTM parameters work on mobile devices