Answers
1 answer
Usually that means GA4 can see the server-side purchase, but it can’t attach it to the original browser session. `client_id` identifies the browser instance; session source is session-scoped, so the Measurement Protocol purchase needs the exact GA `session_id` from that client-side session too. Make sure you’re not sending Stripe’s Checkout Session ID or an ID you generated. Capture GA’s client ID and session ID before the redirect, then send the matching client ID at the request level and `session_id` in the purchase event params.
If that’s already in place, check that the original Google tag actually created `session_start`; GA4 says a missing `session_start` produces `(not set)` for session source/medium. Also check the payload with the Measurement Protocol validation endpoint and compare the IDs against an affected browser session. Don’t add `utm_*` values to the webhook just to force a source — Google warns that can misattribute the purchase.
Your answer
Sign in to answer.
Keep exploring