diff --git a/integrations/facebook-pixel/HISTORY.md b/integrations/facebook-pixel/HISTORY.md index 04a8d8fc0..c16b471bb 100644 --- a/integrations/facebook-pixel/HISTORY.md +++ b/integrations/facebook-pixel/HISTORY.md @@ -1,3 +1,8 @@ +2.11.0/ 2020-07-16 +================== + + * Add support for Limited Data Use. See: https://developers.facebook.com/docs/marketing-apis/data-processing-options + 2.10.0/ 2019-12-04 ================== diff --git a/integrations/facebook-pixel/lib/index.js b/integrations/facebook-pixel/lib/index.js index 2f8f19cff..da319459f 100644 --- a/integrations/facebook-pixel/lib/index.js +++ b/integrations/facebook-pixel/lib/index.js @@ -30,6 +30,7 @@ var FacebookPixel = (module.exports = integration('Facebook Pixel') .option('standardEventsCustomProperties', []) .option('keyForExternalId', '') .option('userIdAsExternalId', false) + .option('limitedDataUse', true) .mapping('standardEvents') .mapping('legacyEvents') .mapping('contentTypes') @@ -102,6 +103,9 @@ FacebookPixel.prototype.initialize = function() { if (!this.options.automaticConfiguration) { window.fbq('set', 'autoConfig', false, this.options.pixelId); } + if (this.options.limitedDataUse) { + window.fbq('dataProcessingOptions', ['LDU'], 0, 0); + } if (this.options.initWithExistingTraits) { var traits = this.formatTraits(this.analytics); window.fbq('init', this.options.pixelId, traits); diff --git a/integrations/facebook-pixel/package.json b/integrations/facebook-pixel/package.json index 99ca8b30a..6910bbd81 100644 --- a/integrations/facebook-pixel/package.json +++ b/integrations/facebook-pixel/package.json @@ -1,7 +1,7 @@ { "name": "@segment/analytics.js-integration-facebook-pixel", "description": "The Facebook Pixel analytics.js integration.", - "version": "2.10.0", + "version": "2.11.0", "keywords": [ "analytics.js", "analytics.js-integration", diff --git a/integrations/facebook-pixel/test/index.test.js b/integrations/facebook-pixel/test/index.test.js index 687f9a1e4..7e85a6eb8 100644 --- a/integrations/facebook-pixel/test/index.test.js +++ b/integrations/facebook-pixel/test/index.test.js @@ -35,6 +35,7 @@ describe('Facebook Pixel', function() { pixelId: '123123123', agent: 'test', initWithExistingTraits: false, + limitedDataUse: true, whitelistPiiProperties: [], blacklistPiiProperties: [], standardEventsCustomProperties: [] @@ -147,6 +148,12 @@ describe('Facebook Pixel', function() { ); }); + it('should call dataProcessingOptions if limitedDataUse is enabled', function() { + analytics.stub(window, 'fbq'); + analytics.initialize(); + analytics.called(window.fbq, 'dataProcessingOptions', ['LDU'], 0, 0); + }); + before(function() { options.initWithExistingTraits = true; }); @@ -171,6 +178,28 @@ describe('Facebook Pixel', function() { analytics.called(window.fbq, 'init', options.pixelId, payload); }); }); + + describe('#initialize without LDU', function() { + before(function() { + options.limitedDataUse = false; + }); + + after(function() { + options.limitedDataUse = true; + }); + + it('should not call dataProcessingOptions if limitedDataUse is false', function() { + analytics.stub(window, 'fbq'); + analytics.initialize(); + analytics.didNotCall( + window.fbq, + 'dataProcessingOptions', + ['LDU'], + 0, + 0 + ); + }); + }); }); describe('loading', function() {