diff --git a/common/changes/@snowplow/browser-tracker-core/issue-1268-previous_session_id_anonymous_tracking_2023-12-12-13-35.json b/common/changes/@snowplow/browser-tracker-core/issue-1268-previous_session_id_anonymous_tracking_2023-12-12-13-35.json new file mode 100644 index 000000000..628bf6092 --- /dev/null +++ b/common/changes/@snowplow/browser-tracker-core/issue-1268-previous_session_id_anonymous_tracking_2023-12-12-13-35.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@snowplow/browser-tracker-core", + "comment": "Do not set the previous session ID reference in cookies if anonymous tracking is enabled (#1268)", + "type": "none" + } + ], + "packageName": "@snowplow/browser-tracker-core" +} \ No newline at end of file diff --git a/libraries/browser-tracker-core/src/tracker/id_cookie.ts b/libraries/browser-tracker-core/src/tracker/id_cookie.ts index 831d672c1..4bf7502e6 100644 --- a/libraries/browser-tracker-core/src/tracker/id_cookie.ts +++ b/libraries/browser-tracker-core/src/tracker/id_cookie.ts @@ -256,9 +256,14 @@ export function incrementEventIndexInIdCookie(idCookie: ParsedIdCookie) { * @param idCookie Parsed cookie * @returns String cookie value */ -export function serializeIdCookie(idCookie: ParsedIdCookie) { - idCookie.shift(); - return idCookie.join('.'); +export function serializeIdCookie(idCookie: ParsedIdCookie, configAnonymousTracking: boolean) { + const anonymizedIdCookie: (string | number | undefined)[] = [...idCookie]; + if (configAnonymousTracking) { + anonymizedIdCookie[domainUserIdIndex] = ''; + anonymizedIdCookie[previousSessionIdIndex] = ''; + } + anonymizedIdCookie.shift(); + return anonymizedIdCookie.join('.'); } /** diff --git a/libraries/browser-tracker-core/src/tracker/index.ts b/libraries/browser-tracker-core/src/tracker/index.ts index 2183981c0..83c6155d9 100755 --- a/libraries/browser-tracker-core/src/tracker/index.ts +++ b/libraries/browser-tracker-core/src/tracker/index.ts @@ -586,7 +586,7 @@ export function Tracker( */ function setDomainUserIdCookie(idCookie: ParsedIdCookie) { const cookieName = getSnowplowCookieName('id'); - const cookieValue = serializeIdCookie(idCookie); + const cookieValue = serializeIdCookie(idCookie, configAnonymousTracking); return persistValue(cookieName, cookieValue, configVisitorCookieTimeout); } diff --git a/libraries/browser-tracker-core/test/id_cookie.test.ts b/libraries/browser-tracker-core/test/id_cookie.test.ts index d6584e7ff..a3749d608 100644 --- a/libraries/browser-tracker-core/test/id_cookie.test.ts +++ b/libraries/browser-tracker-core/test/id_cookie.test.ts @@ -262,7 +262,12 @@ describe('incrementEventIndexInIdCookie', () => { describe('serializeIdCookie', () => { it("Doesn't change the original cookie", () => { let cookie = `def.1653632272.10.1653632282.1653632262.ses.previous.fid.1653632252.9`; - expect(serializeIdCookie(parseIdCookie(cookie, '', '', 0))).toBe(cookie); + expect(serializeIdCookie(parseIdCookie(cookie, '', '', 0), false)).toBe(cookie); + }); + + it("Doesn't include domain user ID and previous session ID in case of anonymous tracking", () => { + let idCookie = parseIdCookie('def.1653632272.10.1653632282.1653632262.ses.previous.fid.1653632252.9', '', '', 0); + expect(serializeIdCookie(idCookie, true)).toBe('.1653632272.10.1653632282.1653632262.ses..fid.1653632252.9'); }); });