Mailscribe

How To Set GA4 UTM Rules For Clean Newsletter Attribution

GA4 UTM rules turn messy email clicks into reliable newsletter attribution you can trust. The basics are simple: tag every newsletter link with utm_source, utm_medium, and utm_campaign, keep values lowercase and consistent, and reserve utm_medium=email so GA4 can slot traffic into the Email channel instead of Unassigned or Direct. Use utm_source for the sender or platform, utm_campaign for the send or theme, and utm_content to distinguish header vs footer links without exploding your reports. The surprising gotcha is that one creative naming choice in source or medium can quietly scatter performance across dozens of rows.

GA4 newsletter attribution basics: UTMs, sessions, and channels

How GA4 reads utm_source and utm_medium

In GA4, UTMs are simply labels attached to a link. When someone clicks a tagged newsletter link, GA4 reads the parameters in the landing page URL and uses them to set the traffic source for that visit.

Two fields do most of the heavy lifting:

  • utm_source: who sent the traffic. For newsletters, this is usually your newsletter brand, list name, or sending platform (for example, mailscribe or newsletter).
  • utm_medium: how the traffic arrived. For email newsletters, this should almost always be email.

When these values are present, GA4 can group newsletter visits into consistent rows in your Traffic acquisition reports. If you keep utm_medium=email stable, GA4 is much more likely to classify the session into the Email channel, and you avoid “mystery” spikes in Direct or Unassigned.

One important nuance: UTMs don’t just affect “where the click came from.” They also influence how sessions are attributed and how conversions get credit later, especially if your newsletter is a common first touch.

Email traffic vs Direct and why it happens

Newsletter clicks often show up as Direct when GA4 cannot identify a clear source. Common causes include untagged links, UTMs getting stripped during redirects, or clicks passing through apps and privacy layers that reduce referral data.

Direct can also appear when your tagging is inconsistent. If one newsletter uses utm_medium=email and another uses utm_medium=Email or utm_medium=newsletter, GA4 may split reporting or place some traffic in unexpected buckets.

The practical fix is boring but effective: decide on a single newsletter UTM standard (especially source and medium), apply it to every link your email tool generates (including Mailscribe templates), and test the final landing URL before you send.

UTM parameters you need for clean email attribution

Required: utm_source and utm_medium

If you want GA4 to attribute newsletter traffic cleanly, utm_source and utm_medium are the non-negotiables.

  • utm_source answers “where did this come from?” For newsletters, pick a source that will stay true for a long time. Examples: mailscribe, company_newsletter, or weekly_digest.
  • utm_medium answers “what kind of channel is this?” For newsletters, keep it simple: email.

In practice, this means every link in every newsletter should include something like utm_source=mailscribe&utm_medium=email. If you skip one of these, GA4 may still track the visit, but attribution will often drift into Direct, Unassigned, or fragmented “source/medium” rows that are hard to reconcile.

Once source and medium are consistent, add a few optional parameters to make reporting useful without getting messy:

  • utm_campaign: the “why” or “what” of the send. Use it to group a whole edition or a series, like feb_2026_product_update or onboarding_series.
  • utm_content: the “which link” detail. This is perfect for separating your main CTA from secondary links, like hero_cta, toc_link, or footer_blog.
  • utm_term: usually not needed for newsletters. If you use it at all, reserve it for a specific internal meaning (for example, an audience segment or content theme), and document that choice so it stays consistent.

Case, spaces, and character rules that prevent mess

Most newsletter attribution problems come from small formatting inconsistencies that snowball in GA4.

Use these rules:

  • Lowercase everything (email, not Email).
  • No spaces. Use underscores or hyphens (weekly_digest, not Weekly Digest).
  • Keep names short and readable. Long campaign strings get copied, truncated, and mistyped.
  • Avoid special characters like &, ?, %, and # inside values. Stick to letters, numbers, underscores, and hyphens.
  • Don’t rename midstream. Changing utm_source from newsletter to email_newsletter creates two “sources” forever in GA4 reporting.

If you set these conventions once in Mailscribe templates and reuse them, your GA4 email attribution stays clean with very little ongoing work.

Newsletter UTM naming conventions that stay consistent

Standard source and medium values for newsletters

Pick one “default” newsletter source and medium, then protect them like a schema. For most teams, the cleanest baseline is:

  • utm_medium=email (always)
  • utm_source= a single, stable identifier for your newsletter program (for example, mailscribe_newsletter or your publication name)

A simple rule helps: source = the newsletter brand, medium = email. Avoid using utm_source to describe the edition, topic, or CTA. That detail belongs in campaign or content. When you keep source stable, GA4 can roll up performance across months without you needing to stitch reports together.

