A UTM naming convention is not just a formatting preference. It is the contract that lets a SaaS team compare campaigns after links have passed through ads, newsletters, partner pages, signup, trials, and payment. Without that contract, one source becomes linkedin, LinkedIn, and li; one campaign gets renamed halfway through a launch; and revenue fragments across labels that describe the same work.
The solution is not the longest possible campaign name. It is a small, controlled vocabulary that gives each field one job, a builder that prevents improvisation, and a validation process that follows the data to confirmed revenue. The convention must be easy enough for a founder to use quickly and strict enough to survive more channels, teammates, and agencies.
This guide develops that system for SaaS. It covers field semantics, naming trade-offs, recurring campaigns, paid-platform identifiers, privacy, historical cleanup, and the tests needed before a campaign report can guide budget.
Give every UTM field one stable meaning
Google's official custom campaign URL documentation defines utm_source as the referrer, utm_medium as the marketing medium, utm_campaign as the campaign or promotion, utm_term as the paid keyword, and utm_content as a way to distinguish creatives. It also documents utm_id for a campaign identifier. These definitions are a useful baseline even when Google Analytics is not your reporting destination.
For a SaaS taxonomy, translate those fields into questions:
utm_source: Which specific platform, publisher, list, or partner sent the visit?utm_medium: What type of distribution carried it?utm_campaign: Which coordinated marketing initiative does it belong to?utm_content: Which creative, placement, or link variant was clicked?utm_term: Which paid keyword or intentionally defined targeting value applies?utm_id: Which immutable campaign record should systems join to?
A reasonable link might be:
https://example.com/demo?utm_source=linkedin&utm_medium=paid-social&utm_campaign=2026-q3-attribution-launch&utm_content=founder-video-01&utm_id=cmp-0284The exact words are less important than consistent semantics. Do not put paid-social in utm_source for one tool and in utm_medium for another. Do not use utm_campaign as a container for source, medium, creative, owner, audience, and destination when dedicated fields already exist. Overloaded names look informative in a spreadsheet but become difficult to group and change.
Talivia's UTM tracking documentation provides the collection-side foundation. Write your organization-specific vocabulary beside it. Platform documentation explains what a field can contain; your taxonomy decides what it will contain for your team.
Design a vocabulary that can survive change
Start with source and medium because they form the broadest reporting groups. Source values should identify an origin such as google, linkedin, customer-newsletter, or an approved partner slug. Medium values should come from a much smaller list such as cpc, paid-social, email, organic-social, affiliate, or referral. If compatibility with another analytics product's channel rules matters, adopt that product's accepted medium values deliberately rather than assuming a label will map as expected.
Choose one case and one separator policy. Lowercase values avoid case variants. Hyphens are readable inside values, but underscores can also work if they are already established. Consistency matters more than debating punctuation. Define how to handle renamed platforms too. A company can display a new brand name while historical analysis still needs one stable source key. Change the approved key only through a documented migration, not according to each campaign author's preference.
Campaign names should be compact but decodable. A practical pattern is:
<period>-<initiative>-<audience>Examples include 2026-q3-attribution-launch-founders, 2026-09-webinar-trial-users, and evergreen-stripe-guide-prospects. Include a period when the initiative repeats and omit it for genuinely evergreen work. Use an audience segment only when it changes the campaign decision. If every name ends in all-users, the segment adds length without information.
Do not encode facts that already live elsewhere. Source and medium do not belong in the campaign value. Creative version belongs in utm_content. The landing page is collected as a page dimension. Campaign owner belongs in the registry. This separation allows one initiative to run across email, paid search, and a partner placement while still grouping as one campaign.
Human-readable names will eventually change. An immutable utm_id can preserve the join to a campaign registry even when a display label is corrected. Google documents utm_id as a campaign ID used to identify a campaign or promotion. For an independent SaaS stack, it can serve the same basic purpose if every producer and destination agrees on its meaning. Keep it opaque, short, and non-personal, and never reuse it for a later campaign.
Build a campaign registry, not only a style guide
A written naming page explains the rules, but it does not show which combinations have already been issued. Create a registry with one row per campaign ID and explicit columns for campaign name, status, start date, owner, business objective, approved destinations, sources, mediums, and notes. Add separate link rows when one campaign has many creative and placement combinations.
The registry can begin as a controlled spreadsheet. Use dropdowns for source and medium, formulas for the final URL, and validation that rejects capitals, spaces, unapproved fields, missing destinations, and duplicate IDs. A larger team can move the same contract into an internal link builder or marketing operations system. The important change is that people select approved values rather than inventing them in free text.
Keep campaign status explicit: planned, active, ended, or archived. Archiving prevents accidental reuse while preserving interpretation of historical reports. Never delete a vocabulary value merely because a platform or partner is no longer active. Mark it inactive for new links and retain its definition for old data.
Define who can change each layer. A marketing operations owner might approve sources and mediums, while campaign owners can create names from an accepted pattern. Engineers should own redirect preservation and landing capture, not the spelling of launch names. Finance or the founder should define which provider events count as realized revenue. Clear ownership prevents every reporting problem from becoming a request to modify the analytics code.
The registry should not contain secrets or personal data. UTM values are visible in address bars, browser history, screenshots, referrer logs, analytics exports, support tickets, and forwarded links. Use segment codes such as trial-users, not email addresses, account IDs, company lists, or health and financial characteristics. If a campaign needs sensitive targeting logic, keep it inside the sending platform and store only a safe aggregate label in the URL.
Handle recurring campaigns and experiments deliberately
Recurring newsletters, webinars, lifecycle messages, and always-on ads expose weak conventions quickly. A label such as newsletter cannot distinguish issues, while a timestamp down to the minute creates needless fragmentation. Choose the decision level before naming the link.
For a weekly newsletter, the campaign might be 2026-w37-founder-letter, with utm_content=hero-attribution-guide and utm_content=footer-demo distinguishing positions. For an automated onboarding sequence, use a stable campaign such as evergreen-onboarding-trial, then identify the message and placement through content values like day-03-case-study. The sequence remains comparable over time while individual links can be diagnosed.
Experiments need a similar separation. Keep the campaign constant when variants belong to one budget and hypothesis. Put video-01 and image-02 in utm_content, or use stable experiment and variant keys if a testing system already defines them. Creating a separate campaign name for every creative makes campaign totals expensive to reconstruct.
Do not use UTMs on ordinary internal navigation. Tagging a pricing button with utm_source=homepage can create a new campaign touch and obscure how the visitor originally arrived. Track internal promotions with events, placement fields, or an experiment system instead. Preserve inbound campaign fields for acquisition evidence.
The guide to diagnosing Direct traffic explains why this boundary matters. UTMs are especially useful for controlled inbound links where referrer data may be absent, including email, private communities, mobile apps, documents, QR codes, and partner placements. They are not a universal label for every click on your property.
Preserve the contract from link to signup
A perfect taxonomy still fails if the query string disappears before collection. Test the published URL, not only the string generated by a spreadsheet. Follow shorteners, ad trackers, localization redirects, authentication handoffs, and canonical redirects until the final landing page loads. Confirm that approved parameters remain present long enough for the collector to read them.
Open each test in a fresh browser profile so an earlier session does not hide a failure. Record the expected campaign ID, source, medium, campaign, content, final destination, and observed session. Test representative desktop and mobile paths when native applications or in-app browsers are involved. A successful page load is not enough; the session analytics view should show the exact values attached to the new visit.
At signup, connect the eligible anonymous session to a stable internal account identifier under documented identity rules. Keep first-touch acquisition evidence separate from latest-session evidence. A new visit should not silently overwrite the original acquisition record unless the chosen model explicitly calls for that behavior.
This is also where naming and identity responsibilities separate. If utm_source=LinkedIn appears instead of the approved lowercase value, the producer or builder failed. If the landing session is correct but signup has no source, the identity handoff failed. If signup is correct but payment is unmatched, the billing join failed. One dashboard row may expose all three, but each needs a different repair.
For longer journeys, use the event architecture in the SaaS conversion tracking guide to connect landing, signup, activation, and payment. UTM parameters describe acquisition context. They should not replace product events, account identity, or payment state.
Validate UTM performance against confirmed revenue
Session and signup reports can confirm collection, but they cannot establish collected revenue. SaaS buyers may pay after a trial, on another device, through a teammate, or without returning to the browser success page. Create the payment connection with a non-sensitive session or account reference supported by the checkout flow, then accept provider-side confirmation as the financial event.
For Stripe implementations, the Stripe UTM revenue attribution guide covers how to preserve acquisition context and join it to server-confirmed payments. Talivia also provides specific Stripe revenue attribution paths for supported checkout patterns. The naming convention stays provider-independent, while the payment join follows the provider's actual interface and event model.
Review the UTM campaign revenue report after an end-to-end test. Check that the campaign appears once, not under spelling variants. Then inspect the underlying journey: landing session, identity handoff, payment reference, confirmed amount, currency handling, and attribution rule. A total is trustworthy only when representative records can be traced.
Keep several states visible rather than forcing every record into a campaign. A session can have valid UTMs but no signup. An account can have acquisition evidence but no payment. A confirmed payment can remain unattributed if the connection cannot be proved. These are operational facts, not values to fill with a fallback label.
UTMs also do not choose an attribution model. First touch, latest touch, and other rules can assign different credit to the same observed journey. Keep the raw campaign evidence stable, record the selected rule, and avoid rewriting campaign values to imitate the preferred model.
Audit drift without rewriting history
Run a lightweight audit every week during rollout and at least monthly after the taxonomy stabilizes. List distinct source, medium, campaign, content, and campaign ID values created in the period. Compare them with the registry and flag unknown values, case variants, empty required fields, reused IDs, unexpected source-medium combinations, and campaigns pointing to unapproved destinations.
Prioritize prevention over cleanup. Fix the email template, ad suffix, partner instructions, or builder that produced a bad value. Report-time aliases can make historical charts readable, but silently normalizing raw data removes evidence about where the process failed. Keep raw values, add a documented reporting map, and apply corrected names only to future links.
Test a small matrix before every important launch:
- Generate links through the approved builder for each source and medium.
- Follow every production-like redirect in a non-production payment path.
- Verify exact values on the landing session and registered account.
- Complete provider test payments for the major checkout paths.
- Confirm campaign revenue appears once and matches the test evidence.
- Test malformed, duplicate, missing, and expired references so failures remain visible.
A stable convention makes this QA repeatable. It also lets the team answer a more useful question than “Which label has the most clicks?” The report can compare initiatives, channels, creatives, activated accounts, and confirmed revenue without manually repairing names before every review.
Start with a small contract: approved source values, a short medium list, one campaign pattern, safe content labels, immutable campaign IDs, and a registry owner. Apply it to the next campaign rather than attempting to rewrite every historical URL. Then test one journey all the way to payment.
To validate that path in Talivia, create an account, publish one uniquely tagged test link, inspect its session, complete signup, and use your provider's test mode for payment. Once the campaign name and ID remain intact through confirmed revenue, expand the convention to the rest of your active links. Clean attribution begins with naming, but it becomes useful only when the evidence survives to the outcome your SaaS actually values.


