!function(e, t, n, r) { e.eedl || (e.mpDl = e.mpDl || [], e.eedl = e.eedl || function() { e.mpDl.push(Array.from(arguments)) } ) }(window, document), function(e) { function t(e, t, n) { e[t] || (e[t] = n) } e._mp = e._mp || {}, t(e._mp, "triggerEvent", (function(t, n, r) { e._mp.safeExecute("triggerEvent", (function(e, t, n) { if (t = t || {}, n = n || window, e) { var r = new CustomEvent(e,{ detail: t }); n.dispatchEvent(r) } } ))(t, n, r) } )), t(e._mp, "onDocumentReady", (function(t) { /in/.test(document.readyState) ? setTimeout(e._mp.onDocumentReady, 9, t) : t() } )), t(e._mp, "waitUntil", (function(e, t, n, r) { var o = n , a = setInterval((function() { try { var i = e.call(this); void 0 === i || !1 === i ? o < t ? o += n : clearInterval(a) : (clearInterval(a), r()) } catch (e) {} } ), n) } )), t(e._mp, "addScript", (function(t, n, r) { e._mp.safeExecute("triggerEvent", (function(e, t, n) { var r = document.createElement("script"); r.id = e, r.async = n, r.src = t; var o = document.getElementsByTagName("script")[0] || document.getElementsByTagName("head")[0]; o ? o.parentNode.insertBefore(r, o) : console && console.error && console.error("Could not append script with id: ", e, " because no appendTo element was found") } ))(t, n, r) } )), t(e._mp, "safeExecute", (function(t, n) { return function() { try { return n.apply(this, arguments) } catch (n) { e._mp.mpReportErr(t, n.message, n && n.stack ? n.stack.toString() : "") } } } )), t(e._mp, "mpReportErr", (function(t, n, r, o) { var a = { errKey: t, errMessage: n, errStack: r, errLang: o || "js" }; e._mp.triggerEvent("mp_log_err", { msg: n || "EEDL Err", payload: a }), e._mp.triggerEvent("mp_rpt_err", { err: a }) } )), t(e._mp, "mpReportMsg", (function() { e._mp.triggerEvent("mp_log_msg", { payload: arguments }) } )), t(e._mp, "setSessionVar", (function(t, n) { return e._mp.safeExecute("setSessionVar", (function(e, t) { return window.sessionStorage.setItem(e, t) } ))(t, n) } )), t(e._mp, "getSessionVar", (function(t) { return e._mp.safeExecute("getSessionVar", (function(e) { return window.sessionStorage.getItem(e) || null } ))(t) } )), t(e._mp, "getCookie", (function(e) { var t = document.cookie.match(new RegExp("(^| )" + e + "=([^;]+)")); return t ? t[2] : null } )) }(window); (function() { try { var mpProjectId = 'MPcl02kskp1eha030nh7hnn'; var idlFile = "https://mp.ingestlabs.com/idl/mp/idl.js"; var scriptFile = 'https://mp.ingestlabs.com/c-sdk/MPcl02kskp1eha030nh7hnn.js'; _mp.addScript('mp-idl-sdk', idlFile, false); var hasBeenAdded = document.getElementById('mp-sdk'); if (!hasBeenAdded) { _mp.addScript('mp-sdk', scriptFile, true); } } catch (err) { if (console && console.error) { console.error(err); } } } )();

Server-side tagging for IT and Data science teams

Better tag governance, privacy compliance, data security and peace of mind.

More control over first-party data​

Re-visit website and app tracking with a ‘privacy-first’ approach enabled by server-side tagging. You know what data is being shared with whom. Protect your user's PII data by encrypting before sending to Ad and analytics partners

Incremental client-server tag transfers​

Move any tag from Client-side firing to server-side with a flip of a switch. You can migrate them in incremental steps or all at once depending on which of these matter most to your marketing campaign.

Evolved analytics stack​​

With out-of-the-box integration, you can add your existing analytics tools and dashboard for advanced tag analytics. This is not just for website analytics. This can also be extended to mobile apps with media pixels.

Live debugging & anomaly detection

Our machine learning capability alerts you proactively regarding any anomalies observed. This helps you to intervene and stem any data loss.

Curious how IT teams are responding to marketing ask?

Connect with our experts to learn more about how we can assist you to address marketing needs in a flash.