Skip to content

Commit 425c9c1

Browse files
Add External ID to Facebook init
1 parent 8de44b8 commit 425c9c1

File tree

2 files changed

+97
-3
lines changed

2 files changed

+97
-3
lines changed

src/FacebookEventForwarder.js

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,29 @@
2525
OptOut: 6,
2626
Commerce: 16
2727
},
28+
IdentityType = {
29+
Other: 0,
30+
CustomerId: 1,
31+
Facebook: 2,
32+
Twitter: 3,
33+
Google: 4,
34+
Microsoft: 5,
35+
Yahoo: 6,
36+
Email: 7,
37+
FacebookCustomAudienceId: 9,
38+
Other2: 10,
39+
Other3: 11,
40+
Other4: 12,
41+
Other5: 13,
42+
Other6: 14,
43+
Other7: 15,
44+
Other8: 16,
45+
Other9: 17,
46+
Other10: 18,
47+
MobileNumber: 19,
48+
PhoneNumber2: 20,
49+
PhoneNumber3: 21,
50+
},
2851
SupportedCommerceTypes = [],
2952
constructor = function () {
3053
var self = this,
@@ -33,7 +56,7 @@
3356

3457
self.name = name;
3558

36-
function initForwarder(settings, service, testMode) {
59+
function initForwarder(settings, service, testMode, trackerId, userAttributes, userIdentities) {
3760
reportingService = service;
3861

3962
SupportedCommerceTypes = [
@@ -53,7 +76,22 @@
5376
s.parentNode.insertBefore(t, s);
5477
} (window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js');
5578

56-
fbq('init', settings.pixelId);
79+
var visitorData = {};
80+
81+
if(settings.externalUserIdentityType && userIdentities && userIdentities.length > 0) {
82+
var selectedType = IdentityType[settings.externalUserIdentityType];
83+
var selectedIdentity = userIdentities.filter(function (identityElement) {
84+
if (identityElement.Type === selectedType) {
85+
return identityElement.Identity;
86+
}
87+
})
88+
89+
if (selectedIdentity.length > 0) {
90+
visitorData['external_id'] = selectedIdentity[0].Identity;
91+
}
92+
}
93+
94+
fbq('init', settings.pixelId, visitorData);
5795
}
5896

5997
isInitialized = true;

test/tests.js

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,29 @@ describe('Facebook Forwarder', function () {
99
OptOut: 6,
1010
Commerce: 16
1111
},
12+
IdentityType = {
13+
Other: 0,
14+
CustomerId: 1,
15+
Facebook: 2,
16+
Twitter: 3,
17+
Google: 4,
18+
Microsoft: 5,
19+
Yahoo: 6,
20+
Email: 7,
21+
FacebookCustomAudienceId: 9,
22+
Other2: 10,
23+
Other3: 11,
24+
Other4: 12,
25+
Other5: 13,
26+
Other6: 14,
27+
Other7: 15,
28+
Other8: 16,
29+
Other9: 17,
30+
Other10: 18,
31+
MobileNumber: 19,
32+
PhoneNumber2: 20,
33+
PhoneNumber3: 21,
34+
},
1235
EventType = {
1336
Unknown: 0,
1437
Navigation: 1,
@@ -72,7 +95,7 @@ describe('Facebook Forwarder', function () {
7295

7396
function MPMock() {
7497
var self = this;
75-
var calledMethods = ['track'];
98+
var calledMethods = ['track', 'init'];
7699

77100
for (var i = 0; i < calledMethods.length; i++) {
78101
this[calledMethods[i] + 'Called'] = false;
@@ -118,6 +141,39 @@ describe('Facebook Forwarder', function () {
118141

119142
describe('Events handled by this forwarder', function () {
120143

144+
it('should initialize basic parameters', function (done) {
145+
mParticle.forwarder.init({
146+
pixelCode: 'mock-pixel-code',
147+
externalUserIdentityType: 'CustomerId',
148+
}, reportService.cb, false);
149+
150+
window.fbqObj.should.have.property('initCalled', true);
151+
window.fbqObj.should.have.property('params', {});
152+
153+
done();
154+
});
155+
156+
it('should initialize with externalUserIdentityType', function (done) {
157+
const userIdentities = [
158+
{
159+
Type: 1,
160+
Identity: 'mock-customer-id',
161+
},
162+
];
163+
164+
mParticle.forwarder.init({
165+
pixelCode: 'mock-pixel-code',
166+
externalUserIdentityType: 'CustomerId',
167+
}, reportService.cb, false, null, null, userIdentities);
168+
169+
window.fbqObj.should.have.property('initCalled', true);
170+
window.fbqObj.should.have.property('params', {
171+
external_id: 'mock-customer-id',
172+
});
173+
174+
done();
175+
});
176+
121177
it('should log page event', function (done) {
122178
mParticle.forwarder.process({
123179
EventDataType: MessageType.PageEvent

0 commit comments

Comments
 (0)