The fastest way for an agency to run UTM tracking for multiple clients is to give each client its own workspace, then add naming rules and shared templates inside it. This stops client links from mixing together and stops each account manager from tagging links their own way. This page shows the exact setup in linkutm.
Free plan available. No credit card required.
Most agencies start tracking client campaigns in one shared spreadsheet or one shortener account. It works for two clients. It breaks at five.
Links for different clients sit in the same list. One account manager writes utm_source=facebook, another writes Facebook, a third writes FB. GA4 treats each spelling as a different source. The client's report shows three rows for one channel, and someone has to explain why.
Then a client asks for last month's campaign links. Now you are searching a spreadsheet with 40 tabs, hoping the right link was saved at all. Every report takes longer than it should, and every handover between team members loses a little more history.
What one client's GA4 report looks like without naming rules
| Source in GA4 | Sessions | What it should be |
|---|---|---|
| 1,240 | ||
| 610 | ||
| FB | 287 |
Start by creating a separate workspace for each client inside linkutm. A workspace holds that client's links, templates, naming rules, and analytics in one place, walled off from every other client.
Name each workspace after the client, not the campaign. Campaigns come and go. The client account stays. When a team member opens the workspace for Client A, they only see Client A's links. Nothing from other accounts can leak into a report by accident.
You get a clean list of client containers, and switching between them takes one click.
Open each workspace and define naming rules for UTM parameters. Rules force lowercase values and lock the allowed options for utm_source and utm_medium. So facebook is always facebook, never Facebook or FB.
Do this before anyone builds links. A rule added after 500 links exist cannot fix the history that is already in GA4.
From this point, any link that breaks the rule gets corrected at creation. Your team stops producing the typos that split GA4 reports into duplicate rows.
Most client work repeats. A monthly newsletter, a Meta campaign that runs all year, a quarterly promo. Save each one as a template inside the client's workspace with the source, medium, and campaign pattern already filled in.
Anyone on the team can then build a correct link by picking the template and changing one or two values. Nobody needs to remember the convention, because the template carries it.
A new link that used to take five minutes of checking old spreadsheets now takes about twenty seconds.
Build every tagged link inside the workspace with the UTM builder. It applies the naming rules and templates as you type, so the parameters come out clean on the first pass.
If you want to test a parameter set before putting it in a client workspace, the free UTM builder tool works without an account.
Every link you create is saved to the client's workspace with its full history, so the answer to "which link did we use for the March campaign" is a search, not an archaeology project.
Each workspace has its own analytics view with clicks, countries, devices, and referrers, scoped to that client only.
Before a client call, open their workspace and read the numbers straight from the dashboard. No GA4 exports, no cross-client filtering, no risk of showing Client A's numbers on Client B's call.
You see live click data per client the moment a campaign goes out.
Example parameter set from a client workspace template
| Parameter | Value |
|---|---|
| utm_source | |
| utm_medium | cpc |
| utm_campaign | spring_sale_2026 |
| utm_content | carousel_video |
One workspace per client means links, templates, and analytics can never mix across accounts. Separation is structural, not a habit people have to remember.
Naming rules remove the typo problem at the source, so each channel shows up as one row in GA4 instead of three.
Templates carry the convention for you. New team members produce correct links on day one without reading a naming doc.
Client-scoped analytics cut report prep down to opening one dashboard, because the data is already filtered to the right account.
Running every client in one shared workspace. It saves a minute on setup and costs hours in filtering and cleanup every month after.
Adding naming rules after the links exist. Rules only protect new links, so set them up during client onboarding, not after the first messy report.
Letting each account manager keep a private link spreadsheet on the side. If links live outside the workspace, the history is gone when that person leaves.
Mixing uppercase and lowercase parameter values. GA4 is case sensitive, and facebook and Facebook count as two different sources.
The cleanest setup is one workspace per client inside a link management tool. Each workspace holds that client's links, naming rules, templates, and analytics. Nothing mixes across accounts, and team members only work inside the client account they open.
GA4 treats utm_source values as case sensitive text, so facebook, Facebook, and FB each get their own row. This happens when different team members tag links by hand without a shared rule. Naming rules that force lowercase values fix it for every new link.
Yes. Save the convention as naming rules and templates in each client workspace. The rules apply to anyone building links in that workspace, so the convention holds even when the team changes.
No. Your agency runs the account, and each client lives in its own workspace inside it. If a client wants to see their numbers, you can add them to their workspace with a viewer role. They see their own links and analytics, and they cannot touch any other client's data or edit live campaign links.
Ten, one per client. Some agencies also add one internal workspace for their own marketing. Keeping a strict one-client-one-workspace rule is what keeps reports clean at scale.
Free plan available. No credit card required.