Hi @phemeral - welcome to the Amplitude Community! So happy to have you here.
I understand that every click (aside from organic traffic) is expected to have utm parameters attached to them. When you say that some users have events with undefined parameters, does this mean the same thing as having a null value for that utm parameter?
We do have the ability on the backend to toggle on the override functionality, which will keep the oldest values of the user properties listed after user profiles merge within a project. This is typically done for customers who wish to keep the original initial UTM parameters of their users and not let subsequent events of the users take on new values due to user merging. Do you think this may resolve the issue you’ve described?
Null utm value: Amplitude is an event-based platform, which means that events are logged with the event properties and the user properties present at the time the event was fired, which is what is reflected in the chart/individual event stream. So if an event doesn't have a utm tag associated with it, then there was no utm value captured at the time of the event. A utm parameter with a null value can mean that there were no parameters in the URL for Amplitude to pick up on or the traffic was organic. Our JS SDK doesn’t mark direct/organic users automatically.
Is the SDK configured to unset the utm parameters upon a new session? (option: unsetParamsReferrerOnNewSession) - this is false by default, meaning that when a user starts a new session and no new utm values are collected, then the previous values will persist. If the option is configured to "true", then when a user starts a new session and navigates to the site organically, the null value will appear instead.
Does the SDK capture new utm values within the same session or only at the start of a session? (option: saveParamsReferrerOncePerSession) - this is true by default, meaning that utm values are only collected at the start of a session. If the user navigates to the site organically and then comes back within the same session from an ad, then the SDK will NOT capture the parameters from the ad. If the option is configured to "false", then any new values will be collected throughout the session.
I understand that was a lot of information, but I hope it helps!
Best,
Julia
Welcome to the community @phemeral!