Email URL UTM Templates For GA4 Compatibility

Dedicated. Data-driven. Digital Marketing.

With the introduction of GA4, we’ve been cleaning up our UTM tracking tags and creating set templates for all channels, see our blog post about Paid Social UTM Templates.

This time we’re looking at email, which is a little simpler and less impacted by the uneditable channel groupings issue in GA4, but still we want to get it right!

Generic Dynamic Template (Account level)

utm_source=APP-NAME

utm_medium=email

utm_term=AUDIENCE-NAME

utm_campaign=EMAIL-CAMPAIGN-NAME

utm_content=ALT-TEXT

Change ‘APP-NAME’ to your email app name such as ‘klaviyo’, ‘mailerlite’ or ‘mailchimp.

Change ‘AUDIENCE-NAME’ to your List/Segment/Group/Audience name by using a dynamic value provided by the platform if possible, if not possible then you can either leave this empty of just apply a generic static value such as ‘subscribers’.

Change ‘EMAIL-CAMPAIGN-NAME’ to your campaign name by using a dynamic value provided by the platform if possible. Alternatively you could set manual static UTMs for each link in your email using the generic manual URL string in the section below.

Change ‘ALT-TEXT’ to your email images or links alt text by using a dynamic value provided by the platform is possible. If not then you can simply not use this. Alternatively you could set manual static UTMs for each link in your email using the generic manual URL string in the section below.

Remember keep everything lowercase and avoid using symbols or punctuation such as ‘&’, ‘?’, ‘=’ or ‘%’ you can use dash ‘-‘ or underscore ‘_’ to space out words, never use an actual space ‘ ‘.

Generic Manual URL String (Campaign level)

https://example.com/?utm_source=APP-NAME&utm_medium=email&utm_term=AUDIENCE-NAME&utm_campaign=EMAIL-CAMPAIGN-NAME&utm_content=ALT-TEXT

Change ‘APP-NAME’ to your email app name such as ‘klaviyo’, ‘mailelite’ or ‘mailchimp.

Change ‘AUDIENCE-NAME’ to your List/Segment/Group/Audience such as ‘vip-customers’.

Change ‘EMAIL-CAMPAIGN-NAME’ to your campaign name such as ’20-off-summer-sale’

Change ‘ALT-TEXT’ to your email images or links alt text such as ‘sale-collection’

Remember keep everything lowercase and avoid using symbols or punctuation such as ‘&’, ‘?’, ‘=’ or ‘%’ you can use dash ‘-‘ or underscore ‘_’ to space out words, never use an actual space ‘ ‘.

MailerLite Dynamic Template (Account level)

utm_source=mailerlite

utm_medium=email

utm_term=subscribers

utm_campaign={$campaign_name}

MailerLite doesn’t have a dynamic variable tag for to pull segments or groups unfortunately so you can either use a static value such as ‘subscribers’ or a variable such as {$date}. MailerLite also doesn’t support the content UTM at account level settings. You could still use the content UTM by using manual UTM strings in your campaigns and disabling the default account level Google Analytics tracking.

Klaviyo Dynamic Template (Account level)

utm_source=Klaviyo

utm_medium={Message Type}

utm_campaign={Campaign Name (Campaign id)}

utm_term={Klaviyo profile id}

utm_id={Campaign id}

utm_campaign={$campaign_name}

utm_content={Link text or alt text}

Klaviyo wont allow you to use the dynamic {List or Segment name} tag within utm_term and only in utm_source, however I prefer to have the utm_source as static ‘Klaviyo’ so I can compare different email platforms such as friend referal and stock notification platfroms. I can always find the List or Segment names used for each campaign from referencing the campaign name/ID in Klaviyo. Since we have an opportunity to fill the utm_term tag with some data, I select {Klaviyo profile id} just so we can track the customer back in Klaviyo for any special circumstances.

You don’t need to use utm_id since we’re passing {Campaign Name (Campaign id)} in utm_campaign (handy for when you have campaigns with the same name) however, since it’s there we may as well populate it with {Campaign id} just incase we need it in a specific report setup, more data is always better.

Finally, utm_content is an additonal custom UTM parameter that I’ve added, you don’t need this but again more data is always better.