Skip to content

Commit b8a32bc

Browse files
committed
Merge pull request #71 from amplitude/only_save_nonnull_utm_properties
only save nonnull utm properties
2 parents f8008b8 + 7aec30b commit b8a32bc

File tree

5 files changed

+53
-21
lines changed

5 files changed

+53
-21
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
## Unreleased
22

3+
* Silence console warnings for various UTM property keys with undefined values.
4+
35
### 2.12.0 (April 20, 2016)
46

57
* Add support for setting groups for users and events. See the [Readme](https://github.com/amplitude/Amplitude-Javascript#setting-groups) for more information.

amplitude.js

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2629,34 +2629,49 @@ module.exports = localStorage;
26292629

26302630
}, {}],
26312631
5: [function(require, module, exports) {
2632-
var getUtmParam = function(name, query) {
2632+
var utils = require('./utils');
2633+
2634+
var getUtmParam = function getUtmParam(name, query) {
26332635
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
26342636
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)");
26352637
var results = regex.exec(query);
26362638
return results === null ? undefined : decodeURIComponent(results[1].replace(/\+/g, " "));
26372639
};
26382640

2639-
var getUtmData = function(rawCookie, query) {
2641+
var getUtmData = function getUtmData(rawCookie, query) {
26402642
// Translate the utmz cookie format into url query string format.
26412643
var cookie = rawCookie ? '?' + rawCookie.split('.').slice(-1)[0].replace(/\|/g, '&') : '';
26422644

2643-
var fetchParam = function (queryName, query, cookieName, cookie) {
2645+
var fetchParam = function fetchParam(queryName, query, cookieName, cookie) {
26442646
return getUtmParam(queryName, query) ||
26452647
getUtmParam(cookieName, cookie);
26462648
};
26472649

2648-
return {
2649-
utm_source: fetchParam('utm_source', query, 'utmcsr', cookie),
2650-
utm_medium: fetchParam('utm_medium', query, 'utmcmd', cookie),
2651-
utm_campaign: fetchParam('utm_campaign', query, 'utmccn', cookie),
2652-
utm_term: fetchParam('utm_term', query, 'utmctr', cookie),
2653-
utm_content: fetchParam('utm_content', query, 'utmcct', cookie),
2650+
var utmSource = fetchParam('utm_source', query, 'utmcsr', cookie);
2651+
var utmMedium = fetchParam('utm_medium', query, 'utmcmd', cookie);
2652+
var utmCampaign = fetchParam('utm_campaign', query, 'utmccn', cookie);
2653+
var utmTerm = fetchParam('utm_term', query, 'utmctr', cookie);
2654+
var utmContent = fetchParam('utm_content', query, 'utmcct', cookie);
2655+
2656+
var utmData = {};
2657+
var addIfNotNull = function addIfNotNull(key, value) {
2658+
if (!utils.isEmptyString(value)) {
2659+
utmData[key] = value;
2660+
}
26542661
};
2662+
2663+
addIfNotNull('utm_source', utmSource);
2664+
addIfNotNull('utm_medium', utmMedium);
2665+
addIfNotNull('utm_campaign', utmCampaign);
2666+
addIfNotNull('utm_term', utmTerm);
2667+
addIfNotNull('utm_content', utmContent);
2668+
2669+
return utmData;
26552670
};
26562671

26572672
module.exports = getUtmData;
26582673

2659-
}, {}],
2674+
}, {"./utils":15}],
26602675
6: [function(require, module, exports) {
26612676
var type = require('./type');
26622677
var utils = require('./utils');

amplitude.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/utm.js

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,41 @@
1-
var getUtmParam = function(name, query) {
1+
var utils = require('./utils');
2+
3+
var getUtmParam = function getUtmParam(name, query) {
24
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
35
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)");
46
var results = regex.exec(query);
57
return results === null ? undefined : decodeURIComponent(results[1].replace(/\+/g, " "));
68
};
79

8-
var getUtmData = function(rawCookie, query) {
10+
var getUtmData = function getUtmData(rawCookie, query) {
911
// Translate the utmz cookie format into url query string format.
1012
var cookie = rawCookie ? '?' + rawCookie.split('.').slice(-1)[0].replace(/\|/g, '&') : '';
1113

12-
var fetchParam = function (queryName, query, cookieName, cookie) {
14+
var fetchParam = function fetchParam(queryName, query, cookieName, cookie) {
1315
return getUtmParam(queryName, query) ||
1416
getUtmParam(cookieName, cookie);
1517
};
1618

17-
return {
18-
utm_source: fetchParam('utm_source', query, 'utmcsr', cookie),
19-
utm_medium: fetchParam('utm_medium', query, 'utmcmd', cookie),
20-
utm_campaign: fetchParam('utm_campaign', query, 'utmccn', cookie),
21-
utm_term: fetchParam('utm_term', query, 'utmctr', cookie),
22-
utm_content: fetchParam('utm_content', query, 'utmcct', cookie),
19+
var utmSource = fetchParam('utm_source', query, 'utmcsr', cookie);
20+
var utmMedium = fetchParam('utm_medium', query, 'utmcmd', cookie);
21+
var utmCampaign = fetchParam('utm_campaign', query, 'utmccn', cookie);
22+
var utmTerm = fetchParam('utm_term', query, 'utmctr', cookie);
23+
var utmContent = fetchParam('utm_content', query, 'utmcct', cookie);
24+
25+
var utmData = {};
26+
var addIfNotNull = function addIfNotNull(key, value) {
27+
if (!utils.isEmptyString(value)) {
28+
utmData[key] = value;
29+
}
2330
};
31+
32+
addIfNotNull('utm_source', utmSource);
33+
addIfNotNull('utm_medium', utmMedium);
34+
addIfNotNull('utm_campaign', utmCampaign);
35+
addIfNotNull('utm_term', utmTerm);
36+
addIfNotNull('utm_content', utmContent);
37+
38+
return utmData;
2439
};
2540

2641
module.exports = getUtmData;

test/browser/amplitudejs.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
}
8181
</script>
8282
<script>
83-
amplitude.init('a2dbce0e18dfe5f8e74493843ff5c053', null, {includeReferrer: true}, function() {
83+
amplitude.init('a2dbce0e18dfe5f8e74493843ff5c053', null, {includeReferrer: true, includeUtm: true}, function() {
8484
alert(amplitude.options.deviceId);
8585
});
8686
amplitude.setVersionName('Web');

0 commit comments

Comments
 (0)