Can you explain the persistence logic for UTM parameters in our event-level tracking? Specifically, do UTM values follow a 'Last-Non-Direct Click' model where they are stored in the user's session/cookie and appended to all subsequent events until a new UTM source is detected?
Hi Marija K., Please stand by as I search the Mixpanel knowledge base for an AI-powered answer. I normally take about 15 seconds or so. In case AI cannot answer your question, feel free to reach out to Mixpanel support at mixpanel.com/get-support. If you have follow-up questions for this thread, please tag me again with your question: @kapa.ai <follow-up question> 👋
Feel free to ask a follow-up question once I've answered by mentioning me with @kapa.ai
Yes, for client-side (JavaScript) tracking, UTM parameters are persisted and behave effectively like a “last non-direct click” model by default:
When a page loads with UTM parameters, the JS SDK automatically captures them and stores them as super properties in the user’s cookie/local storage. These super properties are then appended to all subsequent events from that browser. [Track UTM tags; Web attribution]
If the user later lands on a URL with new UTM parameters, the stored values are updated to the new ones, and those new values are then sent with subsequent events. This aligns with a last-touch / last-non-direct style model. [Troubleshooting FAQ; Web attribution]
So yes: UTM values are stored in the user’s cookie and appended to events until a new set of UTM parameters is detected.
Note: Mixpanel now recommends disabling this persistence (stop_utm_persistence: true in mixpanel.init) when you want cleaner multi-touch attribution using the Attribution feature, since that feature computes attribution from the raw UTM values on each event rather than from persisted super properties. [Track UTM tags; Attribution feature]
ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.
