UTM Naming Conventions Your Team Can Use Consistently

This guide supports our B2B marketing services.

UTM Naming: three blank glass labels align in a chrome guide, illustrating consistent campaign naming.

Use one source spelling for each distribution source, a small list of mediums, one campaign name across the same initiative, and a content label for the particular link. Keep those decisions in a shared sheet. Someone creating tomorrow’s newsletter should be able to copy the approved values without inventing another naming system.

Here is a workable starting convention for a fictional workshop launch:

FieldTeam ruleExample
SourceWhere the link is distributednewsletter
MediumThe distribution categoryemail
CampaignThe initiative, shared across channels2026q4_operations_workshop
Campaign IDA stable reference for that initiativedemo_c045_001
ContentThe creative or link placementtext_intro_en_v1
Want a custom proposal for B2B marketing?

We plan and run B2B marketing across search, ads, content and email for Canadian companies.

For this example, the team uses lowercase words separated by underscores. That is a house convention, not a requirement to rename every sensible convention already in use. The important point is that everyone uses the same meanings and spellings.

The examples below belong to an invented company, Northline Workshop Co. The company, launch and campaign identifiers are fictional. The example.com links illustrate construction; they are not live workshop pages or campaign results.

Northline is promoting one operations workshop through its newsletter, a paid LinkedIn carousel and an unpaid association listing. All three placements share the campaign and campaign ID. Source, medium and content explain the differences.

Newsletter introduction

https://example.com/workshop/?utm_source=newsletter&utm_medium=email&utm_campaign=2026q4_operations_workshop&utm_id=demo_c045_001&utm_content=text_intro_en_v1

Paid LinkedIn carousel

https://example.com/workshop/?utm_source=linkedin&utm_medium=paid_social&utm_campaign=2026q4_operations_workshop&utm_id=demo_c045_001&utm_content=carousel_process_en_v1

Association event listing

https://example.com/workshop/?utm_source=partner_association&utm_medium=referral&utm_campaign=2026q4_operations_workshop&utm_id=demo_c045_001&utm_content=listing_event_en_v1

Read the first link as: “The newsletter’s opening English text link, distributed by email, for the operations workshop.” Read the second as the same initiative promoted through a paid social placement. Nobody needs to decipher the campaign name to discover the channel because source and medium already carry that information.

The intended reporting outcome is one campaign identity that can be broken down by distribution and creative. Provided the destination collects the relevant campaign information, you can inspect session campaign and session source/medium together. This is an expected measurement outcome, not a claim that these fictional links have sent data to an Analytics property.

Email, social carousel and partner-link symbols connect to one workshop campaign identity.
1) Keep one campaign identity across placements. Fictional workshop: newsletter, LinkedIn and partner referral links share utm_campaign=2026q4_operations_workshop and utm_id=demo_c045_001, while source, medium and content describe each placement.

Notice what is absent: a recipient’s name, the campaign manager’s initials, an individual customer ID, budget and a sales forecast. Those details do not help the URL identify a public marketing placement. The team’s campaign plan can hold the fuller operational context.

You can adopt this pattern without installing a developer tool. Start with the table, choose values for your own initiative, and build each URL with a campaign URL builder. The optional downloadable kit later in this guide adds editable policy files and a local code tool for teams that want stricter checks.

Give each field a question it can answer

A naming convention becomes easier to follow when each field has a distinct purpose. The following explanations are an operating recommendation for a shared marketing team. Google’s campaign URL documentation describes the supported parameters and recommends consistent, case-sensitive values.

Source should identify a platform, publication or other distribution source. For the workshop, linkedin identifies LinkedIn, while partner_association identifies the fictional association. A real team with several association partners would use a stable, distinct value for each partner it needs to compare.

Avoid using social as the source for every social network. It prevents a useful network breakdown. Equally, avoid creating separate sources for a LinkedIn image, carousel and text post when the content field can distinguish them. Choose the level that matches a recurring reporting question.

For an owned newsletter, a descriptive publication name can work well. A company with one newsletter could use newsletter. A company with separate customer and trade publications might use customer_newsletter and trade_newsletter. Agree on the distinction before the second publication launches; do not rely on the email sender’s display name.

What about the software that sends the email? Northline treats the publication as the source, which means a software migration does not rename the publication in reports. Another team may have a documented reason to identify the sending platform. Choose consciously and keep the platform relationship in the sheet rather than allowing either answer at random.

