Blog

UTM parameters on short links

Put the UTM parameters on the destination, then shorten it. The short link answers each click with the full destination address, query string included, so Google Analytics sees every parameter. Parameters that you add to the short link itself reach the destination only if the shortener passes them through.

What each parameter means

Google Analytics reads campaign parameters from the landing page address. Its URL builder help page defines the six that most campaigns use:

ParameterUse it for
utm_sourceWhere the click came from: newsletter, linkedin, billboard
utm_mediumThe channel: email, social, cpc, print
utm_campaignThe campaign or promotion: spring-sale
utm_termThe paid search keyword
utm_contentWhich creative or link in the same message
utm_idA campaign ID that matches your ad or cost data

Values are case sensitive: newsletter and Newsletter are two sources in your reports. Pick lowercase and keep to it. A missing parameter shows as (not set).

Tag the destination, then shorten

A short link stores one destination. When someone clicks, the short-link service replies with a redirect whose Location header holds that destination, as the HTTP standard defines. The query string is part of the address, so UTM parameters on the destination arrive at your site with the visitor.

In Flared, open More options under the destination and fill in Source, Medium, Campaign, Term, or Content. Flared writes them into the destination as utm_source and so on. From the CLI:

flared link create https://example.com/pricing --slug spring-newsletter \
  --utm-source newsletter --utm-medium email --utm-campaign spring-sale

For utm_id, or any other parameter, put it in the destination address yourself. Flared keeps the whole address.

Test it before you send

Ask for the short link without following the redirect, and read the address it returns:

curl -sI https://flared.link/spring-newsletter | grep -i '^location'
location: https://example.com/pricing?utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale

If the parameters are in the location line, they reach your site. This request does not count as a click in Flared’s analytics. Flared answers with a 302 and cache-control: no-store, so the test shows the destination as it is now, and a later change to the parameters applies to the next click.

Parameters on the short link

Some shorteners copy a query string from the short link onto the destination, so flared.link/spring?utm_source=x would tag the visit. Rules for this differ between services: Dub, for example, passes them through and lets them replace the destination’s own values. Flared does not pass them through. Each Flared link carries its own tags, so a copied or forwarded link cannot change your reports.

One link for each channel

To compare channels, make one short link for each, all to the same page. Each link gets its own source, and each has its own click analytics in Flared, next to the sessions in Google Analytics:

for source in newsletter linkedin x; do
  flared link create https://example.com/pricing --slug "spring-$source" \
    --utm-source "$source" --utm-campaign spring-sale
done

An AI assistant connected to the MCP server can do the same: ask it to create the three links with a utm object for each.

App links keep their own address

A Flared link can send iPhone and Android visitors to an app link. The UTM fields apply to the main destination. If an app link needs parameters, write them into the iPhone or Android address yourself.

Do UTM parameters hurt SEO?

UTM links belong in emails, posts, ads, and print, where you control the link. Link to your own pages without them, and give each page a canonical URL, so search engines index the address without the parameters.