Campaign Tracking in Analytics Platforms: What Each One Does With Your Parameters

GA4, Adobe and platform-native reporting each handle campaign parameters differently. Here's what each does — and why one campaign reads three ways.

Ethan Lowe7 min readExplainer
Knotted rope cords in loose rows beside a bundle of straight fluted rods

Campaign tracking works the same way everywhere in principle: you attach parameters to a destination URL, and the analytics platform reads them to attribute the visit. What differs is what each platform does next.

GA4 reads UTM parameters directly into its own dimensions and will accept any value you send. Adobe Analytics treats the tracking code as a key and resolves it against a classification list you maintain, so anything not on the list reports as unspecified. Platform-native reporting inside the ad platforms attributes by its own campaign object, not by your parameters at all. Send one campaign through all three and you get three answers, none of them wrong from its own point of view.

What a tracking parameter is

A value appended to a destination URL so the analytics platform can attribute the visit.

A link is built with extra key-value pairs after a question mark; the browser carries them to the destination; the analytics tag reads them and records where the visit came from. Piwik PRO’s definition of campaign tracking (accessed 2026-09-11) describes the same mechanic.

Two properties follow, and both matter later. The parameter is declarative — it says what the traffic is rather than being measured, and nothing verifies it. And it is fixed at link-build time: whoever assembles the URL decides what every downstream report can say about that click, before a single visit occurs.

What each platform does with it

Three platforms, three different treatments of the same string.

GA4Adobe AnalyticsAd-platform native
What it readsUTM parameters off the URLA tracking code, as a keyIts own campaign object
Where meaning comes fromThe parameter value itselfA classification list you uploadThe platform’s internal record
An unrecognized valueAccepted and reported as-isReported as unspecifiedNot applicable — your value is ignored
Can you correct history?NoYes, re-upload the classificationsNo
Who controls the vocabularyWhoever built the linkWhoever maintains the listThe platform

“Nobody is lying. Three systems answered three different questions and put the answers in the same column.” — Rob Allanach, Sr. Solutions Architect, Claravine

The middle row is where most reconciliation meetings go wrong. GA4’s willingness to accept anything and Adobe’s refusal to guess look like a quality difference and are not: they are opposite answers to where meaning lives. GA4 puts it in the value, so the value is self-describing and permanently whatever was typed. Adobe puts it in a list you control, so the code means nothing alone and can be redefined later. Neither is better in the abstract — GA4 is cheaper to start and cannot be repaired; Adobe is more work and is the only one here that can correct a naming decision after the fact.

Campaign data as a managed asset

The campaign record is an asset with an owner and a lifecycle, not a by-product of the ad platform.

A campaign record has the same properties as any other managed data: created at a known moment, by a known party, under rules that either exist or do not, and referenced by systems that had no say in how it was made.

Treated as a by-product, it is whatever the ad platform happened to store and the reporting team’s job is archaeology. Treated as an asset, it is validated at creation and identical in every destination because it was issued rather than typed. The difference shows up in one question: who do you ask when a campaign name is wrong? If the answer depends on which system you noticed it in, the record is a by-product.

GA4: reads what you send

GA4 maps UTM parameters onto its own campaign dimensions and accepts any value.

utm_source becomes the session source, utm_medium the medium, utm_campaign the campaign name — a direct, documented mapping that Analytics Mania’s guide to campaign tracking in GA4 (accessed 2026-09-11) walks end to end.

What GA4 will not do is judge. Send Email, email and e-mail and you get three mediums; a trailing space gives you a distinct campaign. No permitted-value list, no validation, no warning, because from GA4’s point of view nothing went wrong: it reported exactly what arrived. Tagging discipline is the entire control surface, and every quality decision was made before the click.

The parameters themselves, in detail: UTM parameters explained — what each one does and how to build them.

Adobe: resolves against a list

Adobe treats the code as a key and classifies it against an uploaded list.

The tracking code arriving in Adobe is typically compact and opaque — em_2026q3_ret_us rather than five readable parameters. It means nothing by itself. The classification data you maintain is what turns it into channel, quarter, initiative and region.

