Skip to content

Commit 67f5612

Browse files
Merge pull request #302 from spring-media/TRAC-1920_direct
addded page number to catch direct
2 parents c8dd0e9 + 20ba129 commit 67f5612

File tree

2 files changed

+315
-137
lines changed

2 files changed

+315
-137
lines changed

extensions/doPlugins/doPlugins_global.js

Lines changed: 91 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,10 @@ s._utils = {
149149
.getEntriesByType('navigation')
150150
.map((nav) => nav.type).toString();
151151

152-
}
152+
},
153+
isPageStatus: function(expectedStatus) {
154+
return this.getPageReloadStatus() === expectedStatus;
155+
},
153156
};
154157

155158
/**
@@ -316,12 +319,20 @@ s._articleViewTypeObj = {
316319

317320
isDirect: function (referrer) {
318321
const noReferrer = this.isWithoutReferrer(referrer);
319-
const sessionStart = s._utils.isSessionStart();
322+
const newVisit = this.isNewVisit();
320323

321-
return (noReferrer && sessionStart);
324+
return (noReferrer && newVisit);
322325

323326
},
324327

328+
isNewVisit: function () {
329+
const sessionStart = s._utils.isSessionStart();
330+
const pageOneInSession = s._utils.isPageOneInSession();
331+
332+
return (sessionStart || pageOneInSession);
333+
334+
},
335+
325336
isValidURL: function (urlString) {
326337
try {
327338
new URL(urlString);
@@ -339,11 +350,14 @@ s._articleViewTypeObj = {
339350
}
340351
},
341352

342-
isNavigated: function(){
343-
const reloadStatus = s._utils.getPageReloadStatus();
344-
return window.performance && (window.performance.navigation && window.performance.navigation.type === 0) || reloadStatus === 'navigate';
353+
isNavigated: function () {
354+
return s._utils.isPageStatus('navigate');
345355
},
346-
356+
357+
isReloaded: function () {
358+
return s._utils.isPageStatus('reload');
359+
},
360+
347361
isSelfRedirect: function() {
348362
return (s._ppvPreviousPage || '').includes((s.pageName || 'NEVER').split(':').pop());
349363
},
@@ -357,35 +371,50 @@ s._articleViewTypeObj = {
357371
},
358372

359373
getInternalType: function (referrer) {
360-
let pageViewEvent;
361-
let channel;
362-
const pageNumberOne = s._utils.isPageOneInSession();
363-
// Check if page view was caused by a viewport switch
364-
if (this.isSamePageRedirect(referrer)) {
365-
pageViewEvent = '';
366-
return {pageViewEvent};
374+
const isNewVisit = this.isNewVisit();
375+
let channel = '';
376+
let pageViewEvent = '';
377+
378+
// internal referrer and redirected www.bild.de to m.bild.de (BILD only use mDot)
379+
if (this.isSamePageRedirect(referrer) && isNewVisit) {
380+
return {
381+
pageViewEvent: 'event207',
382+
channel: 'Direct'
383+
};
367384
}
368385

369-
if (this.isFromHome(referrer) && this.isNavigated() && !this.isSelfRedirect() && !this.isFromOnsiteSearch() && !this.isFromLesenSieAuch()) {
370-
pageViewEvent = 'event22,event200'; //Home
371-
channel = pageNumberOne ? 'Direct' : channel || '';
386+
// fromHome when user click Homepage Teaser
387+
const isFromHome = this.isFromHome(referrer);
388+
const isCleanNavigation = this.isNavigated() && !this.isSelfRedirect() && !this.isFromOnsiteSearch() && !this.isFromLesenSieAuch();
389+
390+
if (isFromHome && isCleanNavigation) {
391+
pageViewEvent = 'event22,event200'; // Home
372392
} else {
373-
pageViewEvent = 'event23,event201'; //Other Internal
374-
channel = pageNumberOne ? 'Direct' : channel || '';
393+
pageViewEvent = 'event23,event201'; // interne Quelle
375394
}
376-
return {pageViewEvent, channel};
395+
396+
// 3. Channel setzen, falls es die erste Seite der Session ist
397+
if (isNewVisit) {
398+
channel = 'Direct';
399+
}
400+
401+
return { pageViewEvent, channel };
377402
},
378403

404+
379405
getExternalType: function (referrer) {
380406
const referringDomain = s._utils.getDomainFromURLString(referrer);
381-
const isSessionStart = s._utils.isSessionStart();
407+
const isNewVisit = this.isNewVisit();
382408
const isHomepage = s._utils.isHomepage();
383-
const isArticle = s._utils.isArticlePage();
409+
const pageIsReloaded = this.isReloaded();
384410
let pageViewEvent;
385411
let channel;
386412
let mkt_channel_detail;
387413

388-
if (this.isFromSearch(referringDomain) && isHomepage) {
414+
if (referringDomain && pageIsReloaded && isNewVisit) {
415+
pageViewEvent = 'event207'; // Direct
416+
channel = 'Direct';
417+
} else if (this.isFromSearch(referringDomain) && isHomepage) {
389418
pageViewEvent = 'event24,event209';
390419
channel = 'Organic Search Brand';
391420
mkt_channel_detail = referringDomain;
@@ -409,35 +438,55 @@ s._articleViewTypeObj = {
409438
pageViewEvent = 'event205';
410439
channel = 'AS News';
411440
mkt_channel_detail = referringDomain;
412-
} else if ((this.isFromPremiumService(referrer)||this.isFromPaypal(referrer)) && isSessionStart) {
441+
} else if ((this.isFromPremiumService(referrer)||this.isFromPaypal(referrer)) && isNewVisit) {
413442
pageViewEvent = 'event208';
414443
channel = 'Register & Payment';
415444
mkt_channel_detail = referringDomain;
416445
} else if (this.isFromPremiumService(referrer)||this.isFromPaypal(referrer)) {
417446
pageViewEvent = 'event23,event201'; // Login via secure.mypass during session
418-
} else if (this.isWithoutReferrer() && this.isNavigated() && isArticle && isSessionStart) {
419-
pageViewEvent = 'event26,event202'; // Dark Social
420-
channel = 'Dark Social';
421-
} else if (this.isWithoutReferrer() && this.isNavigated() && isArticle) {
422-
pageViewEvent = 'event26,event202'; // Dark Social Marketing Channel only with session start
423-
}else if (this.isDirect(referrer)) {
424-
pageViewEvent = 'event207'; // no Referrer at Session Start
425-
channel = 'Direct';
426-
} else {
447+
} else {
427448
pageViewEvent = 'event27,event203'; // Other External (Referrer)
428449
channel = 'Other External';
429450
mkt_channel_detail = referringDomain;
430451
}
431452
return {pageViewEvent, channel, mkt_channel_detail};
432453
},
433454

455+
noReferrerType: function () {
456+
const isArticle = s._utils.isArticlePage();
457+
const isNewVisit = this.isNewVisit();
458+
const isNavigated = this.isNavigated();
459+
const isReloaded = this.isReloaded();
460+
let pageViewEvent;
461+
let channel;
462+
let mkt_channel_detail;
463+
464+
if (isNewVisit && isNavigated && isArticle) {
465+
pageViewEvent = 'event26,event202'; // Dark Social
466+
channel = 'Dark Social';
467+
} else if (isNewVisit && (isNavigated || isReloaded)) {
468+
pageViewEvent = 'event207'; // Direct
469+
channel = 'Direct';
470+
} else if (isNavigated || isReloaded) {
471+
pageViewEvent = 'event23,event201';
472+
}
473+
return {pageViewEvent, channel, mkt_channel_detail};
474+
},
475+
434476
getViewTypeByReferrer: function () {
435477
const referrer = s._utils.getReferrer();
436478
let pageViewEvent;
437479
let channel;
438480
let mkt_channel_detail;
439481

440-
if (this.isFromInternal(referrer)) {
482+
if (!referrer) {
483+
// no Referrer is set
484+
const noReferrerType = this.noReferrerType(referrer);
485+
pageViewEvent = noReferrerType.pageViewEvent;
486+
channel = noReferrerType.channel;
487+
mkt_channel_detail = '';
488+
489+
} else if (this.isFromInternal(referrer)) {
441490
// Referrer is of same domain
442491
const internalType = this.getInternalType(referrer);
443492
pageViewEvent = internalType.pageViewEvent;
@@ -466,9 +515,13 @@ s._articleViewTypeObj = {
466515
const isFromReco = this.isFromReco();
467516
const pageNumberOne = s._utils.isPageOneInSession();
468517
const isFromRecoFf = this.isFromRecoFf();
518+
const pageIsReloaded = this.isReloaded();
519+
const newVisit = this.isNewVisit();
469520

470-
471-
if (trackingValue.startsWith('sea.')) {
521+
if (trackingValue && pageIsReloaded && newVisit) {
522+
pageViewEvent = 'event207'; // Direct
523+
channel = 'Direct';
524+
} else if (trackingValue.startsWith('sea.')) {
472525
pageViewEvent = 'event24,event206,event242'; // Search
473526
channel = 'Paid Marketing';
474527
channelCategory = 'Sea';
@@ -568,7 +621,8 @@ s._articleViewTypeObj = {
568621

569622
setExtraViewTypes: function(s) {
570623
const trackingChannel= this.isOtherTrackingValue();
571-
if (trackingChannel) {
624+
const pageIsReloaded = this.isReloaded();
625+
if (trackingChannel && !pageIsReloaded) {
572626
s._setTrackingValueEvents(s);
573627
} else {
574628
s._setExternalReferringDomainEvents(s);

0 commit comments

Comments
 (0)