diff --git a/src/amplitude-client.js b/src/amplitude-client.js index 2822d8db..9ea229e9 100644 --- a/src/amplitude-client.js +++ b/src/amplitude-client.js @@ -517,7 +517,10 @@ var _loadCookieDataProps = function _loadCookieDataProps(scope, cookieData) { scope.options.userId = cookieData.userId; } if (cookieData.optOut !== null && cookieData.optOut !== undefined) { - scope.options.optOut = cookieData.optOut; + // Do not clobber config opt out value if cookieData has optOut as false + if (cookieData.optOut !== false) { + scope.options.optOut = cookieData.optOut; + } } if (cookieData.sessionId) { scope._sessionId = parseInt(cookieData.sessionId); diff --git a/test/amplitude-client.js b/test/amplitude-client.js index 527d04db..711575b8 100644 --- a/test/amplitude-client.js +++ b/test/amplitude-client.js @@ -2579,6 +2579,14 @@ describe('setVersionName', function() { assert.strictEqual(amplitude2.options.optOut, true); }); + it('should favor the config optOut setting over cookie optOut if the config optOut is set to true', function() { + var amplitude = new AmplitudeClient(); + cookie.set(amplitude.options.cookieName, { optOut: false }); + amplitude.init(apiKey, null, { optOut: true }); + + assert.strictEqual(amplitude.options.optOut, true); + }); + it('should limit identify events queued', function() { amplitude.init(apiKey, null, {savedMaxCount: 10});