Home / Tracking parameter reference

GA4 /g/collect parameters, explained

What each parameter in a GA4 request means, grouped the way you read a hit, and the limits that make GA4 drop or cut what the page sent.

37 parameters · descriptions from the Tag Master extension’s glossary · Decode a real GA4 request →

Where the request goes

GA4 sends events to https://region1.google-analytics.com/g/collect (or www.google-analytics.com/g/collect), usually as a POST. The URL carries what the events share — the measurement ID, the client ID, the page — and when several events are batched, the body carries one line per event. Through a server-side container or Google tag gateway the host is your own domain, but the path and the parameters are the same.

Request and property

Which property the hit is for and how it was sent.

ParameterWhat it means
vProtocol VersionMeasurement protocol version. GA4 is always 2; a 1 here means a Universal Analytics hit, which stopped being processed in 2024.
tidMeasurement IDThe account the hit is reported to — G- for a GA4 property, AW- for a Google Ads account. If this is not the id you expect, the data is landing in someone else's report.
tidsSeveral destination ids in one hit, comma separated. The Google tag sends one request on behalf of every tag id it is configured for.
_pA random number identifying this page load, shared by every hit from it. Useful for telling one page view's hits from the next.
_sHow many hits this page has sent so far in the session.
_zCache buster, so a proxy cannot serve a stale response.
_dbgDebug flag. When it is 1 the hit appears in GA4 DebugView — Tag Master shows it either way.

Event

The event itself. Your own parameters ride on the ep. and epn. prefixes.

ParameterWhat it means
enEvent NameThe event name being reported. This is the name you will look for in GA4, so a typo here silently creates a second event.
ep.<name>A parameter you sent with the event. GA4 keeps 25 of them per event, names up to 40 characters and values up to 100.
epn.<name>A number you sent with the event (GA4 stores it as a metric). The part after epn. is your own parameter name.
_etEngagement time in milliseconds since the last hit — the raw material behind average engagement time.
_eeMarks the hit that carries the session's engagement signal.

Ecommerce

Money and items. The value itself travels as an event parameter, usually epn.value.

ParameterWhat it means
cuCurrencyCurrency, in ISO-4217 form (TRY, EUR, USD). A value without a currency is dropped from revenue reports.
pr1The first item in the cart, packed as id~name~price~quantity with two-letter prefixes. Tag Master decodes these into the items table above.

User and session

Who the visitor is, as far as GA4 can tell, and where in the session this hit sits.

ParameterWhat it means
cidClient IDClient ID — the browser's anonymous identifier, taken from the _ga cookie. Two page views with different client ids count as two users.
uidUser IDUser ID you set yourself, to stitch a person across devices. It must never be an email address or a phone number.
sidSession IDSession ID, a timestamp of when the session started. It changes after 30 minutes of inactivity or at midnight in the property's timezone.
sctSession CountHow many sessions this browser has had. 1 means this is a first-time visitor as far as GA4 can tell.
segSession EngagedSession engaged. 1 once the visit lasts over 10 seconds, sees two pages, or triggers a conversion — that is what separates an engaged session from a bounce.
_fvFirst visit for this browser.
_nsiNew session id — this hit opened a new session.
_ssSession start — the first hit of a session.
up.<name>A user property — something true about the visitor rather than about this event. Names up to 24 characters, values up to 36.
upn.<name>A numeric user property. GA4 keeps 25 of them, and they describe the person rather than the event.

Page

Where the hit was sent from.

ParameterWhat it means
dlPage LocationThe full page URL the hit is about. If personal data ends up in the query string, it ends up here too — for every tag on the page.
drReferrerThe referrer. Empty on a direct visit; a self-referral here usually means a cross-domain link lost its linker parameter.
dtPage TitleThe page title at the moment the hit fired. On single page apps this often lags a route change by a beat.
ulLanguageThe browser's language setting, which is where the Language report comes from.
srScreen ResolutionScreen resolution in pixels.
frmWhether the hit came from inside an iframe. 1 means it did, which is often an embedded checkout.
tfdMilliseconds between the page starting to load and this hit leaving.

The consent state the tag knew when it sent the hit.

ParameterWhat it means
gcsConsent State (gcs)Consent state at the moment of the hit, read as G1<ad_storage><analytics_storage>: G111 means both granted, G100 means both denied.
gcdConsent Default (gcd)The consent defaults the page declared, including ad_user_data and ad_personalization. It tells you what the site asked for before the visitor answered.
npaNon-Personalized AdsNon-personalised ads. 1 means this hit may not be used for remarketing.
dmaDMA RegionWhether the hit is treated under the EU Digital Markets Act.
dma_cpsWhether the visitor allowed data to be shared with Google Ads partners.
irMarks the hit as coming from an ignored referrer configured in the property.

