DEV Community

Cover image for Introducing the Offen Consent Tool
Hendrik
Hendrik

Posted on

Introducing the Offen Consent Tool

We are building Offen, a fair web analytics software that treats operators and users as equal parties. Operators can gain insights into how users interact with their services, while ensuring that they retain full control over their data.

Along the way, we created the Offen Consent Tool. A lightweight solution for managing user consent on websites. Read the full version of this article on the Offen blog.

The Tool is using 1st Party Cookies to store user's consent decisions. To enable this mechanism, you need to deploy the respective server to a sibling domain, i.e. if you plan to use the tool on www.example.com, it should be served on a domain like consent.example.com. The tool can serve any number of domains at once, so it's possible to use the same deployment for multiple domains at once.

Next deploy the application to a domain like consent.example.com. On the host site www.example.com embed the client script:

<script src="https://consent.example.com/client.js">
Enter fullscreen mode Exit fullscreen mode

which exposed window.ConsentClient. In your client side code, construct a new client instance pointing at your deployment and request user consent for the desired scope(s):

const client = new window.ConsentClient({ url: 'https://consent.example.com' })
client
  .acquire('analytics', 'marketing')
  .then((decisions) => {
    if (decisions.analytics) {
    // load analytics data
    }
    if (decisions.marketing) {
    // trigger marketing tools
    }
  })
Enter fullscreen mode Exit fullscreen mode

The Offen Consent Tool further allows you to create the binary yourself and provides a development setup. It can also be used as a library and be integrated into any web server written in Golang. Learn more

Read the Docs for further assistance with installation and use. Open Docs

If you have any feedback, comments or bug reports about this or other project, we would love to hear from you. Open an issue on GitHub.

_

Discussion (0)