Tagged link
Every shared link carries source, medium and campaign.
Site remembers
A script stores the tags while the visitor reads.
Hidden fields
The form passes the tags into the lead record.
CRM record
Source sits next to qualified, won and paid.
If any step drops the tags, the source is lost for good. Test the whole path, not just the link.
A naming system you will keep
- All lowercase.
- Hyphens, not spaces.
- One shared sheet listing every source, medium and campaign name you use.
- Never invent a new name on the fly, add it to the sheet first.
Inconsistent names (Reddit, reddit, reddit.com) split one channel into three in your reports.
A naming sheet you can copy
| Channel | utm_source | utm_medium | utm_campaign example |
|---|---|---|---|
| Reddit answer | community | first-customers-oct | |
| Cold email | email-outreach | founders-batch-03 | |
| Newsletter | newsletter | issue-12 | |
| LinkedIn post | social | crm-guide-launch | |
| Google Ads | cpc | crm-search-test | |
| Meta Ads | meta | paid-social | lead-form-test |
| Partner mention | partner-name | referral | partner-launch |
Keep this sheet in one shared place. Add a row before you use a new value, never after.
Example links
A Reddit answer that links to a guide:
https://example.com/guide/?utm_source=reddit&utm_medium=community&utm_campaign=first-customers-oct
A cold email batch:
https://example.com/?utm_source=email-outreach&utm_medium=email&utm_campaign=founders-batch-03
Use a URL builder or a simple spreadsheet formula, so nobody types tags by hand.
A tagging cheat sheet by channel
Most founders share links in the same handful of places. But each place needs its own tags, or the reports blur together. So decide the tags once and reuse them.
| Where you share the link | utm_source | utm_medium | utm_campaign example |
|---|---|---|---|
| Reddit answer or post | community | first-customers-oct | |
| Indie Hackers post | indiehackers | community | launch-oct |
| LinkedIn post | social | founder-story-oct | |
| Your newsletter | newsletter | issue-12 | |
| Cold email | coldemail | outreach | batch-01 |
| Partner’s site or newsletter | partner-name | referral | partner-launch |
| Podcast show notes | podcast-name | audio | episode-34 |
| QR code on print | offline | event-name |
Paid ads are different. Google Ads and Meta can add their own tags or click IDs automatically. Check each platform’s tagging settings before you add manual tags on top, so the two don’t conflict.
Set it up in one afternoon
You don’t need a developer for a basic setup. But you do need to test each step, because one broken link in the chain loses the source for good. So work through these steps in order.
- Create the naming sheet. Five columns: source, medium, campaign, content, and a note on where the link is used.
- Build your links. Use a URL builder or a simple spreadsheet formula. Paste each finished link into the sheet.
- Add hidden fields to your form. One hidden field per UTM parameter, plus one for the landing page URL. Most form tools can read values from the page URL.
- Map the fields to the CRM. Make sure each hidden field writes into a matching CRM field, not into a notes box.
- Add the “How did you hear about us?” question. Short dropdown plus an “Other” text box.
- Run a test. Click a tagged link in a private browser window, submit the form, and open the new CRM record.
- Check GA4. After a few hours, the visit should appear under the source and medium you used.
- Write down the date. Data before this date has no source; don’t compare it with data after.
If step 6 fails, the problem is almost always step 3 or step 4. Fix it before you share any more links.
Troubleshooting: why the source is blank
| What you see | Likely cause | Fix |
|---|---|---|
| CRM records have no source at all | Hidden fields missing or not mapped | Add the fields and map them to CRM fields; test again |
| Source shows only for some forms | One form was built differently | Use the same form setup on every page |
| GA4 shows the visit, CRM doesn’t | Form or booking tool drops the URL values | Pass the values into the form, or ask the question on the form |
| Everything shows as “direct” in analytics | Links shared without tags, or tags stripped by a redirect | Tag every shared link; test redirects with a tagged URL |
| Same channel appears under several names | Inconsistent naming | Fix the sheet; rename old values in reports where you can |
| Calls have no source | Phone has no tracking | Use a number per channel, or ask on the call |
Check the most common case first: open a tagged link yourself and watch where the tags disappear.
Store the source in the CRM
Add these fields to every lead record:
- UTM source, medium, campaign, content
- Landing page
- First-touch source (where they first came from)
- Self-reported source (what they told you)
First-touch tells you what introduced them. Last-touch tells you what made them act. For a founder, first-touch plus self-reported is usually enough.
First-touch vs last-touch: an example
A founder reads your Reddit answer, leaves, gets your newsletter a week later, and finally clicks a Google ad to book a call.
| Model | Credit goes to | What it tells you |
|---|---|---|
| First-touch | What introduced the customer | |
| Last-touch | Google Ads | What made them act |
| Self-reported | Whatever they say, maybe “a friend” or “Reddit” | What they remember mattering |
No single answer is “true”. For a small business, keeping first-touch, last-touch and self-reported side by side is more useful than any complex model.
Add “How did you hear about us?”
Tracking misses word of mouth, podcasts and conversations. A simple question on the form fills the gap. Keep the answer separate from tracking data: both are useful; neither is complete. See the guide on using customer-reported sources alongside tracking data.
Tracking channels that have no link
Some of your best leads will never click a tagged link. But that doesn’t mean you can’t learn where they came from. So give each offline or word-of-mouth channel its own simple marker.
- Events and meetups: a short URL or QR code that points to a tagged link, used only at that event.
- Podcasts: a memorable page like /podcast that redirects to a tagged URL, said out loud on the show.
- Partners: a partner-specific link or a simple referral code they can share.
- Print: a QR code with its own campaign name for each flyer or mailing.
- Referrals: a dropdown answer “A friend or colleague”, plus a text box for the name if they want to share it.
None of these is perfect. Together with the self-reported answer, they give you a much clearer picture than tags alone.
Reading the self-reported answers
Free-text answers are messy. But they hold the channels your tags can’t see. So sort them once a month into a few groups.
- Export the month’s answers from the CRM.
- Group them: search, a specific community, social, a podcast or event, a friend or colleague, an existing customer, other.
- Put the grouped numbers next to your UTM sources.
- Look for gaps. If many people say “a friend” but your tags show “direct”, word of mouth is bigger than your reports suggest.
Keep the dropdown short and update it when a new answer keeps appearing in “Other”.
A two-minute habit before you share any link
Before you post a link anywhere, open the naming sheet, copy the tagged version, and paste it. Two minutes per post. Founders who skip this step end up with months of “direct” traffic and no idea which posts worked.
Check it monthly
A three-minute audit:
- Open the last 20 leads in the CRM.
- How many have a source filled in?
- Any new, unexpected source names? Fix them in the sheet.
If fewer than most leads have a source, something in the path is dropping the tags.
A simple monthly source report
Once sources are on every record, one table answers most marketing questions:
| Source | Leads | Qualified | Customers | Revenue |
|---|---|---|---|---|
| reddit / community | — | — | — | — |
| email-outreach / email | — | — | — | — |
| google / cpc | — | — | — | — |
| (no source) | — | — | — | — |
Watch the “(no source)” row. If it grows, something in your tracking path is broken.
A worked example: one month of sources (illustrative)
Here is how a founder might read a month of data. The numbers are illustrative.
| Source | Leads | Qualified | Customers |
|---|---|---|---|
| reddit / community | 14 | 6 | 2 |
| linkedin / social | 9 | 2 | 0 |
| coldemail / outreach | 6 | 4 | 2 |
| google / cpc | 11 | 3 | 1 |
| Self-reported “a friend told me” | 4 | 4 | 2 |
Read it from right to left. Reddit and cold email produced the same number of customers, but cold email needed far fewer leads to get there. LinkedIn produced interest but no customers yet. Word of mouth, which tracking would have missed, produced two customers from four leads.
So this founder keeps Reddit and cold email, asks happy customers for introductions, and gives LinkedIn one more month before deciding.
Common UTM mistakes
- Mixed capitals: Reddit and reddit split one source in two.
- Tagging internal links: tags on links inside your own site overwrite the real source.
- No campaign name: you see the channel, but not which push worked.
- Tags that never reach the CRM: analytics sees them; your sales records don’t.
- Inventing values on the fly: every new spelling makes reports harder to read.
- Only trusting tracking: word of mouth never carries a tag; ask customers too.
Tracking terms in plain English
- UTM tags: labels added to a link that record where a visitor came from.
- Source: the site or platform, like reddit or newsletter.
- Medium: the type of channel, like community, email or cpc.
- Campaign: the specific push, like a launch or a batch of emails.
- First touch: the first channel that brought someone to you.
- Last touch: the channel right before they contacted you or bought.
- Self-reported source: what the customer says when you ask how they heard about you.
- Hidden field: a form field the visitor doesn’t see, used to pass the tags into your CRM.
- Attribution: deciding which channel gets credit for a customer.
What to do this week
- Today: create the naming sheet and agree on your source and medium names.
- Tomorrow: add hidden fields to your main form and map them to the CRM.
- This week: add “How did you hear about us?” to the form.
- Friday: run the test with a tagged link and check the CRM record and GA4.
- From now on: never share a link without tags. Keep the sheet open while you post.
Questions and answers
Do UTM tags affect SEO?
Not when used on links you share elsewhere. Don’t add UTM tags to internal links on your own site.
What if the lead calls instead of filling a form?
Use a tracking number per campaign, or ask on the call and record the answer in the CRM.
Can GA4 do this alone?
GA4 shows sessions and conversions, but it doesn’t know which lead became a paying customer. The CRM closes that gap.
Are UTM parameters case sensitive?
Yes. Google Analytics treats google and Google as different values, so use lowercase everywhere, as Google Analytics Help advises.
Which UTM parameters are required?
Use utm_source, utm_medium and utm_campaign on every tagged link. Add utm_content and utm_term when you need to compare versions or keywords.
Should I tag links in my social bios?
Yes. A tagged bio link shows how much traffic and how many leads your profile brings, separate from individual posts.
How do I track QR codes and offline ads?
Put a tagged URL behind the QR code, with a medium like print or event. For radio or podcast mentions, use a short, memorable URL that redirects to a tagged one.
Should I use UTM tags on links inside my own website?
No. Tags on internal links can overwrite the real source of the visit in analytics. Use them only on links you share outside your site.
What if I forget to tag a link?
Fix it for the next share and move on. The “How did you hear about us?” answer helps fill the gap for leads that arrived without tags.
Do I need a paid tool for UTM tracking?
No. A spreadsheet for naming, your form’s hidden fields and your CRM are enough for most founders. Paid tools help later, when you have many channels and want reports without manual work.
How long should I track before judging a channel?
Give each channel at least a month, and judge it by qualified leads and customers, not visits. A channel with few visits but steady customers is worth more than one with lots of traffic and no sales.
Can UTM tags break my links?
Rarely, but it happens when a site or redirect doesn’t accept extra parameters. That is one more reason to click every new tagged link once before you share it.
Should my team use the same naming sheet?
Yes. One shared sheet for everyone who posts links (founder, contractor or partner) keeps the reports clean. Add a rule: nobody invents a new source or medium name without adding it to the sheet first.
Sources and further reading
Put the process into practice
Growth Control implements the tools, workflow and team handoff around an agreed business result.
Explore marketing attribution connected to your sales process