Handling multiple newsletter types and editions

If you run multiple newsletters (weekly digest, product tips, industry roundup), you have two solid options. The best choice depends on how you want to report.

Option A: One source, different campaigns (recommended for most).
Keep utm_source the same for every newsletter, and use utm_campaign to separate types and editions. Example pattern:

  • utm_source=mailscribe_newsletter
  • utm_medium=email
  • utm_campaign=weekly_digest_2026_02_05

This keeps acquisition clean while still letting you filter by campaign for each send.

Option B: Different sources for different newsletters (use sparingly).
If each newsletter is truly its own “publication,” you can use distinct sources like daily_brief vs product_tips. If you do this, write the allowed values down and don’t improvise new ones later.

For editions, don’t put dates into utm_source or utm_medium. Put them in utm_campaign, or use a consistent edition ID in utm_campaign and reserve utm_content for link placement.

Distinguishing newsletters from product emails

Newsletter attribution gets muddy when product and lifecycle emails reuse the same UTMs. Decide upfront whether “newsletter” is a program you want to measure separately from product messaging.

A clean, common approach:

  • Newsletters: utm_medium=email, utm_source=mailscribe_newsletter
  • Product marketing sends: utm_medium=email, utm_source=product_email
  • Lifecycle/transactional (if you tag them): utm_medium=email, utm_source=lifecycle_email or transactional_email

Keep the medium the same so GA4 reliably classifies the channel as Email. Use utm_source to separate “newsletter vs product email” at a glance. Then use utm_campaign to group the specific send, like spring_launch_day1 or cart_abandon_v2.

The key is consistency: once a message type has a source value, reuse it everywhere, including in Mailscribe templates and automation rules.

GA4 UTM rules for newsletters that prevent misattribution

Misattribution usually starts with tiny variations that GA4 treats as totally different traffic sources. The rule is simple: every link in a newsletter issue should use the same utm_source, utm_medium, and utm_campaign. Only utm_content should change link to link.

In practice:

  • Set your defaults once in Mailscribe (or whatever sends the email).
  • Reuse the exact same values in every module, button, and text link.
  • Don’t “helpfully” rename things mid-issue, like utm_medium=newsletter for one link and utm_medium=email for another.

If you want to A/B test subject lines or creative, keep UTMs stable. Otherwise you turn one send into multiple campaigns and your GA4 comparisons stop being apples to apples.

Don’t add UTMs to links that users click after they’re already on your site, like header nav, footer links, related posts, or “next step” buttons on landing pages. Those internal UTMs can start new sessions or overwrite attribution, which makes it look like your newsletter “drove” conversions that actually came from onsite navigation.

A clean rule: UTMs are for entry links from the email to your site, not for internal site navigation. If you need internal click tracking, use GA4 events instead of query parameters.

Redirects and shorteners can be fine, but they’re a common place for UTMs to get lost or duplicated.

Keep these rules:

  • Final URL must keep the full query string. Test that utm_source, utm_medium, and utm_campaign survive the redirect all the way to the landing page.
  • Avoid double-tagging. If your shortener appends UTMs automatically, don’t also hardcode UTMs in the original link.
  • Prefer one redirect hop. The more hops, the more chances something strips parameters or rewrites them.

Before any big send, click a few links from a test email and confirm the landing page URL still shows the UTMs exactly as you intended.

Multi-email sequences and campaign structure for GA4 reporting

Choosing utm_campaign for series vs single sends

For GA4 reporting, the biggest decision is whether utm_campaign represents a series (multiple emails) or a single send (one email). Both work. The goal is to make trend lines and comparisons easy.

Use series-level utm_campaign when you want a clean rollup for the whole journey, like onboarding or a launch sequence. Example: utm_campaign=onboarding_v1. Then use utm_content (and your email platform reporting) to separate email 1 vs email 2 if needed.

Use send-level utm_campaign when each email is a standalone edition you compare week to week. Example: utm_campaign=weekly_digest_2026_02_05. This makes it easy to answer “which issue performed best?” in GA4 without extra filters.

A practical hybrid many teams like: keep a stable series name and add a light identifier, like onboarding_v1_e03 or launch_feb2026_day2. Just avoid rebuilding the naming pattern every month.

utm_content is your best tool for understanding what people clicked inside the newsletter without fragmenting acquisition data. Keep utm_source, utm_medium, and utm_campaign identical across the send, then change only utm_content per link.

Use utm_content to capture one clear idea at a time, such as:

  • Placement (hero vs footer)
  • CTA type (button vs text)
  • Destination type (blog vs pricing)

