HeyMark
Content

Blog Analytics

Social media UTM tracking: label links and measure visits

7 min read
A chain link and three tags connect a path to a destination doorway.

Create consistent campaign links, test the click path and understand which website visits you can attribute to social media. Includes a builder and a downloadable log.

UTM parameters are labels added to a link to identify the source, medium and campaign behind a website visit. For social media, they help distinguish a link shared in an Instagram story from one shared on LinkedIn, even when both point to the same page.

Useful tracking needs three things: a naming convention, a destination that preserves the labels and an analytics tool configured to collect them. A link alone does not record a purchase or establish which post persuaded someone.

This article includes a link builder, a downloadable campaign log and a way to check the click path before publishing. The approach works for an internal team, a freelancer or an agency managing several brands.

What each UTM parameter means

The three core labels are utm_source, utm_medium and utm_campaign. utm_content identifies a creative or placement. Google describes these fields in its campaign URL documentation. Choose names that answer your team’s reporting questions.

Tag dictionary for a fictional campaign
ParameterQuestionOur example convention
utm_sourceWhich platform did we share this link on?instagram or linkedin
utm_mediumWhat distribution channel did we use?social for organic; paid_social for paid
utm_campaignWhich initiative does it belong to?taller_octubre
utm_contentWhich creative or placement does it identify?story_demo or post_temario

Swipe the table to see all columns.

This dictionary is an editorial recommendation. Before adopting it, check how your analytics groups media. In GA4, classification follows the default channel group rules. A label does not ensure a visit will appear under the channel you expect.

utm_term is used for paid keywords. Other fields, such as utm_id, can identify campaigns or support data imports. Add them when a reporting need exists. This builder handles the four tags in the table and preserves other parameters already in your URL.

Name campaigns consistently

Google treats UTM values with different capitalization as different values. Instagram and instagram can produce separate rows, although GA4’s default channel group rules are case-insensitive. We recommend keeping a short dictionary where the team agrees on source, medium, campaign and content before creating links.

Our fictional pottery workshop uses taller_octubre across its October campaign. The campaign name stays in Spanish in both versions of this example because the underlying data should stay identical. Change the source when the platform changes and the content when the creative changes. A forwarded story link keeps its tags: they identify the original placement, without establishing who forwarded it last.

Use lowercase, a consistent separator and names you will understand several months later. Record dates and brand context in your spreadsheet instead of packing every operational detail into a URL. For client work, agree on the dictionary during social media client onboarding.

These labels travel in visible links. Keep names, email addresses, customer identifiers and confidential commercial details out of them. A campaign name should remain interpretable without revealing personal information. Google’s documentation explains how to avoid sending personally identifiable information.

An Instagram and LinkedIn example

The workshop shares a demonstration in an Instagram story and a class outline on LinkedIn. Both links point to the same page. Here is the Instagram link, using a fictional destination:

https://example.com/workshop?lang=es&utm_source=instagram&utm_medium=social&utm_campaign=taller_octubre&utm_content=story_demo#book

lang=es is a parameter already used by the destination; it stays the same here to preserve the Spanish example’s exact URL. #book points to a page section. The UTM parameters belong between them. Adding them after the hash would put them in the fragment instead of the query string.

For LinkedIn, change utm_source to linkedin and utm_content to post_temario. Keep the campaign as taller_octubre. You can then inspect the campaign overall and separate the creatives. Reusing the exact same tagged link across every post preserves campaign-level tracking but loses that distinction.

There is a practical condition: readers must be able to open the link from its placement. A URL written in text that a platform does not make clickable provides a different path from a button or profile link. Test the actual placement on a phone before approving it.

Enter the destination and labels. The builder keeps other parameters and the fragment, replacing utm_source, utm_medium, utm_campaign and utm_content. It preserves the capitalization you enter. Leaving content blank removes an existing content tag so an older creative label does not carry over.

Build your campaign link

Fictional example. Preserves destination parameters and fragments; replaces the four tags in this form. The link is calculated in your browser.

Link details

The calculation runs in your browser without requesting the destination page or checking its analytics. Data collection depends on that site’s configuration. The builder checks link structure; you need to check that the destination exists and the full click path retains the labels. With JavaScript disabled, the static example remains visible.

Download the UTM link log as a CSV. It includes both fictional creatives and columns for destination, labels, final URL, reviewer and test outcome. Open it in a spreadsheet and replace the examples.

Store the approved URL alongside the content item. If you use a short link or an intermediate page, record that path too. A status such as “awaiting test” or “checked” separates a correctly structured URL from one someone actually opened.

Before publishing, check the following:

  1. Open the link from its intended placement, including the platform’s in-app browser where relevant.
  2. Check the final page and confirm that redirects retained its parameters.
  3. Verify that analytics collects the campaign under the applicable configuration and consent settings.
  4. Check the subsequent action separately: a form submission, booking or another defined event.

Your test clicks can create QA activity. Record or exclude it using your team’s established method so it does not become campaign response in the report.

Read visits and subsequent actions separately

In GA4, session source/medium and campaign are available in Traffic acquisition. User acquisition answers a different question about first acquisition. Google’s traffic source scope documentation explains that distinction.

In a fictional result, Instagram brings 120 sessions and 6 form submissions; LinkedIn brings 40 sessions and 4 submissions. With the same definitions and reporting period, submissions divided by sessions gives 5% and 10%. Instagram produces more submissions; LinkedIn has a higher ratio. Neither observation requires a universal winner.

If one session can submit the form several times, that ratio counts events per session. To describe sessions that completed an action, you need deduplicated data at that scope. Choose the KPI that matches your objective and keep the absolute counts alongside the ratio.

The log reflects what your system observed. Configuration, consent or cross-domain journeys can leave activity unobserved. Someone can also forward a link with its original tags. Present the result as attribution under that method, with its limits. UTMs alone do not establish incremental sales.

Troubleshoot fragmented campaign data

Look for naming differences before changing a campaign: taller_octubre, Taller_octubre and taller-octubre are different values. Check whether links reached the same destination and whether an intermediate service removed parameters. If advertising auto-tagging is already in use, review its configuration before adding another set of rules.

Reserve these labels for campaign links that bring visitors to your site. Use analytics events and paths to observe internal navigation. Document the reporting period, time zone and scope as well. A rise in social clicks and a rise in website sessions may have different sizes.

In your monthly social media report, show the campaign and measured action next to the conclusion. If you are preparing a content test, assign each variant’s label before sharing it. Start by opening one real link, checking its analytics record and storing that exact version alongside the post.

Sources and scope

The dictionary, builder and examples are HeyMark’s editorial work. The workshop figures are fictional. Technical descriptions draw on the linked official Google Analytics documentation. The cover is an AI-generated illustration. This article’s builder is a resource separate from the features of the HeyMark application.

Plan your next post in HeyMark.

Keep the idea, review the draft with your team, and see how it performed in the accounts you connected.