UTM and GA4 Events for Lead Source Quality
A lead can arrive with a name and no memory of why they came. A UTM labels the link. A GA4 event records the action. Together they should show website, ads, or organic, without a made-up score. The ads work sits on our Google Ads services page. This note does not set a fee.
Short answer: One lowercase list for source and medium. The offer goes in the campaign, the creative in content, a known keyword only in term. One lead event, not a new event name per channel. Never a name, email, phone, or price in a UTM. If the source is missing, write “not shown”. How tags fire is the sibling note on Google Tag Manager for marketers.
What sales needs from a source
Sales needs a row they can say aloud: which bucket, which offer the link named, and which action counted. A typed address, a paid click, and unpaid search are different jobs. One shared label hides which work they would take.
Quality means a match, not a grade. Did the person ask for the offer the link promised? A hotel click that opens a generic form, or a paid click from a city you do not serve, is a poor match. This article will not print a lead score, a cost per lead, or a share of good leads. Those figures live in the account and the CRM, dated, or they are not here.
The label is the UTM, or the ads click identifier already attached. The event is the form, a thank-you page only the form can open, the telephone click, or the LINE click. A source without an event is a visit. An event without a source is a lead you cannot file.
Three buckets: website, ads, and organic
Use three buckets. Do not invent a fourth when a link is awkward. Sales and marketing need one vocabulary.
Website and owned links
This is what the business places itself: a typed URL, an email, a QR on a name card, a LINE rich menu, a PDF. It is not organic search, and it is not ads. Unlabeled, GA4 often files it as direct. Direct is a leftover, not a plan. Name the object: newsletter, namecard, line-oa. Medium says how it travelled: email, qr, chat. The agency is the source only if the click started on a page it published.
Ads
Ads means a paid click. Source is the platform. Medium is the paid type, from a closed list such as cpc or paid-social. Do not put the campaign name in the source. A Google Ads click often already carries a click identifier. Keep it for the ads system. Do not paste it into a UTM. A misfired conversion that makes a paid click look like a win is the sibling checklist on Google Ads budget leak points. This page does not repeat that audit.
Organic
Organic is unpaid discovery: search, unpaid social, or a site that linked without a fee you placed. Do not stamp organic on your own menu to force the chart. That overwrites the session. Use a UTM here only when you control the outbound link and can name the placement. If you cannot name the page, do not invent a campaign called organic-general.
Naming rules that stay readable
A UTM is a label, not a sentence. A new spelling is a new row. Write the allowed values before the next campaign: lowercase, Latin letters, hyphens, no spaces.
utm_source
Source is who sent the click: google, facebook, line, newsletter, namecard, partner. Not a month, a city, and an offer in one field. One spelling. google is not Google, and not google-ads if the medium already says paid. Both teams use the same list. A nickname on a slide is not a source.
utm_medium
Medium is how the click travelled: cpc, paid-social, email, qr, referral, chat. Do not add a medium per offer, city, or week. Do not repeat cpc in the source, and do not store the creative here. If sales cannot recite the list, it is a diary.
utm_campaign
Campaign is the offer, in words a salesperson can repeat. A short slug. Do not pack the date, the city, the audience, and a fee into one field. A new name every Monday splits one offer, and this page will not invent a combined total. Use a hyphen. Keep the Thai name on the page. The UTM stays a Latin slug of the same offer.
utm_content and utm_term
Content is which link: hero-cta, line-button, banner-a, email-footer. Not who the person is. Term is a keyword only when you know it. Do not guess a query, and do not paste one that contains a name, a phone, or a private errand. Search terms you can see live in the ads account. A blank term is honest.
Case, separators, and internal links
Lowercase. One utm_source, at the end of one URL. Open the live link in a private window and read the query string before you send it. If a redirect drops the query, the label never arrives. Write that. Do not invent the path. Do not put UTMs on your own menu, related posts, or language switch. Those overwrite the source the person arrived with, and the ads or organic visit is gone. A button can fire an event. It should not rewrite the source.
What not to stuff into a UTM
A UTM is copied into logs, chat apps, and the address bar. Treat it as public. If you would not print it on the ad, leave it out.
- No name, email, phone, LINE ID, national ID, or form text. That belongs in the CRM.
- No note that the lead was good or bad. Quality is a later judgement.
- No price, discount, fee, or budget. This article does not publish those.
- No ads click identifier in utm_term or utm_content. It already has its own parameter.
- No session identifier, token, password, or test string.
- No sentence, hashtag, emoji, or note to a colleague.
- No source, medium, month, and offer stacked in one field.
- No button name that belongs on the event. A new UTM must not reset the session source.
If a value might identify a person, or read as a price, delete it. A cut-off value is missing. Missing means “not shown”, not a channel filled from memory.
GA4 events that carry the source
Sales can use the enquiry, not a page view or a scroll. Keep the same English names on both sites: generate_lead or form_submit, click_tel, click_line, click_email. Do not create a form event per platform. The channel is already the source.
Let the event inherit session source, medium, and campaign. Do not copy the UTM into a custom parameter if that label is intact. Extra parameters stay a closed list: form name, page language, page path, and a lead type you already offer. Not a person’s name, a free-text note, or a score.
A thank-you URL counts only if it cannot open without the form. English and Thai forms should share the event name. How to fire form submit, tel:, LINE, and thank-you tags is the Google Tag Manager note. This page does not claim a tag already fires. If ads and GA4 disagree on the source, write both and the date. Do not average them. A tag or redirect change is measurement, not a recovered source.
How sales reads the row
Start from the lead, not a chart of sessions. One enquiry, one date, four fields: event name, source, medium, campaign. Then ask whether the person matches the offer that link named.
- Name the bucket: website or owned, ads, or organic. Direct, not set, or an unknown string is a missing label. Stop there.
- Read the campaign aloud. If you cannot say the offer, fix the next link. Do not rename history in the sheet.
- A telephone click and a form are two actions. This article will not add them or print a combined figure.
- A Thai ad that opened an English page is a match problem. The source can still be right.
- Say match, or not a match, and why. No score. If you did not open the lead, the row is unfinished.
Ask for the list and a live URL, not a slide. Which source and medium values are allowed? Which events count as an enquiry? Does any internal link still carry a UTM? If a paid click arrives as direct, which screen shows that? This page is the label sales files. It sits beside Google Ads services. Neither page quotes a price here.
What this note will not do
- Invent a lead-quality score, a cost per lead, a conversion rate, or a share of leads by channel.
- Quote a fee. Any published figure lives on the service page. This page holds the naming rules.
- Put personal data, prices, or click identifiers into a UTM, or stamp UTMs on internal links.
- Replace the notes on firing tags, and on which ads settings leak spend.
FAQ
What should a UTM tell sales that GA4 does not already show?
An unlabeled visit often lands as direct or not set. A UTM names the platform, the link type, and the offer on links you control, so the lead event can be filed as website, ads, or organic. If the label is missing, write “not shown”. Do not invent the channel.
Should Google Ads links also carry UTMs?
Keep the ads click identifier. Add a short UTM only if sales needs a readable source, medium, and campaign on the shared list. Do not paste the identifier into a UTM, and do not invent a search term you did not see. Conversion setup is a separate job.
What must never go into a UTM?
No name, email, phone, LINE ID, form answer, price, fee, budget, password, token, or click identifier. No sentences. A UTM is public. If it might identify a person or read as a price, leave it out.
Why do internal links damage source quality?
A UTM on a menu, a related post, or a language switch rewrites the arrival session. An ads or organic visit then looks internal. Fire an event if you need the click. Do not stamp a new source. If a redirect drops the query, write “not shown”.
Where is the price, and how is this different from the tag and leak notes?
Not here. We do not set a fee or a quality score. Firing form, telephone, LINE, and thank-you tags is the Google Tag Manager note. Settings that waste ads spend are the budget-leak checklist. This page is naming rules, not a case-study number.