Insights / Growth, Search & Measurement · · 12 min read
UTM standards across brands: one naming convention for a group of companies
UTM standards across brands keep campaign data readable when a group runs several companies and founder sites. The naming convention we use for utm_source, utm_medium and utm_campaign, how links between Oryvelon, its companies and founder sites are tagged, and the governance that stops analytics from filling up with near-duplicate labels.
Every analytics account eventually fills up with the same kind of mess. "Facebook", "facebook", "fb", "meta" and "FB_ads" all appear as separate sources. "email" and "Email" and "newsletter" appear as separate mediums. A campaign called "launch" exists in three companies and means something different in each. Nobody can answer the simple question "what did the newsletter do this month?" without half an hour of cleaning.
The fix is a UTM standard: a short, written naming convention that everyone uses. For a single company it is good hygiene. For a group that runs several independent companies, a parent site and founder authority sites, it is the difference between readable data and noise.
This article sets out the convention we use across Oryvelon's companies, how links between the group, the companies and the founders are tagged, and the governance that keeps it working.
What UTM parameters do — and don't do
UTM parameters are key–value pairs appended to a URL. When someone clicks a tagged link, the analytics tool on the destination site reads the parameters and attributes the visit accordingly.
The five standard parameters are:
| Parameter | Answers | Example |
|---|---|---|
utm_source |
Where did the link live? | oryvelon, newsletter, instagram |
utm_medium |
What kind of channel is it? | portfolio, email, social, cpc, referral |
utm_campaign |
Which initiative is it part of? | merchnivo, founder, spring_launch |
utm_content |
Which specific link or creative? | hero_button, footer_link |
utm_term |
Which paid keyword? | mostly set automatically by ad platforms |
Two points are often misunderstood.
First, UTMs describe the link, not the person. They say "this visit came from the portfolio page on oryvelon.com". They say nothing about who clicked. That is why they fit comfortably inside a privacy-respecting analytics setup, provided nobody abuses them by stuffing personal data into the values. More on that below.
Second, UTMs are read by the destination. When oryvelon.com links to merchnivo.com with UTM parameters, the tags show up in MerchNivo's analytics, not ours. Each company sees where its visitors came from in its own property, and no user data crosses between them. See Analytics without surveillance.
The core rules of our convention
Our convention is deliberately short. Long conventions do not get followed.
- Lowercase only. Most analytics tools treat
Emailandemailas different values. We remove the possibility. - Underscores between words, no spaces.
spring_launch, notspring launchorspring-launch. Spaces get encoded unpredictably; hyphens and underscores mixed together create duplicates. We picked underscores and stick to them. - ASCII only. Brand names like KeşifAtlası become
kesifatlasiin UTM values. Non-ASCII characters are encoded differently by different tools and turn into unreadable strings in reports. - Source is where, medium is what kind. Never put a channel type in source or a platform name in medium.
- A fixed list of mediums. New mediums are added to the list deliberately, not invented on the fly.
- Campaign names come from a register. Anyone creating a new campaign adds it to the shared register first.
- No personal data, ever. No emails, names, phone numbers, customer IDs or order numbers in any UTM value.
- No UTMs on internal links. Only on links that cross from one property to another.
The medium list
The fixed list of mediums is the backbone of the whole scheme, because medium is how most analytics tools group traffic into channels. Ours looks like this:
| Medium | Used for |
|---|---|
portfolio |
Links from oryvelon.com to a company's own website |
referral |
Contextual links from founder sites, partners or other non-portfolio properties |
email |
Newsletters, lifecycle emails, transactional emails with links |
social |
Organic posts and profile links on social platforms |
paid_social |
Paid ads on social platforms |
cpc |
Paid search |
affiliate |
Partner programmes with commission |
print |
QR codes on packaging, cards, event materials |
app |
Links from inside a product to its own marketing site |
If a new kind of channel appears, the question is always "does this fit an existing medium?" before "should we add one?"
A note on cpc and email: several analytics tools, including GA4, map certain medium values to default channel groups. Using the conventional values where they exist means the built-in reports work without custom configuration. We only invent names where no convention exists, as with portfolio.
How links between the group and the companies are tagged
This is the part of our setup that is specific to a company builder, and the part most groups get wrong.
From oryvelon.com to a company
Every link from oryvelon.com to a company's own website uses the same pattern:
https://merchnivo.com/?utm_source=oryvelon&utm_medium=portfolio&utm_campaign=merchnivo
utm_source=oryvelon— the link lives on the group site.utm_medium=portfolio— the channel is the group's portfolio of companies.utm_campaign=<company key>— a fixed campaign key per company.
The campaign key is part of each company's entry in our content data, alongside its name, domain and description. It is usually the ASCII form of the company name — merchnivo, castlyra, edurelia, zodivela, kesifatlasi, noveniq — with longer names shortened sensibly, such as sinemkeser_beauty_academy. Links to WeAreMedia use services, because those links almost always appear in the context of "looking for agency-type services? That is WeAreMedia, not Oryvelon."
Because the links are generated from data rather than typed by hand, every link to a given company is tagged identically, wherever it appears on the group site.
What this gives each company: in its own analytics, it can see how many visits arrived from the group site and what those visitors did next. What it does not give anyone: any knowledge of who those visitors were or what they did on oryvelon.com beforehand. The tag is a label on the door, not a file on the visitor.
From founder sites
Links between the founders' authority sites and the group use a different medium, because the relationship is different. A founder's site is not the portfolio; it is an independent property that mentions the group in context.
https://oryvelon.com/?utm_source=ugurkeser_art&utm_medium=referral&utm_campaign=founder
And in the other direction, links from oryvelon.com to the founder sites use utm_source=oryvelon, utm_medium=referral and utm_campaign=founder. When a founder site links to a specific company in context — say, a piece about Shopify operations that mentions MerchNivo — it uses the founder site as source, referral as medium and a campaign that names the context.
How those founder sites relate to the group, and why their links stay contextual, is in Founder authority sites.
Between companies
Companies occasionally mention each other where it is genuinely useful. Noveniq, our DTC technology accessories store, is a practical testbed for commerce learning; a MerchNivo article about operations signals might link to a real-world example there. See A real store as a testbed.
Those links follow the same rules: source is the linking company, medium is referral, campaign names the context. No cross-company tagging scheme exists beyond that, and no cross-company user identifier is ever passed in a URL. Companies do not know each other's users. See Why we don't merge products into one app.
Campaign names that stay readable
utm_campaign is where most conventions break down, because campaigns are created constantly by different people.
We structure campaign names in a fixed order, using only the parts that are needed:
<initiative>_<yyyy>_<mm>
For example, spring_launch_2026_03 or onboarding_series_2026_09. The date is when the campaign started, not when a particular link was created. Evergreen links — the portfolio links, founder links, email footers — use a fixed name with no date.
A few habits make a large difference:
- Name the initiative, not the channel. The channel is already in medium.
spring_launchis good;spring_launch_instagramduplicates information and breaks cross-channel reporting. - Name the initiative, not the company. Each company's analytics only ever contains that company's traffic, so
merchnivo_spring_launchis redundant on merchnivo.com. The exception is the group's own portfolio links, where the company key is the campaign. - Use
utm_contentfor variants. Two buttons in the same email areutm_content=hero_buttonandutm_content=footer_link, not two campaigns. - Keep names short. They appear in reports, dashboards and exports. Long names get truncated.
The campaign register
A convention without a register degrades within months. Our register is a simple shared sheet per company with one row per campaign:
| Column | Example |
|---|---|
| Campaign name | onboarding_series_2026_09 |
| Company | EduRelia |
| Owner | the person responsible |
| Mediums used | email, app |
| Start / end | dates |
| Purpose | one sentence |
| Destination URLs | the landing pages |
Before creating links for a new campaign, the owner adds a row. That takes a minute and prevents the most common problem — two people independently inventing launch, launch_v2 and newlaunch for the same thing.
The register also answers questions months later. "What was promo_q3 for?" becomes a lookup, not an archaeology project.
A small link builder helps. Ours is nothing fancy: a form that offers only the allowed mediums from a dropdown, lowercases and underscores everything, rejects characters outside the allowed set, and warns if the campaign name is not in the register. It removes most typing errors at the source.
What never goes in a UTM
Personal data in URLs is a common and serious mistake. It happens innocently: someone wants to know which subscriber clicked, so they add utm_content=jane@example.com. Now that email address is in the analytics tool, in server logs, in browser history, in any referrer header passed onward, and possibly in third-party tools that see the URL.
Our rule is absolute: no personal data in any UTM value, on any company. That includes email addresses, names, phone numbers, customer or order IDs, student or school identifiers and anything that could be joined back to a person.
If a company needs per-recipient attribution for email, the email platform handles it inside its own system, under that company's consent rules, not through URLs. For EduRelia, where children's data minimisation is a hard constraint, this matters even more: nothing about a student or a school appears in any link. See Data minimisation for children in edtech and Marketing consent vs product consent.
We also strip query strings when recording outbound clicks on oryvelon.com. The group site's outbound-click event records the destination without its parameters, so our own reports stay clean and nothing unexpected is captured.
Common mistakes and how to avoid them
- Tagging internal links. A UTM-tagged link from your homepage to your pricing page starts a new session attribution and overwrites the real source. The visitor who came from search now looks like they came from your homepage. Only tag links that cross properties.
- Mixing case.
Newsletterandnewsletterbecome two rows. Lowercase everything. - Inventing mediums.
insta,ig,instagram_storyandsocialall describe organic social. Use the fixed list. - Putting the platform in medium.
utm_medium=facebookhides the channel type. Platform goes in source, type goes in medium. - Tagging links that ad platforms already tag. Paid platforms often add their own click identifiers and can append UTMs automatically. Decide on one method per platform and document it, so you do not end up with two conflicting sets.
- Forgetting redirects. Some redirects drop query strings. Test the final landing URL, not just the link.
- Letting partners improvise. Give partners and affiliates their exact links, not the convention.
Reporting across companies
UTMs make per-company reporting clean. They also make it possible to compare companies in aggregate without joining any user data.
Once a month, as part of the portfolio snapshot described in The operating cadence behind a portfolio, each company reports a few channel-level numbers from its own analytics: sessions and conversions by medium, and visits from utm_medium=portfolio. Because every company uses the same medium list, those numbers line up. We can see, for example, whether the group site sends meaningful traffic to a new company, or whether a company's email channel is growing relative to paid.
What we compare is aggregate counts. No one assembles a view of individual people across companies, and the convention is designed so that no one could.
Rolling out a convention in an existing company
If you are introducing a standard into a company with years of messy data, do not try to fix history. Instead:
- Write the convention on one page.
- Set a start date; everything before it is "legacy".
- Update evergreen links first — email footers, social bios, partner links — because they generate traffic continuously.
- Build the register and the link builder before the next campaign.
- In reports, add a simple mapping for legacy values where it matters, and leave the rest.
Within a quarter, the new data is clean enough to rely on.
A worked example: one campaign, four channels
Imagine ZodiVela introduces a new type of reading and wants to promote it for a few weeks. The owner adds one row to the register: new_reading_2026_10, purpose "introduce the new reading type to existing and new users", mediums email, social, paid_social and app.
The links then look like this:
| Placement | source | medium | campaign | content |
|---|---|---|---|---|
| Newsletter to subscribers who opted in | newsletter |
email |
new_reading_2026_10 |
hero_button |
| Organic post | instagram |
social |
new_reading_2026_10 |
carousel |
| Paid ad | meta |
paid_social |
new_reading_2026_10 |
video_a |
| Banner inside the product | zodivela_app |
app |
new_reading_2026_10 |
home_banner |
At the end of the campaign, one filter on the campaign name shows every channel side by side. Switching the view to medium shows how this campaign compared with ZodiVela's normal email or social performance. Switching to content shows which creative worked. Nothing needed cleaning first.
Now imagine the same campaign without a convention. The newsletter link says utm_source=Newsletter&utm_campaign=NewReading, the ad platform uses its automatic template, the social manager writes utm_medium=ig, and the in-app banner has no tags at all. The campaign is now four unrelated rows, one of which is invisible. Someone has to reconstruct the picture by hand, and the answer will be approximate.
The difference between those two outcomes is a one-page document and a register. That is cheap insurance.
QR codes, print and offline
Offline placements are where tagging is most often forgotten, and where it is most useful, because there is no other way to know that a visit came from a printed card.
For Noveniq, a QR code on an insert inside a package might point to:
https://noveniq.com/care/?utm_source=package_insert&utm_medium=print&utm_campaign=care_guide
Two practical rules help here. Keep the printed URL short by pointing the QR code at a clean redirect on the company's own domain, which then forwards to the tagged URL; if the campaign name ever needs to change, the redirect changes and the printed material does not. And test the redirect preserves the parameters before anything goes to print, because fixing a printed QR code means reprinting.
The same applies to Sinem Keser Beauty Academy materials at a course or event: utm_medium=print, source naming the specific material, campaign naming the course or event.
Auditing the convention
Conventions drift. New team members join, a partner starts sending traffic, an ad platform changes its defaults. We check each company's data against the convention on a regular cadence, usually alongside the quarterly tool review.
The audit is quick. Export the list of distinct source, medium and campaign values seen in the last quarter. Anything not lowercase, any medium outside the fixed list, any campaign not in the register goes on a short fix list with the link that produced it. Most quarters the list is short. When it is long, it usually points to one person or one tool that needs the convention explained again.
Summary
UTM standards across brands keep attribution readable when a group runs several companies, a parent site and founder sites. Our convention is short and strict: lowercase, underscores, ASCII, a fixed medium list, campaign names from a register, no personal data and no internal tagging. Links from oryvelon.com to each company use utm_source=oryvelon, utm_medium=portfolio and a fixed company campaign key; founder links use referral and founder. Each company sees its own traffic sources in its own analytics, comparisons across the group use aggregate numbers, and nothing in a link ever identifies a person.
Questions and answers
What are UTM parameters?
UTM parameters are tags added to a link's URL, such as utm_source, utm_medium and utm_campaign, that tell analytics tools where a visit came from. They carry no information about the person clicking.
How does Oryvelon tag links to its companies?
Links from oryvelon.com to a company's website use utm_source=oryvelon, utm_medium=portfolio and a fixed campaign key for that company, such as utm_campaign=merchnivo. Founder links use utm_medium=referral and utm_campaign=founder.
Should UTM parameters be used on internal links?
No. Tagging links between pages of the same website overwrites the original source of the visit and corrupts attribution. UTMs belong on links that point from one property to another.