Server Side cookies
Safari has recently introduced Intelligent Tracking Prevention (ITP) 2.1, 2.2, and 2.3 which reduces trackers’ ability to establish user identities across sites.
- In ITP version 2.1, a cookie created on a visitor’s browser expires after 7 days.
- With ITP version 2.2, if a user comes from a decorated URL, i.e., a domain classified with cross-domain tracking capabilities with has a query string or a fragment, the cookies on the website expire within 24 hours.
- With ITP version 2.3, if a user comes from a domain classified with cross-domain tracking capabilities and has a query string or a fragment, the first-party non-cookie website data expires after 7 days of the user not interacting with the website.
How ITP Impacts Triggerbee
Although Triggerbee doesn't support cross tracking capabilities nor uses 3rd party cookies, the severe and broad limitations of cookies in ITP will affect Triggerbee negatively, including - but not limited to:
Reduced identification rates
Users identified in Triggerbee during one visit, that comes back after ITP has removed the cookie, will be unidentified again. Unidentified users will not be served the personalized campaigns that identified visitors get.
Less accurate A/B test
The same visitor visiting the website after 7 days may be served a different variation of the same A/B test than what was previously shown. This can create inconsistent experiences and impact campaign accuracy. This is because the information about which variation was shown to the user is stored in cookies.
Incorrect Returning visitor metrics
In Triggerbee you have audiences for new and returning visitors. These metrics are also reported under the "Analytics" section. With ITP Safari users will more often count as "new visitors", even though they recently visited the website.
Solution
To avoid ITP-related side effects, you must set the Triggerbee cookie on your server. Below is an example of how to achieve this in C#.
C# snippet for .NET websites
using System; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Http; namespace YourApplication.Controllers { public class CookiesController: Controller { [HttpGet("update-cookies")] public IActionResult UpdateCookies() { string[] cookies = { "_mtruid", "_smtruid"}; foreach(string cookieName in Request.Cookies.AllKeys) { if (Array.Exists(cookies, x => x == cookieName)) { HttpCookie cookie = Request.Cookies[cookieName]; // Adds a year to the expiry date of the cookie cookie.Expires = DateTime.Now.AddYears(1); // The domain should be your top domain with a ‘.’ // before it, e.g. for mywebsite.com the domain // entered here should be .mywebsite.com cookie.Domain = ".mywebsite.com"; Response.Cookies.Add(cookie); } } Response.Headers.Add("Access-Control-Allow-Origin", "*"); return Ok(); } } }