Build your GA4 UTM link
Enter your destination and campaign details to create a tagged link. Link generation happens in your browser.
GA4 UTM tracking works by adding campaign parameters to external links that send visitors to your website. When your GA4 tag collects the landing-page visit, those parameters supply source, medium, and campaign context for acquisition reporting. Use consistent tags, preserve them through redirects, and check session-scoped dimensions in the Traffic acquisition report.
Understanding GA4 UTM tracking
UTM parameters are query-string values that identify a marketing link. A source describes where traffic comes from, a medium describes the marketing method, and a campaign groups links under an initiative. They are especially useful for email, social posts, partner placements, and advertising links that would otherwise lack sufficient campaign context.
A tagged URL does not send data to GA4 by itself. The destination must load a working Google tag or another correctly configured GA4 collection implementation. Consent settings, blocked scripts, redirects, and the collected page URL can all affect what is recorded.
For parameter definitions and reporting availability, use Google's official URL-builder documentation. Video walkthroughs may show an earlier interface; the steps below use GA4 reports and dimensions rather than Universal Analytics views or goals.
How to set up UTM tracking in GA4
- Confirm the destination collects GA4 data. In Admin → Data collection and modification → Data streams, select the web stream and check its Measurement ID against your implementation. Verify that a landing-page visit reaches the intended property.
- Decide whether manual tagging is appropriate. Use UTMs for external campaign links you control. For Google Ads, normally retain auto-tagging and link the Ads account to GA4; manual UTMs are not a substitute for that integration.
- Choose a reporting vocabulary. Agree on source, medium, campaign name, and any optional identifiers before generating links.
- Build the URL. Use Google's Campaign URL Builder or a controlled template. No separate GA4 switch is required to recognize standard UTMs. Our UTM Builder guide explains the link-building workflow.
- Test the distributed link. Click it through the actual email, ad preview, shortener, or redirect. Check the final landing URL and the URL collected by GA4.
- Validate collection, then reporting. Use DebugView for the test event and inspect processed acquisition data after the reporting delay.
You do not need custom dimensions for standard campaign fields such as source, medium, or campaign name. Custom collection may be needed for additional business-specific information, but it should not duplicate GA4's built-in campaign dimensions.
A worked tagged-link example
Suppose a monthly email newsletter contains a hero button linking to a guide. This illustrative URL identifies the newsletter, the email medium, the campaign, and the placement:
https://example.com/guide?utm_source=newsletter&utm_medium=email&utm_campaign=spring_guide_launch&utm_id=sgl_001&utm_content=hero_button
utm_source=newsletter: the named traffic source.utm_medium=email: the marketing medium.utm_campaign=spring_guide_launch: the readable campaign name.utm_id=sgl_001: a stable campaign identifier.utm_content=hero_button: the link placement or variant.
For a footer link in the same email, keep the source, medium, campaign, and ID unchanged; set utm_content=footer_link. That allows comparison of collected visits and subsequent activity by placement. It does not make GA4 an email click counter: not every email click produces a collected website visit.
Start a query string with ?, and separate parameters with &. If the destination already contains ?product=123, append UTMs with &, not another question mark. Place parameters before a fragment such as #pricing, encode reserved characters, and avoid duplicate parameter keys.
Standard and optional campaign parameters
Google documents the following campaign fields. Use the first three as your practical baseline, then add optional parameters only when they answer a reporting question. See our GA4 UTM Parameters guide for additional examples.
utm_source- The traffic source, such as
newsletter,instagram, or a partner name. It populates manual source dimensions. utm_medium- The marketing medium, such as
email,cpc, orsocial. It populates manual medium dimensions and helps determine channel grouping. utm_campaign- The campaign name, such as
spring_guide_launch. It supplies manual campaign-name context. utm_id- The campaign ID. Google also uses this field for matching campaign information in relevant data-import workflows.
utm_campaign_idis not the standard GA4 UTM campaign-ID field and is not automatically equivalent toutm_id. utm_term- The paid keyword or term label. It populates manual term dimensions; a manually supplied label is not automatically the user's actual search query.
utm_content- A label distinguishing creatives, placements, or links. It populates manual ad content dimensions.
utm_source_platform- The platform responsible for directing traffic, such as a buying or distribution platform. It is distinct from
utm_sourceand maps to manual source platform dimensions. utm_creative_format- A documented field for creative format, such as display or video. Google's URL-builder documentation says it is not currently reported in GA4 properties. Do not assume appending it creates a selectable native report dimension.
utm_marketing_tactic- A documented field for targeting or marketing tactic, such as remarketing or prospecting. Google likewise says it is not currently reported in GA4 properties.
The last two fields are documented parameters, not invalid or universally unsupported tags. However, documentation of a parameter does not guarantee native reporting availability. If you need format or tactic analysis now, use a governed utm_content taxonomy or deliberately implement separate custom collection and reporting.
Use consistent naming conventions
- Use lowercase values. Campaign values are case-sensitive;
Emailandemailcan split reporting. - Choose one separator. For example, use underscores in campaign and content names and avoid spaces.
- Maintain an approved source and medium list. Do not alternate between several labels for the same distribution channel.
- Separate campaign identity from placement. Keep the campaign name stable; put button or creative variants in content.
- Keep a shared link register. Record destination, source, medium, campaign name, ID, content, owner, and distribution location.
- Never put personal information in UTMs. URLs can enter analytics, browser history, server logs, and shared links.
The following table provides illustrative examples across common marketing channels (not customer results or a case study) using a consistent lowercase snake_case taxonomy:
| Channel / Use | utm_source |
utm_medium |
utm_campaign |
utm_content |
|---|---|---|---|---|
| Newsletter email | newsletter | spring_launch | hero_button | |
| Paid social | paid_social | spring_launch | prospecting_video | |
| Organic social | social | spring_launch | bio_link | |
| Partner / referral | partner_name | referral | spring_launch | creator_review |
| QR / offline | store_qr | offline | spring_launch | counter_card |
Teams should govern approved source and medium values and campaign naming together, keep placement distinctions in utm_content, and verify channel-group classification against their GA4 rules; a descriptive medium does not guarantee a particular default channel grouping. Do not use organic as a generic label for every unpaid link.
Channel grouping is rule-based. A descriptive medium does not automatically map to the channel you expect. For example, instagram with social can identify organic social traffic, while a recognized social source with a matching paid medium can identify Paid Social. Check your choices against Google's default channel group definitions.
Use UTMs on external acquisition links, not internal navigation. Internal tags introduce campaign information inside an existing visit and can interfere with interpretation. Track internal promotions with events instead.
Where to find UTM campaign data in GA4

