Tracking

The No-BS Guide to UTM Parameters

Most businesses running paid ads are leaving a significant amount of attribution data on the table, not because they lack sophisticated tracking, but because their link tagging is inconsistent or missing entirely. The foundation of any attribution setup is the humble UTM parameter.

Get UTM tagging right and you have clean, consistent data flowing into your analytics. Get it wrong and your reports fill up with “No Source” and “Direct” sessions attached to real revenue you can't explain.

What UTM parameters are

UTM stands for Urchin Tracking Module, a naming convention from the early 2000s that became the standard way to pass campaign information through a URL. When someone clicks a link containing UTM parameters, those values are captured by your analytics tool and attached to that session.

There are five parameters, each serving a distinct purpose:

  • utm_source: Where the traffic is coming from. Think of this as the publisher or platform: meta, google, newsletter, podcast.
  • utm_medium: The marketing channel type:cpc (paid search), paid-social, email, organic-social. This lets you group sources into channel buckets.
  • utm_campaign: The specific campaign name:spring-launch-2026, brand-awareness-q2. Keep this consistent across all ads in the same campaign.
  • utm_term: Used for paid search to capture the keyword that triggered the ad. Less relevant for social campaigns, but still populated by some platforms automatically.
  • utm_content: Used to differentiate ads within the same campaign and ad set: video-v1, carousel-blue, headline-test-a. This is where creative-level data lives.

A properly tagged URL looks like this (line-wrapped for readability):

https://yoursite.com/landing?utm_source=meta&utm_medium=paid-social &utm_campaign=spring-launch-2026&utm_content=video-v1

A naming convention that keeps reports clean

UTM values are case-sensitive. Meta and meta are two different sources. Paid-Social and paid-social are two different mediums. If different people on your team tag links differently, your reports fragment and your channel data becomes unreliable.

A few rules that prevent most of the common chaos:

  • Always lowercase. No exceptions. Lowercase everywhere, all the time.
  • Use hyphens, not spaces or underscores. Spaces become %20 in URLs, which is ugly and error-prone. Hyphens are clean and consistent.
  • Document your values in a shared reference. Maintain a simple doc or spreadsheet that lists the approved values for utm_source, utm_medium, and utm_campaign. Anyone building a link should check the list first rather than inventing new values.
  • Use a consistent UTM builder. Whether that's Google's Campaign URL Builder, a spreadsheet template, or a tool built into your analytics platform. Having one place where links get created reduces inconsistency.
  • Be specific but predictable. Campaign names should be descriptive enough to identify in a report months later, but follow a pattern (e.g., audience-goal-quarter) so they sort and filter cleanly.

Common mistakes that corrupt your data

Inconsistent source or medium values

If one campaign uses utm_source=facebook and another uses utm_source=meta, your reports will show two separate sources with incomplete data in each. Over time this makes trend analysis impossible because you're comparing different buckets that should be the same thing.

Missing UTMs on paid links

Any paid link without UTM parameters will arrive in your analytics as Direct or Organic, depending on the referrer. This means revenue from that campaign gets credited to the wrong source, often inflating “Direct” traffic and making paid channels look less effective than they are. If a link is paid, it must be tagged.

Tagging internal links

UTM parameters should only appear on external links: ads, emails, social posts. Adding UTMs to internal navigation links (e.g., a banner from your homepage to a product page) will overwrite the original session source when someone clicks it, corrupting the attribution for that visit. Internal links should never carry UTM tags.

Using campaign names that change mid-campaign

Renaming a campaign after it's already running means the historical data splits across two names in your reports. Decide on the name before launch and keep it consistent for the life of the campaign.

How to apply UTMs across channels

  • Paid social (Meta, TikTok, etc.): Use the platform's URL parameter fields in the ad setup. Most platforms support dynamic values (like {{adset.name}}) that auto-populate utm_campaign or utm_content, useful for keeping tags accurate without manual updates per ad.
  • Paid search (Google, Bing): Use auto-tagging (gclid) plus manual UTMs for campaigns where you want custom attribution data in your own analytics, not just in Google Analytics.
  • Email: Tag every link in every email. The utm_medium should be email, utm_source should be your email platform (klaviyo, activecampaign), and utm_campaign should identify the specific send.
  • Organic social / content: Tag links shared in bios, posts, and stories even for organic content. This is the only way to differentiate organic social traffic from direct in your reports.
  • Podcasts and offline: Use a vanity URL that redirects with UTMs attached, or a short link (like a Bitly link) that carries the UTM parameters through the redirect.

The important caveat: UTMs label clicks, not revenue

UTMs tell you which campaign a visit came from. They do not, by themselves, tell you which campaign drove a sale, particularly for businesses with a gap between lead capture and closed revenue.

For a direct-to-consumer store with an immediate purchase, UTMs in your analytics tool may be enough. For a business with a sales call, a CRM handoff, or a subscription that closes days or weeks after the initial click, UTMs need to be carried from the lead capture all the way through to the payment event. That requires passing UTM values into your CRM at the point of lead capture and connecting that data to your payment records later.

Without that connection, UTM data tells you about traffic, not about attribution. Clean UTM tagging is the necessary foundation, but revenue attribution requires the full chain from click to lead to closed sale.

Where Cavor fits in

Cavor ingests UTM data from your leads and carries it through to payment events, so the campaign source captured at lead entry is what gets credited when the sale closes, even weeks later.