Skip to content
This repository was archived by the owner on Apr 27, 2024. It is now read-only.

Commit

Permalink
refactor advert property to use consistent vars
Browse files Browse the repository at this point in the history
  • Loading branch information
john-doherty committed Mar 10, 2024
1 parent 623a4f3 commit 2b2ace6
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 30 deletions.
32 changes: 11 additions & 21 deletions src/mixpanel-lite.js
Original file line number Diff line number Diff line change
Expand Up @@ -529,34 +529,24 @@
}

/**
* Get advertising click IDs from the URL.
*
* Get advertising click IDs from the URL
* @returns {Object} An object containing the advertising click IDs found in the URL. The object can have the following properties:
* - facebookClickId {string}: for tracking interactions with Facebook ads
* - doubleClickId {string}: for tracking ads served by Google's DoubleClick
* - googleClickId {string}: for tracking Google Ads campaigns
* - genericClickId {string}: for tracking clicks on certain advertising platforms
* - linkedInClickId {string}: for tracking interactions with LinkedIn ads
* - microsoftClickId {string}: for tracking interactions with Microsoft Advertising
* - tikTokClickId {string}: for tracking interactions with TikTok ads
* - twitterClickId {string}: for tracking interactions with Twitter ads
* - webBrowserReferrerId {string}: for tracking sources of traffic or conversions.
* Each property is included only if its corresponding param exists
*/
function getAdvertisingClickIDs() {

var urlParams = new URLSearchParams(window.location.search || '');
var clickIDs = {};

if (urlParams.has('dclid')) clickIDs.doubleClickId = urlParams.get('dclid');
if (urlParams.has('fbclid')) clickIDs.facebookClickId = urlParams.get('fbclid');
if (urlParams.has('gclid')) clickIDs.googleClickId = urlParams.get('gclid');
if (urlParams.has('ko_click_id')) clickIDs.genericClickId = urlParams.get('ko_click_id');
if (urlParams.has('li_fat_id')) clickIDs.linkedInClickId = urlParams.get('li_fat_id');
if (urlParams.has('msclkid')) clickIDs.microsoftClickId = urlParams.get('msclkid');
if (urlParams.has('ttclid')) clickIDs.tikTokClickId = urlParams.get('ttclid');
if (urlParams.has('twclid')) clickIDs.twitterClickId = urlParams.get('twclid');
if (urlParams.has('wbraid')) clickIDs.webBrowserReferrerId = urlParams.get('wbraid');
if (urlParams.has('dclid')) clickIDs.dclid = urlParams.get('dclid');
if (urlParams.has('fbclid')) clickIDs.fbclid = urlParams.get('fbclid');
if (urlParams.has('gclid')) clickIDs.gclid = urlParams.get('gclid');
if (urlParams.has('ko_click_id')) clickIDs.ko_click_id = urlParams.get('ko_click_id');
if (urlParams.has('li_fat_id')) clickIDs.li_fat_id = urlParams.get('li_fat_id');
if (urlParams.has('msclkid')) clickIDs.msclkid = urlParams.get('msclkid');
if (urlParams.has('ttclid')) clickIDs.ttclid = urlParams.get('ttclid');
if (urlParams.has('twclid')) clickIDs.twclid = urlParams.get('twclid');
if (urlParams.has('wbraid')) clickIDs.wbraid = urlParams.get('wbraid');

return Object.keys(clickIDs).length > 0 ? clickIDs : null;
}
Expand Down Expand Up @@ -907,7 +897,7 @@

var advertParams = getAdvertisingClickIDs();
if (advertParams) {
_properties.advert = advertParams;
_properties.ad = advertParams;
}

// only track page URLs (not file etc)
Expand Down
18 changes: 9 additions & 9 deletions tests/mixpanel-lite-advert-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,14 @@ describe('mixpanel-lite UTM', function () {
expect(data.properties.distinct_id).toBeDefined();
expect(data.properties.$browser).toEqual('Chrome');
expect(data.properties.token).toEqual(token);
expect(data.properties.advert.doubleClickId).toEqual('randomDclidValue');
expect(data.properties.advert.facebookClickId).toEqual('randomFbclidValue');
expect(data.properties.advert.genericClickId).toEqual('randomKoClickIdValue');
expect(data.properties.advert.linkedInClickId).toEqual('randomLiFatIdValue');
expect(data.properties.advert.microsoftClickId).toEqual('randomMsclkidValue');
expect(data.properties.advert.tikTokClickId).toEqual('randomTtclidValue');
expect(data.properties.advert.twitterClickId).toEqual('randomTwclidValue');
expect(data.properties.advert.webBrowserReferrerId).toEqual('randomWbraidValue');
expect(data.properties.ad.dclid).toEqual('randomDclidValue');
expect(data.properties.ad.fbclid).toEqual('randomFbclidValue');
expect(data.properties.ad.ko_click_id).toEqual('randomKoClickIdValue');
expect(data.properties.ad.li_fat_id).toEqual('randomLiFatIdValue');
expect(data.properties.ad.msclkid).toEqual('randomMsclkidValue');
expect(data.properties.ad.ttclid).toEqual('randomTtclidValue');
expect(data.properties.ad.twclid).toEqual('randomTwclidValue');
expect(data.properties.ad.wbraid).toEqual('randomWbraidValue');

resolve(); // Resolve the promise after assertions
}
Expand Down Expand Up @@ -127,7 +127,7 @@ describe('mixpanel-lite UTM', function () {
expect(data.properties.$browser).toEqual('Chrome');
expect(data.properties.token).toEqual(token);

expect(data.properties.advert).toBeUndefined();
expect(data.properties.ad).toBeUndefined();

resolve(); // Resolve the promise after assertions
}
Expand Down

0 comments on commit 2b2ace6

Please sign in to comment.