What are LinkedIn UTM parameters?

LinkedIn UTM parameters are the source, medium and campaign tags on an ad's destination URL, so the visit shows in analytics and on the CRM record as LinkedIn instead of a blank source. Save one parameter string in Campaign Manager and let LinkedIn's macros fill in campaign and ad IDs. Tools like Trakt build consistent UTM links.

Quick start: Start free with Trakt to build consistent LinkedIn UTM links and record each form submission with the campaign it came from. Or follow the manual steps below.

utm_source=linkedin&utm_medium=paid-social&utm_campaign={{AD_SET_NAME}}&utm_content={{AD_ID}}

LinkedIn fills in the values inside double curly brackets at serve time. utm_source and utm_medium stay as you typed them. Use that string on new ad sets. The names changed in October 2025, and the table below is the mapping.

A finished URL, after LinkedIn substitutes the macros, looks like this. The campaign name and the ad ID here are examples.

https://example.com/demo?utm_source=linkedin&utm_medium=paid-social&utm_campaign=enterprise-q2&utm_content=1234567

The campaign name and ad ID are illustrative, not a live Trakt campaign.

Tagged click → landing page with the UTMs still in the URL → form submission → CRM contact, then the deal.

The parameter string gets the campaign onto the landing page. LinkedIn ads revenue tracking is how that campaign stays on the deal until it closes.

LinkedIn UTM parameter table

LinkedIn's help calls these URL tracking parameters. A parameter has a key and a value. Static values are ones you type. Dynamic values are macros LinkedIn replaces. Starting in October 2025, Campaign Manager renamed the campaign hierarchy, and the dynamic macros renamed with it. If your account shows ad sets, use the new column. LinkedIn says existing ad sets update to the new macros on their own, and any new ad set, or any edit, has to use the new names.

What you are taggingMacro if the account still shows the old namesMacro on accounts that show ad sets
Account ID\{\{ACCOUNT_ID\}\}\{\{ACCOUNT_ID\}\}
Account name\{\{ACCOUNT_NAME\}\}\{\{ACCOUNT_NAME\}\}
Campaign (the old campaign group)\{\{CAMPAIGN_GROUP_ID\}\} and \{\{CAMPAIGN_GROUP_NAME\}\}\{\{CAMPAIGN_ID\}\} and \{\{CAMPAIGN_NAME\}\}
Ad set (the old campaign)\{\{CAMPAIGN_ID\}\} and \{\{CAMPAIGN_NAME\}\}\{\{AD_SET_ID\}\} and \{\{AD_SET_NAME\}\}
Ad (the old creative)\{\{CREATIVE_ID\}\} and \{\{CREATIVE_NAME\}\}\{\{AD_ID\}\} and \{\{AD_NAME\}\}

The rename is the easy place to tag the wrong level. \{\{CAMPAIGN_NAME\}\} used to mean the campaign you created. On an account that shows ad sets, \{\{CAMPAIGN_NAME\}\} is the parent campaign, and the thing you used to call the campaign is \{\{AD_SET_NAME\}\}.

Static keys you type yourself, from the same help article:

KeyValue to useWhy this value
utm_sourcelinkedinOne spelling for every ad and every post. LinkedIn and linkedin split into two sources.
utm_mediumpaid-social on ads, social on organic postspaid-social matches the paid-medium pattern GA4 uses for Paid Social. social is one of the mediums GA4 lists for Organic Social.
utm_campaignThe ad set name, via \{\{AD_SET_NAME\}\} on new ad setsThis is the row you will group closed revenue by.
utm_contentThe ad ID, via \{\{AD_ID\}\}Separates creatives that share an ad set.

LinkedIn's own example uses utm_source=LinkedIn+social, with a capital L. That is valid on LinkedIn's side. In analytics, parameter values are case sensitive, so LinkedIn and linkedin are two sources. Pick linkedin, lowercase, and keep it.

Google's custom URL guide says to always set utm_source, utm_medium, and utm_campaign together. A URL with only one of them leaves the others as (not set) when analytics has to fall back to the UTMs.

How to add the parameters in Campaign Manager

LinkedIn's rules for where each type can be saved:

  • Static parameters can be set at account level, campaign level, and ad level. You type the key, an equals sign, and the value. Example from LinkedIn's help: utm_source=linkedin.
  • Dynamic parameters can be set at account level or campaign level. The value is the macro in all capitals, wrapped in double curly brackets. Example from LinkedIn's help: campaign_id=\{\{CAMPAIGN_ID\}\}.
  • Several parameters are joined with &. LinkedIn's example shape is campaign_id=\{\{CAMPAIGN_ID\}\}&account_name=\{\{ACCOUNT_NAME\}\}&utm_source=linkedin.
  • Parameters already on the destination URL stay there. Account, campaign, and ad parameters are combined with them. They are not a replacement.