Medium: what kind of distribution is it?

Medium groups comparable routes. In this convention, email covers newsletter placements, social covers unpaid social posts, paid_social covers paid social placements, and referral covers the unpaid association listing.

The same source can have more than one medium. A paid and an unpaid LinkedIn placement can both use linkedin, with the medium carrying their commercial distinction. Creating a source called linkedin_paid duplicates that distinction and gives colleagues another spelling to maintain.

Do not put the offer, department or campaign objective into medium. Values such as workshop, sales_team and awareness answer different questions. A report containing those alongside email and referral has lost its consistent grouping principle.

Campaign: which initiative does this support?

Use a campaign name that remains meaningful across the launch. Northline chooses 2026q4_operations_workshop, rather than separate names for the email, association and LinkedIn activity. A colleague looking at the campaign row can then see the combined initiative before examining its placements.

A time component is useful when the business actually distinguishes recurring editions. A quarterly workshop merits a quarter. An evergreen location page usually does not need a new campaign every month. Store its start date in the sheet and keep its campaign identity stable until the business purpose changes.

A campaign key is not public copy. The workshop’s headline might change during editing without creating a new initiative. Retain the key when the initiative remains the same. If the team launches a genuinely separate offer, give it a separate record instead of recycling a familiar name.

Content provides the variation within a campaign and distribution route. Northline uses text_intro_en_v1 for the newsletter’s opening link and button_footer_en_v1 for its closing button. The two links can reach the same page while remaining distinguishable.

Choose a short pattern people can interpret. This example uses a format or placement description, language and version. Another team might lead with a stable creative ID and keep the human description beside it. The right pattern depends on whether people retrieve creative from filenames, an asset library or a campaign sheet.

Do not make every send recipient a different content value. That creates person-level labelling and a large, unhelpful collection of rows. Content should describe the shared placement. A version should change when there is a meaningful creative distinction the team intends to examine, not whenever somebody opens the file.

Campaign ID, term and source platform

A campaign ID gives the initiative a stable reference beyond its readable name. Northline’s example ID, demo_c045_001, is deliberately fictional. A real team’s IDs should come from its campaign register and should not be reused for unrelated initiatives. Keep the name-to-ID relationship together so a copied row cannot silently pair the wrong two values.

Reserve term for a paid keyword when that is relevant to the implementation. Do not turn it into an overflow field for language, audience or miscellaneous comments. Source platform identifies the platform responsible for directing traffic and may matter to the integration being used. Define it with the measurement owner rather than inventing a value to fill an empty cell. Google’s traffic-source overview explains the distinction between these fields.

The finished examples use five fields. They are a practical starting pattern, not an exhaustive template for every advertising integration. Google recommends providing all relevant UTM fields. If your workflow needs source platform or term, add a defined column and verify the resulting reporting; the supplied local builder does not generate those two fields.

Five UTM fields pair with their purpose and the workshop example values, from newsletter source to text_intro_en_v1 content.
2) Give each UTM field a distinct job. The fictional newsletter link assigns source, medium, campaign, ID and content to different questions. Campaign naming should remain consistent while placement details remain distinguishable.

Make the sheet small enough to use during a launch

The simplest useful sheet separates decisions that change rarely from the individual links people create. Use one tab for approved values and another for placements. You do not need a complicated approval system to stop three people spelling LinkedIn three different ways.

An initial dictionary could look like this:

SourcePermitted mediumMeaning
newsletteremailNorthline’s owned newsletter
linkedinsocial, paid_socialUnpaid or paid LinkedIn distribution
partner_associationreferralFictional association’s unpaid listing
event_cardofflineA printed card with a tagged destination

The last row needs a reporting decision. offline is a custom medium in this example; it does not promise a matching default channel in Analytics. That distinction should be visible beside the value so a designer does not unknowingly introduce an unexplained category.

For the placement sheet, copy these headings into a spreadsheet:

campaign,campaign_id,placement,source,medium,content,clean_destination,final_url,owner_role
2026q4_operations_workshop,demo_c045_001,Newsletter introduction,newsletter,email,text_intro_en_v1,https://example.com/workshop/,,campaign owner
2026q4_operations_workshop,demo_c045_001,LinkedIn carousel,linkedin,paid_social,carousel_process_en_v1,https://example.com/workshop/,,campaign owner
2026q4_operations_workshop,demo_c045_001,Association listing,partner_association,referral,listing_event_en_v1,https://example.com/workshop/,,partner coordinator

