-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmatsmart_email_clicked_test_page.html
97 lines (79 loc) · 4.82 KB
/
matsmart_email_clicked_test_page.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<title>Email Clicked and External Ids from Emarsys</title>
<script>
/*
*
* Important note:
* This code is intended as a replacement for the Segment Querystring API:
* https://segment.com/docs/connections/sources/catalog/libraries/website/javascript/querystring/
* The Segment Querystring API does not invoke the Middleware Function, so the resulting event will not contain any Emarsys identifiers.
*
* Description:
* Code serves 2 purposes:
* 1. Middleware Function to append specified querystring values to all outgoing events.
* 2. Triggers a track() and identify() events based on a querystring named 'event' being present in the URL.
*
* Setup instructions:
* 1. This code replaces the entire Segment Javascript snippet on a website.
* 2. Insert the correct writeKey in the analytics.load() function
* 3. Insert the correct names for the 3 Emarsys identifier values in customExternalIds.
* .qstringName = name of the querystring value to read from the URL.
* .externalIdType = the name of the type of externalId that will be sent to Segment.
*
* Middleware Function Description:
* Every Segment event that gets triggered on the page will be routed through the 'addEmarsysIdsMiddleware' Middleware Function.
* The Function will insert externalIds for emarsys identifiers if those certain querystring values are present in the URL.
*
* Triggering Segment events from the Querystring:
* Adding a Querystring called 'event=' to the URL will trigger an track() event of that name.
* The Middleware Function will also be invoked, so any emarsys identifiers will also be appended to the event if they are present in the Querystring.
* An identify event will also be triggered, and will also have the emarsys identifiers appended.
*
*
*/
var seg_matsmart = {
addEmarsysIdsMiddleware: function({ payload, next, integrations }) {
const urlParams = new URLSearchParams(window.location.search);
let externalIds = (payload.obj.context && payload.obj.context.hasOwnProperty('externalIds')) ? payload.obj.context.externalIds : [];
let customExternalIds = [
{qstringName:'emarsys_cid', externalIdType:'emarsys_cid'},
{qstringName:'emarsys_cuid', externalIdType:'emarsys_cuid'},
{qstringName:'emarsys_puid', externalIdType:'emarsys_puid'}
]
customExternalIds.forEach(customExternalId => {
let value = urlParams.get(customExternalId.qstringName);
if(value){
if(externalIds.map(function(item) { return item.type; }).indexOf(customExternalId.externalIdType) == -1){
externalIds.push({
"collection": "users",
"encoding": "none",
"id": value,
"type": customExternalId.externalIdType
})
}
}
});
payload.obj.context.externalIds = externalIds;
next(payload);
},
fireEventFromQuerystring: function(){
const urlParams = new URLSearchParams(window.location.search);
let eventName = urlParams.get('event');
if(eventName && eventName.length > 0){
analytics.identify();
analytics.track(eventName);
}
}
}
!function(){var analytics=window.analytics=window.analytics||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e<analytics.methods.length;e++){var key=analytics.methods[e];analytics[key]=analytics.factory(key)}analytics.load=function(key,e){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.src="https://cdn.segment.com/analytics.js/v1/" + key + "/analytics.min.js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(t,n);analytics._loadOptions=e};analytics.SNIPPET_VERSION="4.13.1";
analytics.addSourceMiddleware(seg_matsmart.addEmarsysIdsMiddleware);
analytics.load('f0mkFrd38lR8LW97t73odW9VkiQP532m');
seg_matsmart.fireEventFromQuerystring();
}}();
</script>
</head>
<body>
<p>This is an empty page. Page will fire an Email Clicked track event if correct querystring values provided in URL</p>
</body>
</html>