Skip to content
accs-net.com

Press Esc to close

Campaign

A campaign in marketing analytics is a coordinated set of activities (paid ads, emails, social posts, partner placements, offline QR codes) bundled under one objective, audience, and naming convention. In GA4 and every other analytics tool, the campaign shows up as a self-identifying dimension on session data, populated from the utm_campaign URL parameter. This guide covers what a campaign is, how UTM parameters carry campaign identity, naming conventions that survive across teams, where campaign data lives in GA4 reports, Default Channel Grouping vs manual tagging, attribution model choices, common mistakes, the metrics that matter, cross-channel measurement, and a FAQ.

What is a Campaign in Marketing Analytics

A campaign is the unit of marketing measurement. It groups a set of touchpoints (every ad, email send, social post, and partner link tied to one promotion) under one identifier so you can answer the basic question: which marketing effort drove these results?

In GA4, the campaign value lives on the session_campaign dimension. Every session inherits whatever utm_campaign value tagged the link the visitor clicked. Sessions without a tagged campaign fall back to platform-injected click identifiers (gclid for Google Ads, fbclid for Meta) or, when neither is present, to direct or referral classification.

From auditing GA4 properties, the campaign dimension is the layer that’s most often broken: clicks tracked, conversions tracked, but nobody can connect ad spend to revenue because campaign values are empty, fragmented across casing variants, or polluted by internal-navigation tagging. Clean campaign data is the foundation of every acquisition report that matters.

GA4 campaign anatomy: tagged URL with utm_source, utm_medium, utm_campaign, utm_content and utm_term feeding session_source, session_medium, session_campaign and session_manual_ad_content dimensions, then classified into Default Channel Group
How a tagged campaign URL flows through GA4 dimensions into the Default Channel Group classifier

UTM Campaign Parameters Explained

UTM parameters (short tags appended to a URL after a question mark) are how every analytics tool identifies a campaign. UTM stands for Urchin Tracking Module, named after the analytics product Google acquired in 2005. The convention recognises five keys, three required and two optional:

Parameter Required Holds Example GA4 dimension
utm_source Yes Specific publisher, vendor, or platform newsletter, facebook, partner_blog session_source
utm_medium Yes Channel category email, cpc, social session_medium
utm_campaign Yes Marketing initiative name spring-sale-2026, black-friday session_campaign
utm_content No Creative variant or placement hero-cta, banner-300 session_manual_ad_content
utm_term No Keyword or audience label (legacy) retargeting, brand session_manual_term

The required trio answers the three questions every acquisition report needs: who (source), how (medium), why (campaign). Drop any one and GA4 falls back to whatever the Referer header tells it, which is usually wrong for paid, email, and partner traffic. A complete tagged URL looks like:

https://example.com/sale?utm_source=newsletter&utm_medium=email&utm_campaign=spring-sale-2026&utm_content=hero-cta

For a deeper walkthrough of every parameter, the source-attribution hierarchy, and tagging tools, see our pillar guide on UTM parameters.

Naming Conventions for Campaigns

Consistent naming is the biggest factor in usable campaign reports. Once a bad name lands in GA4 it stays forever: no retroactive rename, no merge. I’ve seen properties with thirty rows for one campaign because the team mixed casing and separators across email, ads, and social. A naming convention enforced through a builder tool prevents that fragmentation before it starts.

Rule Good Bad Why
Lowercase only spring-sale-2026 Spring_Sale_2026 GA4 is case-sensitive: mixed case creates duplicates
Single separator (hyphens) black-friday-email black friday email Spaces break URLs; mixing hyphens and underscores fragments reports
Include date or quarter webinar-q1-2026 webinar Distinguishes recurring campaigns over time
Include channel hint retargeting-meta-lookalike campaign-3 Reports become scannable without cross-referencing notes
No special characters newsletter-march newsletter/march! Special chars break encoding and tracking
Avoid PII and session IDs nurture-trial-day7 email-john@example.com PII violates GDPR; uniqueness explodes report cardinality

A taxonomy template formalises the structure across teams. A common pattern: [goal]-[channel]-[audience]-[quarter-year]: for example, lead-gen-linkedin-cmo-q2-2026 or retention-email-churned-q3-2026. Document it in a shared spreadsheet, build links through a tool that enforces lowercase (Google’s Campaign URL Builder or our own UTM Builder), and review GA4 monthly for “(not set)” rows or casing duplicates.

Tracking Campaigns in GA4

GA4 surfaces campaign data in two primary acquisition reports plus the Explore module:

  1. Traffic acquisition (Reports β†’ Acquisition β†’ Traffic acquisition). Set the primary dimension to Session campaign to see every utm_campaign value with its session count, engaged sessions, engagement rate, conversions, and revenue. This is the day-to-day campaign ROI report.
  2. User acquisition (Reports β†’ Acquisition β†’ User acquisition). Shows the first campaign that brought each user, useful for evaluating which campaigns drive net-new audiences vs returning visits.
  3. Explore β†’ Free form. Add Session campaign, Session source, and Session medium as dimensions to cross-reference campaign performance by channel, geography, device, or any custom dimension you’ve defined.