This is a copyable naming sheet, not a formula-driven URL generator. Fill the final URL column with the generated and reviewed string. Add a launch date or language column if your team uses it to make a decision. Resist adding fields that nobody will maintain.

The owner role tells a colleague whom to ask when a placement changes. The clean destination prevents people from copying a visitor’s already tagged browser address. Keeping the final URL beside its component values lets a reviewer compare the intended labels with the actual string that will be pasted into the campaign platform.

Use dropdowns for source and medium if your spreadsheet supports them. The useful constraint is the approved pair: newsletter / paid_social should not pass merely because both words appear somewhere in the dictionary. For a small launch, a reviewer can catch this directly. At larger volumes, build the relationship into the tool.

Keep older aliases in a separate reference area. If previous links used li, record that it meant LinkedIn where the campaign evidence supports that conclusion. Do not include it in the new-link dropdown alongside linkedin. Otherwise the sheet preserves the inconsistency it was supposed to prevent.

Decide how much detail the campaign name really needs

Long naming schemes often start with good intentions. A team wants every row to reveal country, region, product, funnel stage, audience, channel, month, language, offer and creative. Soon the campaign value is a sentence of abbreviations, and one missing segment makes it impossible to compare.

Ask which distinctions belong to the initiative itself. If Northline runs one workshop with English and French promotion, language belongs naturally with the placement. If it runs independently budgeted regional programs with different offers and owners, region may be part of the campaign identity. The business structure should determine the split.

For a recurring event, a readable edition matters. 2026q4_operations_workshop and 2027q1_operations_workshop can remain separate while sharing an event-series field in the planning sheet. There is no need to force the entire hierarchy into the URL if the reporting system can join campaign IDs to campaign metadata.

For evergreen activity, decide what would justify a replacement. A permanent location-information link might retain its key through routine page updates. A major change from general location information to a separately managed recruitment offer should receive a new campaign. The original key should continue to mean what it meant when the old links were distributed.

Do not encode a forecast in the name. A value such as high_value_leads describes an expectation, not the origin of the visit. Later, a report can make that expectation look like an observed outcome. Use a neutral initiative name and assess lead quality from the appropriate business records.

A practical test is to ask a colleague outside the launch team to explain the key. If they need a legend for every segment, simplify it. If two unrelated initiatives receive the same explanation, add the distinction that makes them different. Readability and uniqueness can coexist without a universal naming formula.

Build a bilingual variation without a split launch

Northline adds a French newsletter placement. The initiative stays the same, while content changes to text_intro_fr_v1. Its destination includes a functional language parameter and an agenda anchor:

https://example.com/workshop/?lang=fr#agenda

The tagged version is:

https://example.com/workshop/?lang=fr&utm_source=newsletter&utm_medium=email&utm_campaign=2026q4_operations_workshop&utm_id=demo_c045_001&utm_content=text_intro_fr_v1#agenda

This example teaches two separate choices. First, a translation need not become a separate campaign when it supports the same initiative. Second, the existing page controls must survive URL construction. The language parameter remains in the query, and the anchor remains at the end.

Four ordered URL components show destination, the existing French-language query, appended campaign parameters and the agenda fragment last.
3) Preserve language controls and page anchors. Abbreviated schematic of the fictional French workshop URL: preserve ?lang=fr, append UTM parameters with &, and leave #agenda at the end. The complete usable example appears in the article.

Use stable machine labels for the convention and human descriptions in the languages your team works in. A French display title can retain accents and natural wording in the sheet. There is no reason to replace good public French with an English technical label on the landing page.

The lowercase ASCII convention is a deliberate simplification for these examples and the optional builder. It is not a claim that French text is inherently invalid in a URL. If your existing workflow supports other characters, preserve a documented, correctly encoded approach and test it with the platforms that will handle the links.

Test the actual language journey as well. A page may honour lang=fr on arrival but send its registration button to an English-only form. Or a locale selector may redirect and discard the campaign query. A correctly assembled link cannot establish that the complete experience works.

For occasional links, Google’s linked Campaign URL Builder provides a no-code starting point. Begin with a clean public destination, enter the agreed fields, and copy the generated result into the placement sheet. Use the official builder link from Google’s documentation, rather than an unfamiliar lookalike asking for an Analytics login.

