Introduction
In light of the General Data Protection Regulation (GDPR) and ePrivacy requirements, I believe it is essential for Mautic to enhance its compliance by addressing certain issues related to cookie management. Therefore, I created this Request for Comments (RFC). I’m hoping we could lay out some procedures to enhance Mautics GDPR and ePrivacy compliance while maintaining its analytic features for the Mautic devs. I outlined some key problems and potential solutions.
Discussed Topics
- Problem 1: Cookies Are Being Set for Users with DNC Flag
- Problem 2: Forwarded Emails Result in Cookies Set for Non-opted-in Persons
- Problem 3: Focus Items Set Cookies Without Consent
- Problem 4: mtracking.gif Set Cookies Without Consent
- Problem 5: Mautic Form Submussions Set Cookies Without Asking for Consent
- Problem 6: Removal of Unused Cookies
- General Solution: Adopting a Similar Approach as Matomo
Problem 1: Cookies Are Being Set for Users with DNC Flag
Description
When users opt out of receiving emails, they are assigned a DNC (Do Not Contact) flag. As per GDPR/ePrivacy guidelines, opting out implies that users have revoked consent for tracking and cookies. However, Mautic currently sets cookies for every link click, even for users with a DNC flag.
Proposed Solution
Mautic should check if a user has a DNC flag before setting cookies via server-side code. Moreover, the unsubscribe link resolution and page should never set cookies.
Steps to verify
- Create a new contact
- Send a test email with a link to a blank page, i.e. not including any of Mautic’s JS, and a unsubscribe link
- Open the regular link in an incognito browser tab.
- Mautic sets five first party cookies:
mautic_device_id
mtc_id
mautic_referer_id
mtc_sid
- This is fine if the user gave consent to setting cookies.
- Mautic sets five first party cookies:
- Clear/delete the cookies
- Now, open the unsubscribe link
- You’ll see the standard
We are sorry to see you go! e@mail.com will no longer receive emails from us. If this was by mistake, click here to re-subscribe.
- Mautic sets three first party cookies:
mautic_device_id
mtc_id
mtc_sid
- This is bad: These cookies are neither technically necessary nor do we have the user’s consent to setting these cookies.
- You’ll see the standard
- Clear/delete the cookies
- Now, open the regular page link once again in an incognito browser tab.
- Mautic (again) sets five first party cookies:
mautic_device_id
mtc_id
mautic_referer_id
mtc_sid
- This is bad: These cookies are neither technically necessary nor do we have the user’s consent to setting these cookies. Even worse: The user has previously explicitly withdrawn the consent for tracking and setting cookies.
- Mautic (again) sets five first party cookies:
Discussion
Should we mix DNC
and Do not Track
? My point of view is, that this isn’t a matter of preference. If a user opted out of communication this has to be seen as withdrawing consent to tracking, too.
From a legal standpoint you’d have to acknowledge that tracking is more invasive as communicating. So, if a user says no to emails they are saying no to tracking even more.
We could combine differing point of views here with a setting switch.
Problem 2: Forwarded Emails Result in Cookies Set for Non-opted-in Persons
Description
When an opted-in contact forwards an email to someone who is not an identified contact and has not opted in for tracking or receiving cookies, Mautic still sets cookies if the recipient clicks on a link in the forwarded email. This is not GDPR/ePrivacy compliant.
Proposed Solution
See General Solution
.
- Don’t set cookies server side, unless we know that the user has opted it
- We would/could still track the link click server-side
- This is also fine from a GDPR/ePrivacy point of view, as the link click is attributed to the already identified user (who consented). Therefore, the unidentified users data isn’t processed without consent
Problem 3: Focus Items Set Cookies Without Consent
Description
Mautic’s focus items currently set cookies without asking for user consent. When a focus item is added, it loads //mautic.yoursite.com/focus/1/viewpixel.gif
, which sets three cookies without checking for prior consent:
mautic_device_id
mtc_id
mtc_sid
The main problem is: You could use the focus item without any tracking or cookies, but you don’t have any chance doing this. Hence, if you have a user who refuses to consent to your Mautic cookies you aren’t allowed to show him focus items.
As Mautic loads the viewpixel.gif
within an IFRAME you can’t block the creation via JS. (At least I don’t know a way of doing this).
Possible Solutions
- Count the view server-side without creating cookies. While this would prevent the creation of a new contact, it would be GDPR/ePrivacy compliant.
- Create a second
viewpixel.gif
calledviewpixel-nocookie.gif
:-
viewpixel.gif
works as it currently does. -
viewpixel-nocookie.gif
tracks the focus item view but doesn’t set cookies. - This could achieved using an internal switch, too, instead of using to URLs or
gif
s.
-
- Enhance
viewpixel.gif
and set cookies based on an internal server side switch (seeGeneral Solution
)
The first party cookie mautic_focus_{n}
isn’t part of the problem as it is not used for tracking or the like. I’d argue it is a functional cookie and might not need consent. You can set it based on legitimate interests
. This won’t mess with the How often to engange
setting.
Problem 4: mtracking.gif
Set Cookies Without Consent
Description
If you load http://mautic.yoursite.com/mtracking.gif
, the tracking gif currently sets cookies without asking for user consent prior to that. It sets four cookies without checking for prior consent:
mautic_device_id
mautic_referer_id
mtc_id
mtc_sid
Possible Solutions
- Count the view server-side without creating cookies. While this would prevent the creation of a new contact, it would be GDPR/ePrivacy compliant.
- Create a second
mtracking.gif
calledmtracking-nocookie.gif
:-
mtracking.gif
works as it currently does. -
mtracking-nocookie.gif
tracks the focus item view but doesn’t set cookies.
-
- Enhance
mtracking.gif
and set cookies based on an internal server side switch (seeGeneral Solution
)
You could use a consent management tool for mtracking.gif
, but you’d lose all tracking capabilities. I’d rather have an anonymous count instead of no tracking at all.
Problem 5: Mautic Form Submussions Set Cookies Without Asking for Consent
Description
If a user submits a Mautic form the submission leads to four cookies being set:
mautic_device_id
mtc_id
mtc_sid
This might not be a problem at all. You could simply ask for consent.
Asking for consent isn’t a problem if your form is for, e.g., newsletter subscriptions.
Aksing for consent is a problem if your form is a simple contact form or something similar. Such a form shouldn’t create tracking cookies. Asking for consent to tracking to simply send a form might reduce form submissions also might be seen negatively by users.
Additionally, I guess many Mautic user aren’t aware that these cookies are set. So, all Mautic user who need to comply with GDPR (which are probbably a lot, given the very broad applicability of the GDPR) are at risk of violating it.
This can be mitigated by turning kiosk mode
on, but this is “global” for a form. We lose all tracking capabilities at once by turning it on.
It would be nicer to be able to load a form using something like
<script type="text/javascript" src="//mautic.yoursite.com/form/generate.js?id=1&kiosk=true"></script>
This would enable us to set cookies based on user consent dynamically. Additionally or alternatively (or even better?), we could implement a form element where the user can explicitly consent into tracking/setting the cookies.
Solution
Form should have switch (e.g. setCookieOnSubmission
). If toggled, Mautic set the cookies after a form submission, if not then not. This would solve the need to ask for consent on every form.
Additionally, see General Solution
.
Problem 6: Removal of Unused Cookies
Description
Mautic currently sets some deprecated/obsolete cookies, such as mtc_sid
and mtc_id
. Removing these cookies would enhance GDPR/ePrivacy compliance by simplifying Mautic’s tracking and making it easier to understand.
Proposed Solution
Identify and remove any deprecated or obsolete cookies from Mautic’s cookie management process.
General Solution: Adopting a Similar Approach as Matomo
Mautic could leverage a similar approach to cookies as Matomo. This would involve the following steps:
- Implement a new Mautic configuration setting:
Enable cookieless Mautic
. If set totrue
, the tracking scripts would not create themtc
/mautic_
cookies. - Amend the Mautic tracking script
mtc.js
to allow something like this:
<script>
(function(w,d,t,u,n,a,m){w['MauticTrackingObject']=n;
w[n]=w[n]||function(){(w[n].q=w[n].q||[]).push(arguments)},a=d.createElement(t),
m=d.getElementsByTagName(t)[0];a.async=1;a.src=u;m.parentNode.insertBefore(a,m)
})(window,document,'script','http(s)://yourmautic.com/mtc.js','mt');
mt('send', 'pageview');
// the user consented to cookies
mt('send', 'setCookieConsentGiven'); // this will set a mautic_consent cookie and the regular mtc/mautic cookies
</script>
- Modify the server-side application to check for the
mautic_consent
cookie. If set, the server would set/update the tracking cookies. This could work for:- redirecting users after a click on a link in an email (solve Problem 2).
- loading the focus item’s
viewpixel.gif
(solve Problem 3) - loading the fallback
mtracking.gif
(solve Problem 4)
Request for Comments
I’d like to encourage you to share your thoughts and suggestions on these issues and proposed solutions. Your input could help improving Mautic’s GDPR compliance and ensure a more privacy-conscious user experience.
PS: I guess, gated videos will cause the same issues, but I didn’t test it, as I don’t use these as of now.