Manual Session Tracking

Manually tracking user sessions using the RudderStack SDKs.

RudderStack supports manual session tracking that lets you define the start and end of a user session.

warning
Manual session tracking overrides automatic session tracking.

The RudderStack SDKs (JavaScript, Android, iOS), React Native, and Flutter SDKs support the following manual session tracking methods:

MethodParametersDescription
startSession()-If you don't pass any parameter, RudderStack creates a new session and passes the current timestamp as the sessionId.
sessionId
Long integer with minimum length of 10 characters.
If you pass a custom sessionId parameter, RudderStack triggers a new user session.

It is not recommended to use a decimal number as the sessionId.
endSession()-RudderStack clears the sessionId and ends the session.

Persistence scope

The following sections list the persistence scope of manual session tracking in the JavaScript and mobile SDKs.

JavaScript

The persistence scope of manual session tracking in the JavaScript SDK does not depend on whether automatic session tracking is enabled or disabled.

If you call startSession(), the manual session continues even if you refresh or reopen the web page. To end the session, you must call endSession().

warning
If you identify a user with a new userId in an existing session, RudderStack triggers a reset() call. This ends the existing session and generates a new one, irrespective of whether endSession() is called or not.

Android/iOS/React Native/Flutter

The persistence scope of manual session tracking in the mobile SDKs depends on the status of automatic session tracking:

  • If automatic session tracking is enabled and you call startSession(), then RudderStack disables automatic session tracking until the app is closed completely. Once you restart the app, the SDKs resume automatic session tracking.
  • If automatic session tracking is disabled and you call startSession(), the manual session is active until you end it by calling endSession().

Sample snippets

The following snippets highlight the use of the manual session tracking methods:

JavaScript

rudderanalytics.startSession() // Starts a new user session and automatically assigns a session ID.

rudderanalytics.startSession(sessionId) // Passes a custom session ID while creating a new session.

rudderanalytics.endSession() // Ends the user session and clears the session ID.

Android

iOS

React Native

// Starts a new user session and automatically assigns a session ID.
rudderClient.startSession();

// Passes a custom session ID while creating a new session.
rudderClient.startSession(sessionId);

// Ends the user session and clears the session ID.
rudderClient.endSession();

Flutter

// Starts a new user session and automatically assigns a session ID.
rudderClient.startSession();

// Passes a custom session ID while creating a new session.
rudderClient.startSession(sessionId);

// Ends the user session and clears the session ID.
rudderClient.endSession();

Questions? Contact us by email or on Slack