Work from the sheet into the builder, not from memory. If the campaign already exists, copy its approved key and ID. If the source is new, decide its spelling once before generating five links. A builder can assemble a syntactically plausible URL while you supply a misleading campaign name.

Check the output by reading it back. Does the source match the placement? Is the medium the agreed distribution category? Does the campaign match the other launch links? Is the content value the correct language and creative version? Those questions catch errors that a general URL tool cannot understand.

If a platform offers separate destination and tracking fields, follow that platform’s current documentation. Do not paste a completed tagged URL into one field and independently add the same UTMs in another. The result may contain duplicated or conflicting parameters even though each input looked reasonable on its own.

For Google Ads specifically, final URLs and tracking templates have different jobs. The generic manual-link workflow in this guide does not replace the Ads configuration. Google’s final URL and tracking-template guidance describes those fields and how the click route can differ from the visible destination.

Give the publisher the finished string, not a request to reconstruct it from a screenshot. If a partner changes the destination or its system rewrites the query, review the resulting link. A correct draft in your spreadsheet is useful only if it matches what people can actually click.

Catch the URL mistakes that change the meaning

Different casing creates different labels

LinkedIn, linkedin and LINKEDIN may look interchangeable to a colleague. Campaign parameter values are case-sensitive, so choose one spelling and use it consistently. Lowercase is a convenient default for new manually controlled labels.

Apply that rule to your labels, not to an entire URL. Paths, encoded values and platform-generated identifiers can be case-sensitive. Lowercasing everything is a destructive shortcut: it can change a valid destination or identifier while making the link look tidier.

Existing queries need an ampersand

A URL with no query starts its parameters with ?. A URL that already has ?lang=fr needs &utm_source=... after that existing query. A second question mark does not create a second normal query section.

Keep a page fragment at the end. In the French example, #agenda follows all the query parameters. Do not append UTMs after that anchor and assume they became ordinary query parameters. A builder should handle the components in their proper positions.

Two copies of a parameter are a failed review

A copied newsletter URL with an extra utm_source=linkedin now has conflicting source labels. Do not assume every browser, redirect, analytics library and vendor will resolve that conflict in the same way.

The WHATWG URL standard allows repeated query names and provides separate operations for retrieving one value or all values. Those rules do not establish a universal GA4 attribution outcome. The simple team policy is to start from the clean destination and include each intended UTM once.

Some applications legitimately use repeated non-UTM query keys. Ask the website owner before “fixing” those. The optional builder deliberately rejects duplicate keys because its supported use case is narrower than every valid application URL.

Encoding and copying are different tasks

A query value containing a space or an ampersand needs appropriate encoding when the URL is assembled. An ampersand inside a value must not become the separator before another parameter. Keep plain labels in the sheet and let the builder encode components once.

Avoid pre-encoding a value and then encoding it again. A literal percent sequence can be transformed into a different value. Likewise, do not copy an HTML-escaped & from page source into a destination field that expects an ordinary URL string. Review the link that the platform actually produces.

A browser address copied after clicking an advertisement can contain a click identifier. A cross-domain journey can contain a linker parameter. Those values belong to that visit’s measurement process; they are not a clean template for a newsletter or printed card.

Retrieve the intended public destination from the campaign sheet or website owner. This advice is about preparing reusable links. It is not an instruction to strip identifiers from genuine incoming visits, where removing them can break measurement.

Keep acquisition labels off internal navigation

Do not add utm_source=homepage to the site’s own menu links simply to measure which button visitors use. That makes an internal interaction look like a new campaign touchpoint and mixes navigation analysis with acquisition information.

Use an appropriate interaction event for a homepage promotion or navigation element. The event can describe the placement without pretending that the website sent itself an external campaign visit. If you need to measure accepted enquiries after that interaction, the GA4 lead form tracking guide covers the separate outcome event.

Be precise about the reason. It is inaccurate to claim that every new UTM automatically starts a new GA4 session. The practical problem is the introduction of campaign information at a point where you intended to measure on-site behaviour. Google’s traffic-source scope documentation shows why session acquisition and event attribution must be considered separately.

The same distinction applies when a visitor moves from your main website to a booking domain. Adding new UTMs to every booking link is not a substitute for maintaining the intended cross-domain journey. Use the cross-domain tracking guide when the issue is continuity between sites.

Let auto-tagging and manual labels coexist

