Why are Stripe webhook purchases still (not set) in GA4 session source even with client and session IDs?

Was this question useful?Community ranking

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.

Was this answer helpful?Community ranking

Your answer

Sign in to answer.

Keep exploring

Similar questions

Browse all