Two limits from LinkedIn and from the dynamic UTM tracking reference:

  • The same key in the destination URL and in the tracking parameters produces duplicate parameters. Use each key once.
  • Conversation Ads and Message Ads are listed as unsupported for dynamic tracking parameters. Put static UTMs on the destination URL when that format has one.

Supported characters, from LinkedIn's help:

AllowedBlocked
KeyLetters, numbers, underscorePlus, hyphen, spaces, and symbols such as ?, !, @, #, braces, and brackets
ValueLetters, numbers, underscore, plus, hyphenSpaces and symbols such as ?, !, @, #, braces, and brackets

utm_source is a legal key because the underscore is allowed and the hyphen is not. paid-social is a legal value because the hyphen is allowed in the value. A space is not. LinkedIn's examples encode a space as +.

Check the served URL before the ad spends. Open the ad, follow it to the landing page, and read the address bar. You should see utm_source=linkedin, utm_medium=paid-social, a filled-in campaign, and a filled-in ad ID. A literal \{\{AD_SET_NAME\}\} still sitting in the URL means the macro was pasted somewhere Campaign Manager does not substitute it. A missing parameter means that level has no tracking parameters saved, or a redirect dropped the query string.

If you want the LinkedIn parameters kept on each form submission without a hidden field per tag, pre-register for Trakt.

Organic posts, Lead Gen Forms, and the closed deal

Dynamic macros are an ads feature. An organic post on the company page needs a hand-built URL:

https://example.com/demo?utm_source=linkedin&utm_medium=social&utm_campaign=founder-post-october&utm_content=company-page

Use utm_medium=social for organic. Use a different utm_content when an employee shares the same URL, so the company page and the employee share stay in separate rows. Keep utm_source=linkedin on both.

A Lead Gen Form keeps the person on LinkedIn, so a destination-URL parameter never arrives. Add the campaign as a hidden field on the form and map it into the CRM. Why LinkedIn Lead Gen Form leads show up as unknown walks through that hole.

The UTM dies again at the form if the landing page has the parameters and the form posts name and email only. Why UTM data disappears at form submission is that break. The revenue report, grouped by utm_campaign, is the point of the template. LinkedIn ads revenue tracking is the closed-deal side.

Google Ads will append its own click ID when auto-tagging is on. LinkedIn will append the URL parameters you saved, and it will leave the URL alone when you have saved none. There is no LinkedIn equivalent of turning on a single account checkbox and getting a click ID. The template above is the whole mechanism. Side-by-side naming for Google's parameters is in how to set up Google Ads UTM parameters. If you would rather generate the static half from a saved source list, UTM builder tools compares the options, including Trakt's builder.

What Trakt stores after the click

The template is the part you configure in Campaign Manager. Trakt picks up the visit after that.

Trakt stores the UTMs from the latest tagged visit in a first-party cookie for 90 days. A return in the same browser, with no new tags, keeps utm_campaign. A later tagged visit replaces it.

On submit, Trakt records the submission with that source attached, including when the form has no hidden fields. Won deal value is credited to utm_source on Trakt's dashboard. A closed-won report by campaign inside your own CRM still needs utm_campaign mapped onto the contact and copied onto the deal.

Pre-register for Trakt when you want that cookie and the submission record. The Campaign Manager parameter string is still yours to paste.

Frequently asked questions

What UTM parameters should I use on LinkedIn ads?

Use utm_source=linkedin, utm_medium=paid-social, utm_campaign set to the ad set name, and utm_content set to the ad ID. On accounts that show ad sets, the macros are {{AD_SET_NAME}} and {{AD_ID}}. LinkedIn renamed these in October 2025: the old CAMPAIGN_NAME is now AD_SET_NAME, and the old CREATIVE_ID is now AD_ID. Save the string as URL tracking parameters in Campaign Manager, and use each key only once so the destination URL and the tracking parameters do not duplicate it.

Does LinkedIn add UTM parameters automatically?

LinkedIn appends the URL tracking parameters you saved at account, campaign, or ad level. It does not add a click ID the way Google Ads adds a gclid when auto-tagging is on. An ad with no parameters saved goes out with whatever is already on the destination URL. Dynamic macros are filled in at serve time. If you still see the curly brackets in the landing-page URL, the macro was pasted somewhere Campaign Manager does not substitute it.

Can I use UTMs on a LinkedIn Lead Gen Form?

A UTM on a destination URL rides along when the ad sends someone to your site. A Lead Gen Form keeps the person on LinkedIn, so that URL is never requested. Add the campaign name as a hidden field on the Lead Gen Form and map the field into the CRM. Conversation Ads and Message Ads are also outside LinkedIn's dynamic tracking parameters. Use static parameters on the destination URL when the format has one.

Do LinkedIn UTM parameters change ad delivery?

URL tracking parameters are for your analytics and your CRM. LinkedIn's help describes them as identifiers so you can see which campaign or ad sent the visit. They are combined with any parameters already on the destination URL. Keep the values lowercase and free of the characters LinkedIn blocks, so the landing page loads and the rows in analytics stay in one source.