Traffic acquisition: campaign context for sessions
Open Reports → Acquisition → Traffic acquisition in the Life cycle collection. Depending on the published report collection, it may instead appear under Generate leads. Navigation is customizable; if the report is absent, an Editor or Administrator can check the Reports Library.
In the table, change the primary dimension from Session default channel group to Session source / medium or Session campaign, where available. Select the date range and search for the exact campaign name. Session campaign can contain campaign information from manual tagging or integrated advertising sources.
For explicitly manual fields, use dimensions such as Session manual campaign name, Session manual campaign ID, Session manual source platform, Session manual term, and Session manual ad content. Add them through report customization or an exploration when they are not in the report's dimension selector.
User acquisition: first acquisition context
The User acquisition report uses first-user dimensions, such as First user source / medium and First user campaign. A returning visitor clicking a newly tagged newsletter link does not necessarily acquire a new first-user source. Use session dimensions when asking which campaign brought this visit.
Explorations: campaign and placement together
Open Explore, create a free-form exploration, and import session-scoped manual dimensions. Put campaign name and manual ad content in rows, add appropriate metrics such as Sessions and Key events, and filter to your campaign. Keep dimension scopes aligned with the question. Consult Google's traffic-source scope documentation before interpreting first-user, session, and event-level results interchangeably.
Worked campaign-analysis example
To see how this works in practice, consider an illustrative reporting question: “Which source/medium and placement should we inspect for the spring launch?”
In an Exploration or customized Traffic acquisition report, select the appropriate date range with fully processed data. Filter or identify Session campaign = spring_launch. Compare your Session source / medium rows (for example, comparing facebook / paid_social against instagram / social). Next, add Session manual ad content to distinguish placements such as prospecting_video or bio_link. If a paid keyword or term label was deliberately supplied, inspect Session manual term as that label, not as proof of the actual search query.
Use Sessions and configured Key events as suitable metrics to evaluate the resulting table. This analysis describes observed visits, events, and attributed reporting; it does not measure causal lift or provide proof of ROI.
Reporting timing and measurement limitations
Realtime and DebugView help confirm that visits and events arrive, but they are not substitutes for processed campaign reports. A Realtime card showing first-user source does not verify the session campaign for a returning user.
Standard reports and explorations are not immediate. Google notes that processing can take 24–48 hours, and reports can change during processing. Check the property time zone, date range, and Google's data freshness documentation before concluding that a campaign is missing.
UTMs do not resolve consent-related gaps, browser restrictions, cross-device identity gaps, or copied links carrying someone else's original tags. Key events must be configured, and revenue requires correct transaction collection. Cost and profit are not supplied by a tagged URL.

