Before implementing the cookie feature we need to understand:
This might be useful and a good soucre of inspiration: https://appear.in/information/tos/cookie-policy/ and
https://appearin.helpscoutdocs.com/article/192-cookie-list
Do we use cookies in checkout or any other OFN part?
@mkllnk @oeoeaio @lin-d-hop do you have any idea about which cookies we use? Can someone who knows about that can start a list? (maybe in the wiki, could be a good place to list that I guess?)
I see a __stripe_mid for instance (and we don't use Stripe in Katuma instance...)
I'm doing a real world test to see which cookies are actually set. I start Firefox with a new empty profile:
PROFILEDIR=`mktemp -p /tmp -d tmp-fx-profile.XXXXXX.d`
firefox -profile $PROFILEDIR -no-remote -new-instance
The default already visits a Mozilla page and Google which set cookies. So I delete them before the test.

__utmx cookies are set by Google Analytics.


I can't think of any other action that could set more cookies. So I guess that's it. @oeoeaio Any other idea?
The session cookie is essential for shopping and logging in. It would be cool to only start a session when necessary, but I'm not sure how difficult that is. I'm also not sure if the Stripe and Google Analytics cookies are not set when these services are not configured. We should check that and ensure that they are not set. We can't deactivate the maps feature at the moment.
We have some links to other pages. For example the footer can link to Twitter, a Newsletter or whatever. These pages set their own cookies and that's beyond our scope. But since a user doesn't know which links go to an external site, we should mention that in a cookie policy and think of marking external links.
@myriamboure Should I go ahead and investigate the deactivation of Stripe and Google Analytics?
Awesome @mkllnk !
Ok so if I sum up, we have:
Agree that external pages cookies are not in scope, we can precise it in our data policy.
Is that all clear @mkllnk ?
I can't think of anything that would add any additional cookies.
The stripe elements script is loaded in the darkswarm layout. This is based on their recommendation to include their script on all pages on the site as it helps them to detect fraudulent transactions. I guess they build a picture of which of our pages usually interact with their API and then flag anything unusual. So it is my understanding that setting the Stripe cookie has a broader function than simply the provision of a payment method to a user. Removing it could affect the security of the service itself. See: https://stripe.com/docs/radar#requirements for a piece of example text that we can add to our privacy policy.
Is the aim here to minimise the quantity of cookies that are set, or simply to document the cookies that we currently use to enable our site to function? What are our obligations in terms of providing a user interface that allows the destruction of certain cookies?
@oeoeaio the aim is not to minimise the quantity of cookies but to:
Interestingly appear.in for instance has put stripe as third-party persistent cookie that cannot be deactivated so maybe we can just do the same: https://appearin.helpscoutdocs.com/article/192-cookie-list. You will see in this list that lots of those cookies can be deactivated by "opting out" (their ux is not good though).
Here https://www.cnil.fr/professionnel if you click on "gestion des cookies" (up right) you will see as well... with a better ux.
I compiled a task list for all my findings. Doing all these tasks would be ideal, but it's also a lot of work. So I would suggest to prioritise and then start at the top of the list until we feel that the result is satisfying and we don't want to spend more time on it.
A session cookie is required for all shopping functionality, but we don't really need it just to view the homepage. A possible task:
The cookie remember_spree_user_token is valid for 12 days and automatically deleted after that. I didn't see any action deleting it before the end of the 12 days.
Once that task is done, logging out is an action we can mention in the cookie policy to delete the cookie.
This cookie is set by openstreetmaps.org and used to prevent abuse of their service. We don't have any control over it. I found a nice cookie policy explaining its use: https://www.streetcheck.co.uk/about/cookies. And I see three possible ways to not set that cookie:
The first option is more like a workaround, but requires only code changes. The second option would solve the problem by not serving cookies. It could just be a configuration file for nginx and a URL change in our maps code. If this works as I think it does, it would be my preferred option. The third option goes a step further and increases our infrastructure complexity by adding another server, but it would mean that the instances don't need to worry about it, only the global admin team.
I visited our staging server https://staging1.openfood.com.au/ and didn't see any Google Analytics (GA) cookies. So I think if the instance doesn't use GA, the cookies are not set. :+1:
I saw a few pages referring to https://tools.google.com/dlpage/gaoptout to opt out of Google Analytics (GA), but it requires the user to install a plugin. Most users who don't want to be tracked by Google, probably don't trust Google enough to run their code on their own computer. Better to recommend something like Privacy Badger.
But we could also have the user decide:
The Stripe documentation says:
If you don鈥檛 collect enough information from your customers, it can reduce the effectiveness of fraud detection. Conversely, if you collect too much information, it can negatively impact the checkout experience and result in a lower conversion rate.
So they are aware of negative impacts of too much tracking and see it up to the shop to find a balance.
Including Stripe.js on every page is a recommended best practice, but not a requirement. Possible tasks:
For optional cookies, we can either offer opt-in or opt-out. Offering opt-out has the problem that we need to remember that a user opted out. For guest users, we would need to save this information in a cookie (how ironic). So the only way to honour cookie-adverse customers is to use opt-in. The downside of opt-in are messages popping up asking for permission. For example:
We would like to gather statistics about the usage of our site using Google Analytics. Would you like to support us and participate? [Yes] / [No and remember to not ask me again]
But we have only the choice to always show that message until people agree or store their choice to disagree in another cookie. We could reduce the annoyance by showing that message only on certain pages. For example showing the analytics question on the home page and asking for Stripe when people add to the cart.
@mkllnk thank you for that detail answer!
Here is a first draft of what could be our cookie policy based on all the foundings here, and some decisions I propose to the community be legally compliant and do as less as possible as a first step: https://docs.google.com/document/d/1jujU9CV4gJEo70rJ5x2W8zDYjp0Opz3TGTAMyZMLl9w/edit?usp=sharing
(needs some rewritting, really first draft)
Answers to your suggestions @mkllnk :
So to sum up I would propose the following stories in the epic:
@NickWeir63 @lin-d-hop as you have connected the wordpress as if it was the same website, do you use analytics for your wordpress as well? If yes that adds complexity... If you use analytics for wordpress as well, we need to see how users can opt-in/out for both, but as both sites are not integrated technicaly (even if they look like) I don't really see how to do that... I propose to keep that out of scope for now and only focus on the platform. You can think on your side then how you want to adapt the wordpress to be legallly compliant.
Good work @myriamboure. I left some comments on that cookie policy document.
I'm wondering if we won't miss one cookie here @mkllnk as when a shopfront is embedded in an external website, if I have a tracker blocker on that website I can't see the content of the shopfront (appears as everlasting loading) when I "trust site" and allow trackers then the shopfront load normally. Is it us putting some cookie on users computer when they use a website which has embedded a shopfront? Or something else?
Ok I'll review the UX and open all the stories.
We also need a story to enabe instances to enable/disable cookie banner. (note to self)
I'm wondering if we won't miss one cookie here @mkllnk as when a shopfront is embedded in an external website, if I have a tracker blocker on that website I can't see the content of the shopfront
Good point, Myriam. I just checked the code and we are not setting a cookie for embedded shop fronts. It is a different security measure of your browser to block all frames of untrusted sites.
Ok so I'm closing this for now as we can consider this spike as done, let's switch to the epic now :-)
Most helpful comment
I'm doing a real world test to see which cookies are actually set. I start Firefox with a new empty profile:
The default already visits a Mozilla page and Google which set cookies. So I delete them before the test.
__utmxcookies are set by Google Analytics.I can't think of any other action that could set more cookies. So I guess that's it. @oeoeaio Any other idea?
The session cookie is essential for shopping and logging in. It would be cool to only start a session when necessary, but I'm not sure how difficult that is. I'm also not sure if the Stripe and Google Analytics cookies are not set when these services are not configured. We should check that and ensure that they are not set. We can't deactivate the maps feature at the moment.
We have some links to other pages. For example the footer can link to Twitter, a Newsletter or whatever. These pages set their own cookies and that's beyond our scope. But since a user doesn't know which links go to an external site, we should mention that in a cookie policy and think of marking external links.
@myriamboure Should I go ahead and investigate the deactivation of Stripe and Google Analytics?