Google has a neat UTM builder tool that is invaluable when building your UTM structure. For a Facebook specific UTM builder, check out this Facebook UTM Builder tool. When running paid advertising, many sites use UTM parameters to pass through parameters (or campaign data) into the final click destination. From there, the UTMs can stay with the user profile for the duration of the cookied browsing experience. The UTMs offer a piece of data that helps us track our ad efforts.

A brief history lesson, UTM stand for Urchin Tracking Module and was initially created by a company called Urchin. Urchin preceded Google Analytics. Then, in 2005, Google acquired them and never renamed the parameters.

In terms of Facebook or Meta advertising, the UTM is inserted in the URL parameters field of the ad settings.

UTMs are browser/client side tracking parameters put in place as an additional layer to report back to your CRM (store, database, etc.). This report will contain what click came from what UTM and eventually track all the way down to the conversion. Because they are browser side, they are not fool-proof and not perfect. Server-side tracking via cAPI is the way to go as of today.

These UTMs help us track the ad, campaign, ad set and any additional relevant data that we need to track in our campaigns.

In addition to the Google builder above, Facebook offers a dynamic UTM parameter tool right under their URL parameter box.

Here are the current dynamic parameters that Facebook offers advertisers:

  • {{campaign.id}}
  • {{adset.id}}
  • {{ad.id}}
  • {{campaign.name}}
  • {{adset.name}}
  • {{ad.name}}
  • {{placement}}
  • {{site_source_name}}

Let’s go over each one and identify a use case for each UTM Parameter that is offered.

{{campaign.id}}

The campaign ID is the ID of the campaign. It will be a string of numbers that identifies the campaign ID. When a campaign is published, a new ID is generated. Every campaign ID is unique and therefore can never be duplicated. A use case for this is if we need unique names and numbers for each UTM in our database. And, we’re trying to track campaigns by their IDs.

{{adset.id}}

The ad set ID is the ID of the ad set. It will be a string of numbers that identifies the ad set ID. When a campaign is published, a new ID is generated. Every ad set ID is unique and therefore can never be duplicated. A use case for this is if we’re trying to track ad sets by their IDs.

{{ad.id}}

The ad ID is the ID of the individual ad. It will be a string of numbers that identifies the ad ID. When a campaign is published, a new ID is generated. Every ad ID is unique and therefore can never be duplicated. A use case for this is if we’re trying to track ads by their IDs. This is not the POST ID of the ad. There is no currently supported way to track the post ID through the UTMs. Post IDs are very useful when duplicating ads as you can have the same post ID running in different ad IDs. However, when optimizing and scaling, the only thing that is important to track is the performance of the Post ID. Tracking by individual Ad Ids is not only inefficient, but can get very messy.

{{campaign.name}}

This is a very useful dynamic UTM parameter. Appending this to your URL parameters is going to help identify the name of the campaign and the origin of the acquisition. The campaign name is not unique and is user-generated. You have control over the campaign name based in the campaign settings.

{{adset.name}}

The ad set name is also another useful dynamic UTM parameter. This will append the name of your ad set to your UTM and therefore track what ad set the click then conversion came from. This is not unique and is user generated. You can control the name in the ad set settings.

{{ad.name}}

For my purposes and for the purposes of scaling on Facebook Ads, this is the most useful UTM. I can have an ad named the same across multiple campaigns and ad sets and still track performance down to the same ad. Adhering to proper naming conventions allows me to track many variables and isolate variable performance with the ad name. Because the name is controlled in the ad settings, I can easily make a unique name or keep the old name for the purposes of cross-audience testing. For me, this is the most used UTM.

{{placement}}

This tells us what placement the click originated from. This will tell us whether the clicks are coming from Instagram, Facebook, Reels, Stories, In Stream, Search, or the Feed to name just some of the facebook placement options that are available.

{{site_source_name}}

When your ads are running on any of the Facebook network properties, they will be tagged with the site source name. IE Instagram or Facebook. Sometimes you’ll even get some of the audience network names that come through the UTMs. There really isn’t a great use case unless you’re going to be modifying your placements on the site.

If we’re talking about unique names, I go over how to keep Campaigns, Ad Sets and Ads unique in my Facebook Ads Virtual Course in the Naming Conventions Lesson.

However, after running a lot of volume and scale via Facebook Advertising, there are instances that Facebook forgets to append the UTMs. I prefer to just include my UTM parameters right in the website URL settings on the ad level settings in Facebook Ads.

Here are the URL parameters that I like to use:

?utm_medium=facebook&utm_source=[unique-identifier-of-your-source or offer-name]&utm_campaign={{campaign.name}}&utm_term={{ad.name}}

Another option is something like this

?utm_source=facebook&utm_medium={{placement}}&utm_campaign={{campaign.name}}&utm_content={{adset.name}}&utm_term={{ad.id}}

You will insert the ENTIRE landing page URL with the appended UTM parameters in the Website URL box in Facebook Ads.

So the entire URL that you put in the “Website URL” box on Facebook will look like this:

https://funnelinsiders.com?utm_source=facebook&utm_medium={{placement}}&utm_campaign={{campaign.name}}&utm_content={{adset.name}}&utm_term={{ad.id}}

Feel free to use the entire URL above in your paid ads. If you need additional customization, here’s a Facebook dynamic parameter URL UTM generator tool. 

The most important part is consistency with your UTMs. Certain programs require UTMs to be in certain orders, but many don’t. It’s just up to you how you want to organize your data.

The UTMs will be used to run reports and analysis on many levels by using filters. You can filter by source, medium, campaign, content and term on many platforms by default. This gives you the ability to track and optimize your campaigns based on the UTMs and identify where conversions are coming from.

What questions do you have about UTMs? Include them in the comments below.

About the Author Yury Vilk

I've been in advertising since 2006 and started off promoting affiliate offers. From there I helped scale multiple high-5-figure/day campaigns on Google Ads and eventually found my way in Meta Ads. I've worked with & owned eCommerce stores and helped build multiple 8-9 Figure brands both straight sell and subscription. I've helped build and manage a disruptor team with a brand worth over $500M managing over $100k/day in ad spend personally. I've helped venture-capital backed unicorns worth over $2B scale on paid media. I currently help a variety of clients build, scale and grow with paid advertising.

    • Hey Michael! Thanks for the comment. This will cause unnecessary duplication. Choose one. I recommend just appending the string right on the URL in the Website URL box in the ad level settings.

  • What I’m noticing is that when using these dynamic UTM parameters, Google Analytics (or any other analytic tool) tends to not always catch up. For example, when the {{adset.name}} = “Real Estate – France” then Google Analytics will often assign 90% of these paid media visitors under this corresponding title (real estate – france), but ends up showing the other 10% without filling in the dynamic parameter. This 10% then shows as “{{adset.name}}”, which becomes rather unhandy when you’re using lots of ad sets, as it becomes a pile of mixed data.

    Any idea what causes this or how we can make sure that all facebook paid traffic get the correct dynamic name within GA?

    • Are you including your UTMs as part of the URL or are you adding them to the URL parameters box? My preference is to include the entire URL in the “Website URL Field”, not in the “URL Parameters field”.

  • {"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}
    >