UTMs provide campaign, source, and medium context for reporting. An attributed key event is not proof that a campaign caused it. Incremental impact requires an appropriate experiment or other causal measurement approach; tagging alone does not guarantee ROI improvement.
Troubleshooting missing or misattributed UTM data
The campaign does not appear
Inspect the final URL after every redirect. Look for stripped parameters, misspelled keys, empty values, duplicate keys, or parameters placed after a fragment. Confirm the collected page_location still contains the intended query string. A script can remove visible UTMs before the analytics tag reads them.
Then check the property, stream, consent behavior, tag firing, and collection request. Review active internal-traffic or developer-traffic data filters; GA4 does not use Universal Analytics views. Finally, allow processing time and remove unintended report filters.
The campaign is recorded under an unexpected channel
Compare the actual source and medium with the default channel rules. Unassigned means the values did not match a channel rule, not necessarily that the UTMs were absent. Correct future tags and, if appropriate, use a custom channel group; changing a URL does not rewrite previously collected source values.
First-user data shows an older campaign
That can be expected for a returning user. Inspect session-scoped dimensions. Also, GA4 does not start a new session simply because campaign parameters change mid-session, so test acquisition with a genuinely new session rather than repeatedly clicking tagged links in one active visit.
Paid-search or checkout attribution looks wrong
For Google Ads, check account linking, auto-tagging, and preservation of click identifiers such as gclid. Auto-tagging and manual fields can coexist, but integrated advertising dimensions may differ from manual dimensions.
If attribution changes around another domain, investigate cross-domain measurement and payment-provider referrals. See our GA4 cross-domain tracking guide. Do not add internal UTMs as a workaround for broken session continuity.
Short pre-launch QA checklist
- The destination loads and sends events to the intended GA4 property.
- Source, medium, and campaign match the shared naming rules.
- The campaign ID uses
utm_id, if needed. - The actual distributed link preserves tags through redirects.
- No personal information or internal-navigation UTMs are present.
- DebugView confirms collection and the intended landing-page URL.
- After processing, session-scoped campaign data appears under the correct date range.
- Key events, revenue, and cost data are independently validated before drawing performance conclusions.
Frequently asked questions
How do you build a UTM link for GA4?
Use Google's Campaign URL Builder or an internal controlled spreadsheet template. Provide the destination URL, enter values for utm_source, utm_medium, and utm_campaign, and append any optional identifiers. Ensure parameters start with ? (or & if existing query parameters already exist) and sit before any anchor fragment (#).
Where do you find UTM campaign results in GA4?
Navigate to Reports → Acquisition → Traffic acquisition and switch the primary dimension to session-scoped dimensions such as Session source / medium or Session campaign (note that navigation can vary depending on published collections). For granular breakdowns including manual ad content or term, create a custom free-form report in Explore.
How long does UTM reporting take to appear in GA4?
You can verify tag firing and parameter collection immediately using Realtime or DebugView. However, standard processed reports and Explorations take up to the stated 24–48-hour processing window, and reported figures can shift while data processing completes.
Why is a tagged visit missing or assigned unexpectedly?
Common reasons include redirects stripping query parameters, analytics tags blocked by browser shields or consent rules, viewing the wrong property or date range, active processing delays, source and medium combinations that fail to match default channel grouping rules (landing under Unassigned), or mistakenly checking first-user dimensions instead of session-scoped dimensions for returning visitors.
A reliable GA4 UTM workflow is straightforward: define the labels, build and test the links, inspect the correct reporting scope, and interpret the results within the limits of collection and attribution.