Analytics & Attribution

Your Server Event Arrived. GA4 Still May Not Know Where It Came From.

Server events passing through validation into an attributed analytics session.

Updated: October 2026

A GA4 Measurement Protocol event can be accepted and still appear without useful session attribution. To connect a server event to the right journey, send the correct client or app identifier, a valid session_id, an accurate timestamp, consent state, and deduplication logic—then validate before trusting reports.

Delivery is not attribution

The Measurement Protocol sends events with an HTTP request. A successful response confirms receipt, not that every parameter is valid or that the event will join the intended session. Google warns that session-based events can show (not set)/(not set) for source and medium when a valid session_id is missing.

This matters for offline lead updates, payments, refunds, subscriptions, calls, and CRM events. The event can increase a key-event total while weakening channel analysis.

The attribution contract

Control Purpose Failure
client_id or app_instance_id User context Cannot join expected journey
session_id Session association Source/medium becomes not set
timestamp_micros Correct event time Misleading journey order
event_id / transaction_id Deduplication Duplicate conversions
consent Applicable privacy state Privacy and modeling inconsistency

A validation workflow

Capture identifiers at the source

Store the GA client or app identifier and current session ID with the lead, cart, or transaction that later triggers the server event. Do not reconstruct them from email or CRM identity.

Use the validation endpoint

Use Google’s validation server or Event Builder in development. Treat warnings as defects even when the production endpoint would accept the payload.

Control event time

Send when the business action occurred. Google documents backdating behavior, including a 72-hour window in many cases. Do not convert delayed CRM processing time into conversion time.

Prevent duplicates

Retries are normal. Generate stable identifiers so the same payment or qualified-lead update is not counted twice.

Reconcile three systems

The source proves the business event, transport logs prove the request, and GA4 proves reporting. A discrepancy should be diagnosable to one layer.

Post-launch checks

  • Share of server events with a session source and medium.
  • Event timestamps versus CRM or payment time.
  • Transaction IDs across retries.
  • Attributed totals versus the source system.
  • Consent state alignment.
  • Unexpected channel-mix changes.

Use the GA4 Consent Mode diagnostics guide when consent is the likely break, and the offline conversion lag framework for delayed outcomes.

Monitor an attribution-quality rate

Create a diagnostic ratio: server events with a valid session source and medium divided by all eligible server events. Break it down by event name, platform, implementation version, and day. A sudden drop usually points to an identifier, consent, or timing regression even when total event volume looks stable.

Keep this diagnostic separate from conversion performance. A lower unattributed rate improves analysis, but it does not prove the marketing program created more conversions. Measurement quality and business lift answer different questions.

Frequently asked questions

Does HTTP 2xx mean the event is correct?

No. It means the request was received. Validate the payload and resulting dimensions.

Can attribution work without session_id?

The event may appear, but Google notes that session source and medium can become not set.

Should Measurement Protocol replace browser tagging?

Usually no. Google describes it as a way to augment existing collection.

Sources

Published by Marketing That Clicks
Last reviewed October 2026.