What Does Session Id Do?
Session ID identifies the current session of a user.
If there is no session ID we will estimate session time based on the event timestamps of events that we see. In order to have a decently accurate session time estimation, the events from your backend would have to be sent to us in near real-time (i.e., not aggregated); as we use the time between events to estimate the amount of time a user is using the system, and if we notice a long idle period between events, then we'll discount that time. For example, if we don't see a user for X minutes, we'll time them out and assume a new session has started when we see them again. Therefore, it really depends on how frequently you mirror the events from your clients.
How We Track User Time Spent for NateroJS?
We track active time a user spent on the product. If a mouse movement or key has not been pressed for 1 minute, we stop counting. So it may be that a user is going back and forth between your application and something else, or that he/she is looking something up and still have it open, but the time spent is the time spent actively moving or typing in your application.
Since Segment does not track the time a user spends within the product, Natero attempts to estimate the time spent within a module and time spent within a session. When we do not see a session ID (Segment anonymousId) for a period of 30 minutes, we 'timeout' the session and compute the time spent within that session. We perform similar calculations to determine the amount of time spent within a module.
Natero JS Library
The Natero JS event library would generate a session cookie with a unique session ID. We then send that session ID along with the events, and only change it when the user logs out or re-logs in. We then tie together the events associated with that session.
In other words, the Natero JS event Library internally tracks idle time based on detecting usage and automatically sends updates regarding session time usage.