Linked Google Ads accounts populate campaign data automatically through gclid. Every non-Google channel (email, Meta ads without auto-tagging, LinkedIn, partner placements) relies entirely on UTMs. If utm_campaign is missing or misspelled, the traffic shows as “(not set)” and breaks all campaign-level analysis. For more on event tracking tied to campaigns, custom conversion events let you attribute specific actions back to the campaign that originated the session.

Default Channel Grouping vs Manual Campaign Tagging

GA4 has two layers of acquisition classification answering different questions:

  • Default Channel Group is GA4’s automatic bucket: Email, Paid Search, Organic Social, Direct, Referral. It’s derived from session_medium against Google’s channel definition rules and answers “what type of channel sent this traffic?”
  • Manual campaign tagging via UTM parameters answers “which specific effort sent this traffic?” Campaigns live one level below the channel group. The Email channel might contain welcome-series, spring-sale-2026, winback-q2.

Both layers need clean tagging. Channel Group only works if utm_medium uses standard values verbatim (email, cpc, social, display, affiliate, organic): a custom medium like e-mail-blast lands in “Unassigned”.

Campaign Attribution: First, Last, and Data-Driven

Campaigns rarely drive conversions in a single click. A user might discover your brand through a paid Meta ad, return via organic search a week later, and finally convert through a retargeting email. Three campaigns touched the journey, and attribution models decide which one gets the credit.

Model Credit assignment Best for
First touch 100% to the campaign that started the journey Awareness campaigns, brand discovery, top-funnel ROI
Last touch (last non-direct click) 100% to the campaign that closed the conversion Bottom-funnel performance, retargeting, direct-response ads
Linear Equal credit across every touchpoint Simple multi-touch view without algorithmic complexity
Position-based (40/20/40) 40% first, 40% last, 20% spread across middle Balancing awareness and closing channels
Data-driven (DDA) Algorithmic credit based on conversion-path probabilities GA4 default; works best with 600+ conversions/month

GA4 defaults to data-driven attribution. Switch the property-wide model in Admin β†’ Attribution settings, or compare side-by-side in Advertising β†’ Attribution β†’ Model comparison. The model meaningfully changes which campaigns look successful, since top-funnel campaigns always under-perform on last-click and shine on first-touch. For trade-offs, see attribution.

Common Campaign Tracking Mistakes

Most “campaign tracking is broken” tickets trace back to one of these patterns:

  • Inconsistent casing. Summer_Sale and summer-sale appear as two campaigns. Enforce lowercase in your builder or normalise in GTM via a lookup table.
  • Missing utm_campaign on paid traffic. Google Ads auto-tags via gclid, but Meta, LinkedIn, TikTok, and most affiliate networks need manual UTMs.
  • Tagging internal navigation. A UTM on a homepage button starts a new session and erases the visitor’s original attribution. Tag external links only.
  • Too many unique campaign names. A fresh utm_campaign per ad variation makes reports unusable. Group ads under one campaign name; use utm_content for variation.
  • Double-tagging via redirects. A short link that redirects to an already-tagged URL can overwrite the original UTMs. Tag once, at the final destination.
  • PII or session IDs in UTMs. Email addresses or per-user tokens in utm_content blow out cardinality and create GDPR risk.
  • Tagging organic search. Don’t UTM-tag your own SERP listings; GA4 detects organic via Referer; UTMs override that.

Campaign Performance Metrics

Once campaign data flows cleanly, the metrics analysts watch fall into four tiers: efficiency, engagement, conversion, and revenue. The right balance depends on objective.

Metric What it measures Best for evaluating
CTR (click-through rate) Clicks Γ· impressions Ad creative and audience relevance
Sessions Visits initiated by the campaign Top-of-funnel volume
Engaged sessions Sessions β‰₯10 sec or with conversion/2+ pageviews Traffic quality, not just quantity
Conversions Completed events flagged as conversions Bottom-funnel campaign success
Conversion rate Conversions Γ· sessions Landing page + offer effectiveness
CPC / CPL / CPA Cost per click / lead / acquisition Paid campaign efficiency
ROAS Revenue Γ· ad spend Direct-response and e-commerce campaigns
LTV : CAC Customer lifetime value vs acquisition cost Long-term campaign profitability

Awareness campaigns optimise for reach and engaged sessions; demand-gen campaigns for CPL; e-commerce for ROAS. Don’t mix targets within one campaign. A top-funnel push judged on last-click ROAS always looks like it’s failing. Macro-conversions like purchase or qualified lead matter most for paid campaigns.