The consequence runs both ways. A code not on the list reports as unspecified, which is a visible failure rather than a silent one. But a naming decision made badly last year can be fixed by re-uploading classifications, and every historical row re-reads correctly. No other platform here can do that. Adobe tracking codes and classifications covers the mechanics in full.

Platform-native reporting: ignores you

Ad-platform reporting attributes to its own campaign object regardless of your parameters.

Inside Google Ads, Meta Ads Manager or a DSP, the campaign is a first-class object with its own ID and name. Native reporting uses that object. Your UTM parameters are cargo the platform hands to the destination site; they are not what it reports on.

This is why the ad platform’s conversion count and the analytics count for the “same” campaign routinely differ, and why neither is buggy. They count different objects that happen to share a name, sometimes not even that. Matomo’s overview of campaign tracking (accessed 2026-09-11) covers the analytics-side half.

The practical rule: a discrepancy between ad-platform and analytics reporting is expected and should be characterized, not eliminated. A discrepancy between two analytics platforms fed the same parameters is a naming problem.

When an agency sets the parameters

Whoever builds the link decides what every downstream report can say.

Most enterprise campaigns are trafficked by someone who does not read the reports: an agency, a channel specialist, a regional team. They assemble the URL, and at that moment every constraint on the analysis is set.

This is structural rather than a diligence failure. The agency optimizes for its own workflow and its own client reporting, often under a naming convention that is internally consistent and completely incompatible with yours. Both are correct. Neither joins.

Across Claravine’s enterprise customer conversations, the job of enabling cross-channel attribution and campaign performance reporting is raised by 58 accounts, and agency-built links are a recurring reason it stays unfinished.

The fix is not a naming document sent to the agency. It is giving them a way to generate a compliant link that is easier than typing one.

Making one campaign read the same everywhere

The parameters have to be generated from one agreed standard before the link is built.

Three conditions, and the order is the point:

  1. One vocabulary, shared across platforms. The permitted values are the same set regardless of destination. GA4 reports them verbatim, Adobe classifies them, the ad platform ignores them, and all three stay reconcilable because the values agree.
  2. Generated, not typed. A link assembled by a system from validated inputs cannot carry a trailing space or a fourth spelling of email. A typed link can and eventually will.
  3. Available where links are built — including to the agency and the regional team. A standard not present at the moment of link construction is a document, not a control.

None of this changes what the three platforms do. What changes is that their three answers become reconcilable, because the same campaign is identifiable as the same campaign in each.

“Claravine democratizes access to the data, and then it also makes it easier to do cross-channel analysis, because everybody’s using the same code structure.” — Kimberly Whitehead, marketing technology manager, Vanguard

One campaign identity, everywhereApproved values applied where campaigns are created.Explore campaign tracking and measurement

Frequently asked questions

How do you track campaigns in Google Analytics?

Append UTM parameters to the destination URL; GA4 maps them onto its own campaign dimensions. It accepts whatever you send, so the quality of the report is decided when the link is built.

How do you track campaign performance?

By ensuring the same campaign carries the same identifier in every system that reports on it. The join matters more than the metrics: a metric computed over the wrong grouping is precisely wrong.

What are the different types of campaign tracking methods?

URL parameters read by an analytics platform, platform-native campaign objects, and classification-based codes resolved against a maintained list.

What analytics should I track?

Start from the decisions you need to make, then take the smallest set of metrics that informs them. A metric that has never changed a decision costs review time without paying for it.

Why do GA4 and Adobe disagree about the same campaign?

Because GA4 accepts whatever you send and Adobe resolves against a list. One reports the value; the other reports whether it recognized the value. Both are answering correctly and they are answering different questions.

Sources

Related Posts

Free guideHow to Build a Marketing TaxonomyA 17-page guide with example marketing taxonomies — the critical steps in building one, the role of metadata in your marketing ecosystem, the questions to settle for an enterprise-wide taxonomy, and examples from a range of industries.Get the guide
Upright bolts giving way to a solid enclosure and an open wireframe lattice

Data Democratization: Wider Access Without Worse Data

Open bins scattered loosely beside bins packed tightly in a dense grid

Data Silos: What They Are, and the One Integration Cannot Fix

Scattered cube clusters beside a uniform chevron pattern of blocks

Data-Driven Content: What Has to Be Tagged Before the Data Means Anything