What goes wrong

The checks the Tag Master extension runs on every GA4 hit it captures. Each is something the platform drops, cuts or misreports without saying so in its own interface.

Dropped or wrongAn event name longer than 40 characters

GA4 rejects the event outright; it will never appear in a report.

Fix: Shorten the event name to 40 characters or fewer.

Platform documentation

Dropped or wrongAn event name with spaces, dashes or a leading digit

Spaces, dashes and leading digits are rejected before the event is recorded.

Fix: Rename the event, e.g. add_to_cart rather than "Add to cart".

Platform documentation

Dropped or wrongAn event name starting with ga_, google_ or firebase_

ga_, google_ and firebase_ belong to Google's own instrumentation.

Fix: Pick a name outside those prefixes.

Platform documentation

Worth a lookAn event name GA4 already uses itself

GA4 already collects this one itself, so your version competes with its own reporting.

Fix: Use a distinct name unless you deliberately mean the built-in event.

Platform documentation

Worth a lookMore than 25 event parameters

Everything past the twenty-fifth is discarded, and which ones survive is not documented.

Fix: Drop the parameters you do not report on, or move them to user properties.

Dropped or wrongA parameter name longer than 40 characters

GA4 drops the parameter rather than truncating its name.

Fix: Shorten the parameter name.

Dropped or wrongA parameter value longer than 100 characters

The tail is cut, so the values you compare in reports may be identical prefixes.

Fix: Send an id rather than the full text.

Dropped or wrongA user property over its limits

Over-long user properties are dropped, and audiences built on them stay empty.

Fix: Shorten the property name or the value.

Dropped or wrongA value with no currency

Without a currency GA4 cannot convert the amount, so the revenue column stays empty.

Fix: Send currency alongside value, e.g. currency: "TRY".

Platform documentation

Dropped or wrongA currency that is not a three-letter code

Platforms cannot convert an unknown currency, so the value is dropped or read as the account default — silently changing what the sale was worth.

Fix: Send the three-letter code: TRY, EUR, USD. Not the symbol, not lowercase.

Platform documentation

Dropped or wrongA value that is not a plain number

A value carrying a currency sign, a thousands separator or a comma decimal reads as zero on the platform side.

Fix: Send 1649.25 — no symbols, no spaces, dot as the decimal separator.

Worth a lookA commerce event with no items

Commerce reports are built from items; without them the event counts but sells nothing.

Fix: Add the items array to the ecommerce payload.

Dropped or wrongAn item with neither item_id nor item_name

GA4 joins products across events by item_id; an unidentified item cannot join anything.

Fix: Send item_id on every item.

Worth a lookAn item price that is not a number

A price like "549,75 TL" is read as zero, so the item contributes nothing to revenue.

Fix: Send price as a number: 549.75, no currency sign, dot as the decimal separator.

Worth a lookMore than 200 items in one event

The rest are dropped, and a large basket loses its tail.

Fix: Send the items that matter, or split the event.

Dropped or wrongA purchase with no transaction_id

A reloaded confirmation page counts the sale again, and revenue drifts upward.

Fix: Send transaction_id with every purchase.

Platform documentation

Worth a lookA value that does not match its items

value is the basket and the items are what is in it. When they disagree, revenue by product will not add up to revenue, and one of the two is being computed differently from the other.

Fix: Send value as the sum of price × quantity, with item prices already discounted. An order-level coupon explains a lower value; a higher one usually means shipping or tax went into it.

Have a request in front of you? Paste it into the tracking request decoder and every parameter above is named on the hit itself, with these checks run on it. The Tag Master extension does the same for every request on the page, live.

Questions

Where is the purchase value in a GA4 request?

In an event parameter, normally epn.value — the n marks it as a number. The currency is cu. Without cu, GA4 does not report the revenue.

What is the difference between ep. and epn.?

ep. carries a text parameter and epn. a numeric one. The name after the prefix is the parameter name you set in the tag, such as ep.transaction_id or epn.value.

Why do some GA4 events not appear in the request URL?

GA4 batches: when several events leave together, the URL holds what they share and the POST body holds one line per event. Read the Payload tab, or paste both into the request decoder.

Related guides

Other references: Meta Pixel · Google Ads conversion · TikTok Pixel

Try it on your own site

Tag Master is free, needs no account, and collects no data.

Add to Chrome — Free