Cross-Channel Campaign Measurement

Modern campaigns rarely live on one channel. A product launch might run paid social, email nurture, partner placements, and organic SEO in parallel. Cross-channel measurement requires three pieces:

  1. Consistent utm_campaign across channels. Same campaign name on every link: product-launch-q2-2026 in Meta, email, partner microsites. Channel-source pairs stay distinct via utm_source and utm_medium while the campaign aggregates cleanly.
  2. One attribution model portfolio-wide. Switching per-campaign destroys comparability.
  3. Reporting that joins paid and organic. GA4 does this when UTMs are clean. For richer views, export to BigQuery, join with Google Ads + Meta Ads Insights + CRM revenue, visualise in Looker Studio.

For mobile + web campaigns, GA4’s app+web property type unifies session_campaign across platforms. iOS attribution caveats apply. SKAdNetwork limits user-level mobile attribution. Server-side via the Measurement Protocol can patch attribution gaps when client-side tracking is blocked.

Best Practices for Campaign Setup

Six habits separate properties with usable campaign data from properties drowning in fragmentation:

  1. Enforce tagging via tool, not policy. Build links through a UTM builder that lowercases inputs and validates required fields. Policy alone fails at scale.
  2. Maintain a campaign dictionary. A list of approved campaign names per quarter; new efforts register in advance to kill spelling drift.
  3. Audit “(not set)” monthly. Filter Session campaign for “(not set)” and trace which channels are leaking untagged traffic.
  4. Tag every external promo, never internal. Ads, emails, partner posts, podcast show notes, QR codes: UTMs. Internal nav, canonical URLs, own SERP listings: never.
  5. Build a campaign dashboard. Pull Session campaign Γ— engagement rate Γ— conversion rate Γ— revenue into one Looker Studio view, refreshed daily.
  6. Cohorted analysis for long-cycle campaigns. B2B campaigns often convert 30-90 days after first touch, so use cohort analysis to track each campaign through its conversion window.

Frequently Asked Questions

What is a campaign in GA4?

In GA4, a campaign is a marketing initiative identified by the utm_campaign value on inbound URLs. Every session inherits the campaign that tagged the clicked link, populating session_campaign. Campaign data appears in Reports β†’ Acquisition β†’ Traffic acquisition and feeds attribution models.

What’s the difference between a campaign and a channel?

A channel is the broad acquisition category (Email, Paid Search, Organic Social, Direct) derived from session_medium. A campaign is a specific effort within a channel: spring-sale-2026 in Email, retargeting-q2 in Paid Social. Channels answer “what type”, campaigns answer “which effort”.

How do I track a campaign without UTM parameters?

You can’t reliably: UTMs are the standard mechanism. Google Ads auto-tags via gclid when accounts are linked, and platforms inject fbclid or msclkid, but for any non-Google paid channel, email, or partner placement manual UTMs are required. Without them traffic falls back to Referer-based detection, which usually misclassifies as Direct or Referral.

Why is my campaign showing as “(not set)” in GA4?

“(not set)” appears when GA4 has session data but no utm_campaign. Common causes: missing UTM tag on paid links, redirects that strip query parameters, or internal-navigation polluting sessions. Trace the affected channel back to its source and fix the tagging there.

Are campaign names case-sensitive in GA4?

Yes. SpringSale, springsale, and SPRINGSALE are three separate rows in GA4. Standardise on lowercase and enforce it through a UTM builder tool: there is no retroactive merge for fragmented campaign names.

How long does GA4 store campaign data?

Aggregated campaign reporting retains data for the property’s lifetime. Event-level data follows the property’s retention setting (2 or 14 months in standard, longer in GA4 360). For permanent storage, export to BigQuery: no retention limit on exported tables.

Can I rename a campaign retroactively in GA4?

No. GA4 has no retroactive rename or merge for campaign values. Once utm_campaign=Spring_Sale enters a session, that string stays in reports forever. The only fix is preventive: enforce naming through a builder tool before links go live and audit monthly for fragmentation.

Bottom Line

A campaign is the unit of marketing measurement: the layer where ad spend, email sends, and partner placements roll up to a single ROI number. GA4 tracks campaigns via the utm_campaign URL parameter, surfaces them in the Traffic Acquisition report, and credits them through your chosen attribution model. Clean campaign data depends on three disciplines: enforce lowercase naming through a UTM builder, tag every external promo and never internal links, and audit “(not set)” rows monthly. Get those right and every acquisition report (channel-level, campaign-level, attribution-model comparison) will tell you the truth about which marketing efforts actually move the business.

Tom Martin
Written by

Tom Martin

Web analytics specialist with deep expertise in Google Analytics, Tag Manager, and e-commerce tracking. Helping businesses understand their data without the noise β€” practical guides, honest reviews, and real-world implementation experience.