Keep it short and consistent. If you need more detail, it’s usually better to encode it with a predictable pattern than to write a sentence.

Suggested utm_content patterns for placements

Pick one pattern and stick to it across all Mailscribe templates:

  • hero_cta
  • hero_textlink
  • toc_item_01
  • section_01_cta
  • section_02_textlink
  • sidebar_promo
  • footer_cta
  • footer_social

If you have multiple CTAs in one block, add a simple index: hero_cta_1, hero_cta_2. That tiny bit of structure pays off later when you build GA4 reports and can instantly scan what’s working.

Verifying newsletter UTMs in GA4 before you ship

Realtime and DebugView validation steps

Before a send, test like a skeptic. Create a test email, click a few different links, and confirm GA4 is receiving the exact utm_source, utm_medium, and utm_campaign you expect.

In GA4, start with Reports > Realtime. Look for your visit and check the traffic source dimensions (source, medium, and campaign). If you see Direct, Unassigned, or the wrong campaign value, stop and fix the link formatting before you ship.

If you use DebugView, it can help you confirm that GA4 is ingesting campaign parameters on the landing page visit and that subsequent events are tied to the same session. DebugView is most useful when you’re also validating custom events or conversions triggered right after the click.

Checking processed data after latency

Realtime is great for a quick sanity check, but decisions should be based on processed reports. GA4 data can take time to fully process, and some dimensions show up more reliably after that processing window.

After your test clicks, come back later and check:

  • Reports > Acquisition > Traffic acquisition (Session source/medium, Session campaign)
  • Reports > Acquisition > User acquisition (First user source/medium, First user campaign)

If you’re comparing newsletter performance, be consistent about which report you use. Traffic acquisition is usually the go-to for “what happened from this send,” while User acquisition is better for “what brought new users in.”

Two issues can make UTMs look “right” on the URL but “wrong” in GA4.

Cross-domain tracking: If your newsletter links to one domain and the key action happens on another (for example, marketing site to app domain, or checkout on a separate domain), you may lose continuity unless cross-domain measurement is set up correctly. When that happens, conversions can get credited to a new session that looks like Direct.

Consent and privacy controls: In regions or setups where analytics storage depends on consent, GA4 may model or limit data collection. That can reduce the detail you see in reports and make attribution look less precise. The practical takeaway is to validate UTMs using the same consent state your real subscribers will experience, and to expect some inevitable loss compared to “perfect lab conditions.”

Common GA4 UTM mistakes that break newsletter attribution

Missing or swapped source and medium values

The most common break is also the simplest: a link ships without UTMs, or with the wrong fields in the wrong places.

Typical failure patterns:

  • Missing utm_medium=email: GA4 may still record the visit, but it often lands in Direct, Unassigned, or a messy custom medium.
  • Swapped values: utm_source=email&utm_medium=mailscribe looks harmless, but it flips your reporting logic. Source stops being “who” and becomes a channel label, which makes source/medium reports hard to interpret.
  • Multiple sources in one issue: one link uses utm_source=mailscribe_newsletter, another uses utm_source=newsletter. GA4 treats them as different sources, so one send becomes two.

A quick guardrail that helps: define a short list of allowed utm_source values and keep utm_medium locked to email.

Duplicate sessions and attribution resets

Newsletter attribution can also “break” when one click unintentionally creates multiple sessions or overwrites the original campaign.

Common causes include:

  • Internal UTMs on your own site (a header link with UTMs can restart attribution and steal credit from the newsletter click).
  • Redirect chains that add, remove, or rewrite UTMs mid-flight.
  • Link shorteners or tracking layers that append a second set of UTMs, creating confusing URLs and inconsistent reporting.

If you see suspiciously high sessions compared to clicks, or conversions attributed to odd campaigns, inspect the full landing URL and then click around your site to confirm nothing internal is re-tagging the visit.

Conflicts with auto-tagging and other tracking parameters

It’s easy to end up with “too many tags.” UTMs can coexist with other parameters, but conflicts happen when different systems try to define attribution at the same time.

Watch out for:

  • Email platform click tracking that wraps links and sometimes alters parameters.
  • Manual UTMs plus automatic tagging rules in a link tool or ESP that append extra campaign fields.
  • Mixed marketing tags across channels, where teams reuse the same campaign name with different meanings.

The fix is to pick a single source of truth for newsletter UTMs (often your Mailscribe template defaults), then ensure other layers do not add a second naming system on top. Clean attribution is less about cleverness and more about keeping one consistent set of rules.

Related posts

Keep reading