What utm parameters are and which values to use for Korean channels
utm parameters are five tags appended to a link. There is no single right value, but GA4's channel grouping rules are fixed, so the values have to fit those rules or the report splits.
1. What utm is
utm stands for Urchin Tracking Module, a link tag from Urchin, the product Google Analytics grew out of. Append ?utm_source=naver&utm_medium=referral to a URL and GA4 records, on the session, which source and medium the visit came from.
The link itself does not change. People land on the same page; only the analytics tool reads the tag. So the values you choose are everything, and this tool exists to help you choose them so they fit the rules.
In GA4 they appear under Acquisition, Traffic acquisition, as session source, session medium and session campaign. The session default channel group is those two values pushed through Google's rule table and named Organic Social, Referral and so on.
2. Basic rules (from Google's documentation)
Google defines the five parameters. utm_source is the referrer (google, newsletter4, billboard), utm_medium the marketing medium (cpc, banner, email), utm_campaign the product, slogan or promo code (spring_sale), utm_term the paid keyword, and utm_content what distinguishes creatives.
utm_source, utm_medium and utm_campaign are required. Google's documentation states you must always use those three when adding parameters to a URL. Leave one empty and the visit is not attributed to a campaign.
Values are case sensitive. Google's own example is that utm_source=google and utm_source=Google are different. Once a channel splits into two rows there is no way to merge them, so lowercase everything.
Channel grouping is mostly decided by the medium. social gives Organic Social; referral, app or link give Referral; email gives Email; sms gives SMS; cpc or ppc match the paid regex; anything containing video gives Organic Video; display or banner give Display. Anything else falls into Unassigned.
3. How this tool behaves
A channel preset fills utm_source and utm_medium, and fills utm_content with a placement name (blog, cafe, openchat) only when content is empty. Anything you already typed is left alone, and every value stays editable.
The source is a single platform name. Values like naver_blog split Naver into several rows and hide how much Naver as a whole brought. Blog versus cafe goes into utm_content, which Google documents as the field for telling creatives apart.
The rule check flags: an empty or unparseable URL and a missing required field as errors; uppercase letters, whitespace, a platform name in the medium field, a medium that matches no GA4 rule (Unassigned), and a landing URL that already carries utm as warnings; non-ASCII characters, an http URL and a utm_term without a paid medium as notes. Errors block the link; warnings and notes still produce it. The tool never rewrites your values.
The GA4 channel estimate uses the medium rules only. Paid media (cpc and the like) become Paid Search or Paid Social depending on whether the source is in Google's search or social site list, and that list is only distributed as a spreadsheet, so it is not here. Paid is therefore reported as a range rather than a guess.
The final link is built with URLSearchParams. Korean characters and spaces are percent-encoded, other query parameters and the hash on the landing URL are preserved, and an existing utm parameter with the same name is overwritten.
The QR code carries the final link verbatim at error level M (15%) and downloads as a 512 px PNG. Longer links mean denser patterns, so print them large.
Saving writes to this browser's localStorage only. The same final link is not saved twice, and the list groups by utm_campaign. Export writes that list to a JSON file; import accepts only this tool's file shape and stops with a reason otherwise. Clearing site data clears the saved list.
Written from the Google documents below, read in full. The preset table is our recommendation derived from those rules, not values Google prescribes.
| Channel | utm_source | utm_medium | utm_content | Expected GA4 channel | Why |
|---|---|---|---|---|---|
| Naver Blog | naver | referral | blog | Referral | 다른 사이트에 올린 글에서 오는 방문이라 referral. 블로그인지는 content 로 가른다. |
| Naver Cafe | naver | referral | cafe | Referral | 블로그와 같은 소스(naver)에 두고 content 만 cafe 로 두면 네이버 안에서 어디가 먹혔는지 한 표에서 보인다. |
| Naver KiN | naver | referral | kin | Referral | 답변에 붙인 링크. 위와 같은 결. |
| Naver Search Ads | naver | cpc | Paid (Search/Social/Video/Shopping/Other 중 소스 목록에 따라) | cpc 는 GA4 유료 규칙(^(.*cp.*|ppc|retargeting|paid.*)$)에 맞아 유료 채널로 잡힌다. 키워드는 utm_term 에. | |
| KakaoTalk | kakao | social | chat | Organic Social | 단톡방과 개인 대화에 뿌린 링크. 매체 social 은 GA4 Organic Social 규칙에 정확히 맞는다. |
| Kakao Open Chat | kakao | social | openchat | Organic Social | 카카오톡과 같은 소스. 오픈방인지는 content 로. |
| social | Organic Social | 프로필 링크와 스토리. social → Organic Social. | |||
| Threads | threads | social | Organic Social | 인스타그램과 소스를 나눠야 어느 쪽이 먹혔는지 보인다. | |
| YouTube | youtube | video | Organic Video | 설명란과 댓글 고정 링크. 매체에 video 가 들어가면 GA4 Organic Video 규칙(^(.*video.*)$)에 맞는다. | |
| Daangn | daangn | social | community | Organic Social | 동네생활 글과 프로필. 커뮤니티 피드라 social 로 둔다. |
| Disquiet | disquiet | social | makerlog | Organic Social | 메이커로그와 프로덕트 페이지. 인디 개발자 유입의 실제 출처라 소스를 따로 둔다. |
| Apps in Toss | toss | app | Referral | 토스 앱 안 WebView 에서 열리는 링크. 매체 app 은 GA4 Referral 규칙(referral, app, link)에 든다. | |
| Everytime | everytime | social | board | Organic Social | 대학 커뮤니티 게시판. social 로 두고 게시판은 content 로. |
| SMS | sms | sms | SMS | GA4 는 소스나 매체가 sms 면 SMS 채널로 잡는다. | |
| Email newsletter | newsletter | 매체 email → Email 채널. 소스는 뉴스레터 이름으로 바꿔도 된다(예: stibee). |
4. Basic practice
Agree on a team convention first and stick to it: lowercase, underscores instead of spaces, ASCII only. Those three rules remove most report splits.
Links in the same campaign share utm_campaign and differ only in source and medium. That is what lets one campaign show its per-channel numbers in one table, and why this tool's saved list groups by campaign.
An indie developer rarely has many channels. Naver Blog, KakaoTalk, Instagram, Threads, Disquiet and Apps in Toss cover most of it, and the presets hold those values so you reuse them instead of inventing new ones.
Never put utm on links within your own site. It starts a new session and erases where the visitor originally came from. utm belongs on inbound links only.
5. Going further
A plain link pasted into KakaoTalk or Slack shows up in GA4 as (direct)/(none) because messengers send no referrer. A utm-tagged link makes that visit kakao / social. Messengers are where utm matters most.
Links opened inside an in-app WebView such as Apps in Toss use medium app. GA4's Referral rule accepts referral, app and link, so the channel becomes Referral. To see it separately later, define a custom channel group in GA4 around source toss.
For YouTube the medium is video, which GA4 routes to Organic Video because the rule matches any medium containing video. Use utm_content to tell the description link from the pinned comment.
Paid ads use medium cpc with the keyword in utm_term. Non-Google paid traffic such as Naver Search Ads is not tagged automatically, so it has to be done by hand.
A long link can go through a URL shortener; shorteners pass utm through on redirect. This tool does not shorten, because shortening needs a server in the middle that holds your link.
6. Where people get stuck
If one channel shows as two rows, the case or spacing differs. Load an older link from the saved list and compare. The rule check points out uppercase and whitespace.
If traffic lands in Unassigned, the medium is a value outside GA4's table. blog, post and share are common culprits. Switch to referral or social and the channel is assigned. The rule check warns about this too.
If nothing shows in GA4, first confirm all three required fields are present. Then remember that outside the Realtime report GA4 data lags by roughly a day. Session source in the Realtime report confirms immediately.
This tool does not count clicks and cannot repoint a link later. Both need a server in the middle. In exchange, the links and QR codes you make keep working even if this site disappears.