Google Ads auto-tagging supplies advertising information that a manually typed campaign label cannot replace. Do not switch it off merely to make your manual naming sheet the only source of truth. Decide which platform fields and Analytics dimensions the team actually needs.

Google’s current manual and automatic tagging guidance says auto-tagged values normally supply source, medium and other traffic-classification dimensions when both approaches are used. It also documents fallback behaviour when GCLID or DCLID cannot be used as intended and UTMs are present. Missing relevant UTM fields can then leave reporting gaps.

The practical conclusion is narrower than “UTMs always win” or “UTMs never matter.” Review the actual integration, the dimensions being compared and the completeness of the manual labels. A source/medium report and a manual-content report can expose different parts of the same implementation.

Current Analytics documentation also describes aggregate identifiers, including parameters used when standard click identifiers cannot supply campaign information. A naming convention should not remove unfamiliar platform parameters from live visits simply because they are absent from the team’s dictionary.

If an advertising platform supports dynamic parameter substitution, test the expanded output. A macro that remains literally visible in a live URL is not a resolved campaign name. A correctly expanded name can still change when someone renames a campaign in the platform. Decide whether the reporting workflow needs a stable platform ID, a readable name or both.

The downloadable builder deliberately does not expand macros or generate Google Ads tracking templates. Its job is ordinary manually tagged campaign links. Platform-specific tracking deserves its own configuration and release check rather than a series of undocumented exceptions inside a general-purpose sheet.

Verify the route people will actually follow

A valid string is the first check. A functioning destination is the next. For an authorized campaign test, start from the email preview, partner review link, advertisement test route or printed-code proof that represents the actual placement.

Follow the route to the destination and inspect the result. Does the correct page load? Does its language match the placement? Are the intended query values still present where collection occurs? If there is a redirect, check what it preserves rather than assuming the final URL is equivalent.

A website developer can use a preserved browser network log to inspect the redirect chain. Record the starting URL, each redirect destination and the final page. This helps distinguish an email wrapper problem from a website redirect that removes parameters after arrival.

Google specifically documents redirects losing click data. The same investigation discipline is useful for manual labels: identify the exact step where required information disappears. Fixing the original sheet will not help if every correctly constructed link loses its query during a language or trailing-slash redirect.

For a QR code, scan the final artwork with the intended destination already encoded. Proofing the source URL does not check whether the designer used that URL in the finished code. Test a printed proof when practical, because size, contrast and surrounding artwork affect whether someone can scan it.

For a short link, verify the controlled redirect destination and its maintenance owner. A short link can be useful on physical material because the underlying destination can be maintained. It also introduces a dependency: someone must preserve that redirect after the campaign manager changes roles.

No live distribution route or Analytics receipt is claimed for this guide’s example.com links. The examples demonstrate naming and construction. Your release check supplies the evidence that a real platform, destination and measurement implementation work together.

Read the labels in the right Analytics report

Start with the business question. If you want to examine sessions associated with the workshop launch, use session-scoped campaign information. If you want to know how users were first acquired, that is a different view. If you want credit assigned to a later key event, attribution settings become relevant.

In GA4’s Traffic acquisition report, examine Session campaign with Session source / medium. Navigation varies with the report collection published in the property; the report may sit under Acquisition or the business-objective collection. Google’s Traffic acquisition documentation lists the available session dimensions.

For the manually supplied content and campaign ID, use the appropriate manual dimensions. Google’s Manual report documentation includes Session manual campaign ID, Session manual campaign name and Session manual ad content. If the report is not in your navigation, ask the reporting owner to locate or publish the relevant report rather than creating duplicate tracking fields.

For the fictional launch, the expected naming check is straightforward: the three placements retain the shared workshop campaign, while source/medium and content distinguish them. First confirm that distinction. Then evaluate the collected metrics using their proper definitions and the relevant date range.

A session count is not a count of people. An event count is not a count of qualified enquiries. A campaign label identifies collected marketing context; qualification belongs to the business’s lead process. Do not name a column “qualified leads” merely because a tagged visit eventually triggered a form event.

A default channel is also a separate classification. Google maintains rules that use traffic-source information; the channel is not simply your preferred medium with nicer capitalization. For example, manual Paid Social classification depends on the source and paid-medium pattern. Check Google’s default channel definitions before introducing a novel combination.

