UTM parameters: a naming plan and campaign tracking checklist
Use utm_source for the origin, utm_medium for the marketing channel and utm_campaign for the campaign name. Keep names consistent and case sensitive, add utm_content when comparing creatives, and test the final destination before distributing the link.
In this guide
- Assign one job to each parameter
- Standardize case and spelling before launch
- Build the URL without damaging its existing structure
- Keep campaign labels separate from personal information
- Verify the landing and the reporting dimension
- Use the tags to compare outcomes, not just visits
- Common questions
- Sources & definitions
UTM parameters are labels attached to a campaign URL. They help a configured analytics system describe where a visit came from; the parameters do not install analytics, record a sale or make the ad platform and website count the same events.
A useful tagging system can fit in a small naming worksheet. Decide the permitted values before launching, reuse them across links and keep a record of changes. This prevents one campaign from splitting into several report rows because people chose different spellings.
Assign one job to each parameter
Google recommends including source, medium and campaign when adding campaign parameters. Use content to distinguish links or creatives inside the same campaign and term for a paid keyword when appropriate. Keep the values descriptive enough for your report, without adding a new field for every detail you could collect.
The example below describes a fictional newsletter with two links to the same offer. The campaign stays constant while content distinguishes the header button from the text link. These are example labels, not platform-required values.
| Parameter | Example value | Naming rule |
|---|---|---|
| utm_source | monthly_newsletter | One stable name for this traffic source |
| utm_medium | One stable name for this marketing channel | |
| utm_campaign | workspace_launch | One campaign name across the related links |
| utm_content | header_button | Distinguish this link from body_text |
| utm_term | Omitted in this email example | Use when a paid-keyword distinction is relevant |
Standardize case and spelling before launch
Treat Newsletter and newsletter as different values. Google documents case-sensitive campaign naming, so choose a convention such as lowercase words separated by underscores and use it consistently. A campaign registry with owner, purpose, start date and approved source/medium values is often enough for a small team.
Do not change the campaign name midway through a comparison without recording why. A renamed label can create a second report row and make a single campaign look like two. If you need country or creative differences, decide whether those belong in supported campaign fields or in your internal campaign register instead of improvising labels after traffic arrives.
Build the URL without damaging its existing structure
A URL may already contain a query string or a fragment. Use a URL parser so that an existing parameter is preserved and the campaign query appears before the fragment. The example keeps plan=starter and the #pricing destination while setting one value for each chosen UTM key.
URLSearchParams handles encoding for parameter values. Do not manually concatenate a second question mark or place campaign parameters after #pricing. Test the resulting link after any shortening service or redirect; a valid original link is not enough if an intermediate step strips its query.
const link = new URL("https://example.com/offer?plan=starter#pricing");
link.searchParams.set("utm_source", "monthly_newsletter");
link.searchParams.set("utm_medium", "email");
link.searchParams.set("utm_campaign", "workspace_launch");
link.searchParams.set("utm_content", "header_button");
console.log(link.href);
// https://example.com/offer?plan=starter&utm_source=monthly_newsletter&utm_medium=email&utm_campaign=workspace_launch&utm_content=header_button#pricingKeep campaign labels separate from personal information
A campaign URL can appear in browser history, logs, screenshots and shared messages. Do not put email addresses, phone numbers, access tokens or other personal identifiers into its UTM values. Google’s Analytics guidance specifically warns against sending personally identifiable information through URLs and other collected fields.
Use generic campaign and creative labels. If your business needs a customer-specific workflow, design that separately with the appropriate privacy and security controls. A public campaign label should describe the marketing effort, not identify the person who clicked it.
Verify the landing and the reporting dimension
Open one link for each creative and confirm the final page still has the intended parameters. In a properly configured test environment, inspect the analytics visit using the relevant debug tools. Then check a session-scoped traffic acquisition report for the session source, medium and campaign rather than assuming a first-user report answers the same question.
If your ad platform supports an official analytics integration and auto-tagging, follow that integration’s guidance. Google Analytics documents specific precedence rules when manual and automatic tags are combined. Adding conflicting manual labels everywhere is not a reliable way to repair an attribution problem.
- Confirm source, medium and campaign are present and use approved spelling.
- Check that the destination and every redirect preserve the intended query.
- Verify the relevant analytics collection and visitor privacy choices.
- Check the report date, time zone and traffic-source scope.
- Keep the exact distributed URL in the campaign register for later auditing.
Use the tags to compare outcomes, not just visits
Suppose two creatives share a campaign and receive 200 and 300 measured sessions. If they produce 10 and 9 conversions under the same conversion definition, their session-based conversion rates are 5% and 3%. These figures describe this sample; they do not prove that the first creative will always outperform the second.
Connect the campaign worksheet to actual spend and outcomes before calculating CPA or campaign ROI. UTM labels make grouping possible, while the calculators need the measured inputs and clear definitions. Keep the original denominators visible so a session-based rate is not later presented as a click-based rate.
Common questions
Do UTM parameters work without an analytics tag?
They remain part of the link, but a reporting system must collect and interpret them to show campaign reports. Adding labels by itself does not install measurement.
Can I reuse the campaign name for several creative links?
Yes, when those links belong to the same campaign. Keep the campaign stable and use a consistent content value to distinguish the specific link or creative.
Are UTM parameters secret?
No. They are visible in the URL and may be stored or shared with it. Use campaign labels and never place credentials or personal identifiers in these fields.
Sources & definitions
- Google Analytics: URL builders and UTM best practices
- Google Analytics: Traffic-source dimensions, manual tagging, and auto-tagging
- Google Analytics: Avoid sending personally identifiable information
- MDN: URLSearchParams
Method checked: