My question is about ABSOLUTE_TIME_IN_S versus ENGAGED_TIME_IN_S and the fundamental difference. ABSOLUTE_TIME_IN_S is described as “The time in seconds between the start_tstamp and end_tstamp” while ENGAGED_TIME_IN_S is described “The total time engaged by a user within a session”.

To get start_tstamp and end_tstamp I assume this to be the first event and the last event ‘derived_tstamp’?

How is ENGAGED_TIME_IN_S different? is it the time between events?


Hey @kfitzpatrick, good question (and one I’ll be adding something to our docs on to help others with!).

In general yes, start and end_tstamp come from the first/last event in that page_view/session, however it has to come from page view or page ping events, rather than across any events (just in case you find some that you think don’t quite line up).

Engaged time is calculated based on the page ping events. Consider a case where I’m looking at a web page reading an article, I see a word I don’t understand so I open a new tab and search this word, I spend a few minutes reading the definition and origin and a few wikipedia pages later I go back to the article after 5 minutes in this other tab. Now all that time would count in my absolute time, because I have page ping events while I finish reading the article, but I wasn’t engaged during that time.

The actual formula for it is a bit of a beast, but we basically take

  1. The time from the page view to the first page ping (your snowplow__min_visit_length variable)
  2. The total number of distinct page pings events (-1 to adjust for the first ping) * your snowplow__heartbeat

then we add the two together . We do some stuff to ensure we get those distinct page pings that make the sql look complicated, but at it’s core we’re basically just measuring how many pings you got and translating that into how long you were active on the page for.

Hopefully that helps!


Thanks @Ryan, great answer, makes sense.