If the team uses a custom medium such as offline, decide whether a custom channel group or a direct source/medium view will answer the question. Do not relabel physical activity as email merely to obtain a familiar channel row. Accurate meaning is more useful than a tidy but misleading category.

Troubleshoot unfamiliar campaign rows first

When the expected campaign is missing, inspect the released link first. Was the reviewed URL actually used? Did a platform overwrite the parameters? Did the destination receive them? Did collection happen under the relevant consent choice? These questions localize the problem more effectively than immediately rebuilding the naming sheet.

When the campaign appears under several spellings, compare the rows with the placement records. A capitalization difference usually points to inconsistent inputs. Two genuinely different campaign IDs may indicate separate initiatives that happen to share a similar name. Do not merge them until the records establish their relationship.

When content is absent, confirm that you are looking at the corresponding manual-content dimension. Looking for a content value in a campaign-name field cannot establish that collection failed. Similarly, inspecting a path-only dimension is not a complete check of the original tagged URL.

When source/medium looks correct but the channel is unexpected, inspect the channel rules and source spelling. A custom abbreviation may not receive the classification you assumed. Change the approved convention only after deciding how the old and new labels will be compared.

When a partner’s traffic looks unusually strong, check whether the same tagged URL was reused elsewhere. A forwarded newsletter or copied association link can retain its original labels. The URL describes how it was prepared; it cannot guarantee the route by which every subsequent reader received it.

Consistent naming improves analysis, but it does not resolve every attribution question. Cross-device behaviour, unobserved interactions and offline decisions remain relevant. The marketing attribution models guide addresses how credit is interpreted after collection; this convention gives that analysis cleaner inputs.

Change old names without pretending history changed

Begin a cleanup with the active links you control. Identify aliases, wrong destinations, incomplete labels and unclear campaign identities separately. They need different remedies. A misspelling can often be mapped confidently; a source called partner may be impossible to assign to one of several partners.

Choose the date after which new links must follow the convention. Update current placements where practical, while recording older emails, print runs and third-party pages that will retain their original links. A new dictionary cannot recall every distributed copy.

Keep a reporting mapping with the original value, proposed normalized value and reason. Preserve the raw label alongside any normalized column. If a colleague later asks why old reports contain li, the answer should remain recoverable rather than disappearing behind a destructive replacement.

Do not assume that renaming a link today changes historical Analytics records. Separate future link construction from any reporting transformation applied to older data. Explain when a trend crosses the changeover so a cleaner campaign row is not mistaken for a sudden increase in audience demand.

Give uncertain mappings an honest unresolved category. If two campaigns used the same name and the underlying records cannot separate them, a confident-looking allocation would invent precision. Improving the next launch is still useful even when an old ambiguity cannot be repaired.

Use campaign-level descriptions throughout the URL. Do not include a person’s name, email address, phone number, patient reference or customer-specific identifier in the path, query, fragment or UTM values. Encoding a value does not remove its meaning or make it appropriate for Analytics.

Google’s PII guidance explicitly covers URLs and campaign parameters. Data redaction is a downstream safeguard with limits; it is not a reason to place identifying information in a distributed link.

Review meaning as well as spelling. A short code could identify a customer even if a validator accepts its characters. A sensitive service description paired with an individual recipient reference is not made safe by using underscores. Keep customer records in the systems designed to handle them.

The same care applies to builders. A local tool avoids sending its inputs to a remote builder service, but the finished URL will still be distributed. A whitelist can prevent unknown values from being entered; it cannot guarantee that a maintainer approved a suitable value in the first place.

Use the optional kit when repeatable checks would help

The UTM naming convention kit contains an editable naming dictionary, campaign register, exception and release sheets, plus a local Node.js builder and tests. The ordinary spreadsheet files can support the no-code workflow described above.

There is one important distinction: editing the CSV dictionary does not change the code builder. The builder reads naming-dictionary.json. A maintainer must update that JSON separately, keep it consistent with the policy sheet and rerun the tests. The CSV is not a recalculating spreadsheet or a hidden user interface for the JavaScript tool.

Two independent paths connect the CSV policy sheet to human review and naming-dictionary.json to the Node builder and tests.
4) Keep the policy sheet and builder configuration aligned. The CSV records policy for human review, while the Node builder reads naming-dictionary.json. Editing the CSV does not change the builder; a maintainer must keep both consistent and rerun tests.

