diff --git a/integrations/adobe-analytics/lib/index.js b/integrations/adobe-analytics/lib/index.js index 84073d524..d5a275263 100644 --- a/integrations/adobe-analytics/lib/index.js +++ b/integrations/adobe-analytics/lib/index.js @@ -620,6 +620,14 @@ function updateContextData(facade, options) { return; } + // If context data values are booleans then stringify them. + // Adobe's SDK seems to reject a false boolean value. Stringifying is + // acceptable since these values are appended as query strings anyway. + if (typeof value === 'boolean') { + addContextDatum(key, value.toString()); + return; + } + addContextDatum(key, value); }, contextProperties); } diff --git a/integrations/adobe-analytics/test/index.test.js b/integrations/adobe-analytics/test/index.test.js index d1c3fdb23..73e2b1628 100644 --- a/integrations/adobe-analytics/test/index.test.js +++ b/integrations/adobe-analytics/test/index.test.js @@ -1175,6 +1175,30 @@ describe('Adobe Analytics', function() { }); analytics.equal(window.s.events, 'prodView,event1,event38'); }); + + it('should stringify bool context data', function() { + adobeAnalytics.options.contextValues = { + 'page.referrer': 'page.referrer', + 'page.url': 'page.title', + 'page.bickenBack': 'page.bickenBack' + }; + analytics.track( + 'Drank Some Milk', + { foo: 'bar' }, + { page: { bickenBack: false } } + ); + analytics.equal( + window.s.contextData['page.referrer'], + window.document.referrer + ); + analytics.equal( + window.s.contextData['page.title'], + window.location.href + ); + analytics.equal(window.s.contextData['page.bickenBack'], 'false'); + analytics.equal(window.s.contextData.foo, 'bar'); + analytics.called(window.s.tl); + }); }); });