The builder accepts a registered destination and four fields: source, medium, campaign and content. It retrieves the campaign ID from its configuration. It checks the source-medium pair, the content’s placement assignment and the destination’s permitted query and anchor before returning a URL string.

It deliberately rejects existing UTMs, copied click identifiers, unknown destinations and duplicate query keys. It supports a narrow class of public HTTPS links rather than every valid URL. Signed links, customer-specific destinations, advertising macros and redirect wrappers require a different, reviewed implementation.

For this revision, the unchanged local test suites were rerun: 54 standard checks and 303 edge checks passed. The French example command produced the URL shown earlier. Those checks verify the supplied builder’s local construction and rejection behaviour. They do not establish that a real destination loads, a platform preserves the query, or GA4 receives and reports a visit.

If your team only creates a few links, use the sheet and a no-code builder first. Introduce stricter tooling when repeated mistakes justify it and someone can maintain the configuration. A tool that nobody can update becomes another reason people create unreviewed links outside the process.

Make the next campaign easier to launch

Before the next initiative, agree on its campaign name and ID, list the actual placements, and choose their source, medium and content values. Build from clean destinations. Review the final strings in the distribution tools people will use, including any redirect or language route.

After launch, check that the expected campaign distinctions appear in the appropriate reports. Investigate unfamiliar values while the people involved still remember how the links were created. Retire old labels from new-link choices without deleting the history needed to interpret them.

The convention is working when a colleague can create the next link correctly without asking what every field means. If your team needs help connecting those links to reliable enquiry measurement and reporting, contact Canada Create with the campaign workflow you want to improve.

Frequently asked questions

What does UTM stand for in campaign links?

UTM stands for Urchin Tracking Module, a name carried over from the analytics product Google bought and built Google Analytics on. In practice it means the utm_ labels added to the end of a link so Analytics can record where a visit came from. A naming convention keeps those labels spelled the same way by everyone on the team.

What are the five standard UTM parameters?

The five standard UTM parameters are source, medium, campaign, term and content. Source says where the link appears, medium the kind of distribution, campaign the initiative and content the particular link or creative. Term is usually kept for a paid keyword, and the post's example adds a campaign ID as a stable reference for the initiative.

What does a UTM link look like for a newsletter placement?

In the post's fictional workshop launch, the newsletter link ends with utm_source=newsletter, utm_medium=email, a shared campaign name such as 2026q4_operations_workshop, a campaign ID and utm_content=text_intro_en_v1. You can read it as the newsletter's opening English text link, sent by email, for the operations workshop. The paid LinkedIn and association links keep the same campaign and change only source, medium and content.

What is the difference between a URL and its UTM tags?

The URL is the address of the page, and UTM tags are labels appended after a question mark that describe how a visitor reached it. Two links with different tags can open the same page while reporting as different placements. If the page address already contains a query string, the UTM tags must join it with an ampersand, not a second question mark.

Are UTM parameters still used now that ads platforms auto-tag?

Yes, manual UTM labels remain the usual way to describe newsletters, partner listings and unpaid social posts in Google Analytics. Auto-tagging and manual labels can coexist, but the measurement owner should decide how they interact so the same click is not described two ways. Check the session campaign and session source/medium reports to confirm the labels arrive as intended.

Which UTM medium values should a marketing team agree on?

Keep a short list of mediums that group comparable routes, for example email, social, paid_social and referral. Let the medium carry the paid or unpaid distinction, so a paid and an unpaid LinkedIn post can both use linkedin as the source. Keep offers, departments and objectives such as awareness out of the medium field, because they answer different questions.

Should UTM values be all lowercase?

Pick one casing rule and keep to it, because campaign values are case-sensitive and Email and email become two separate rows in reports. The post's example team uses lowercase words joined by underscores, but any consistent house rule works. Store the approved spellings in a shared sheet so the next person copies them instead of inventing new ones.

Should UTM links be added to internal website links?

No, keep acquisition labels off your own navigation, banners and buttons. A UTM tag on an internal link can relabel a visit that arrived from search or email, which hides the route the person actually took. Use UTM labels for links placed outside the website, and measure internal clicks with events instead.

Can an old UTM campaign name be changed later?

You can adopt a new name for future links, but visits already recorded keep the label they arrived with. Note the old and new values together in the campaign sheet so anyone comparing periods can connect them. Retain the existing campaign key while the initiative stays the same, and create a new record only for a genuinely separate offer.