Module for Cookie management and async loading of (external) scripts / assets

PrivacyWire

Cookie & Consent Manager for ProcessWire

This module adds the possibility to define cookie / consent groups and load corresponding elements only after the site visitor has given consent.
The following cookie groups are available (the frontend visible label is editable and translatable, this is just the technical name)

  • Necessary
  • Functional
  • Statistics
  • Marketing
  • External Media
  • (All Cookies)
    Necessary elements are always active. You can let the user decide, which individual cookie group(s) should be allowed, and/or add an „Allow all“ button.

You can insert basic styles via css or completely style it yourself. The PrivacyWire Core Javascript file is available both as ES6 as well as transpiled with Babel for IE11 support. Both versions have a very small footprint:

FileSizeGzipped
PrivacyWire.js< 9 kb< 3 kb
PrivacyWire_legacy.js< 13 kb< 4 kb

To load scripts, frames, images or other elements only after the site visitor has given consent to that specific cookie group, use the following attributes:

<script type="text/plain" data-type="text/javascript" data-category="functional" class="require-consent">console.log("This script only runs after giving consent to functional cookies");</script>

You can even render and alternate Opt-In text instead of the element:

<iframe data-src="https://processwire.com/" data-category="marketing" data-ask-consent="1" class="require-consent" frameborder="0" height="400" width="400"></iframe>

Available attributes:

AttributeInfoDescriptionType
class require-consentoptional (required if config option enabled)If the config option "Detect consent windows by class require-consent instead of data-attribute" is enabledstring
data-categoryrequireddefines the assigned cookie group for this elementstring
data-typeoptional (required for scripts)replaces the type attribute after giving consentstring
data-srcoptional (required for external scripts, images or iframes)replaces the src attribute after giving consentstring
data-srsetoptionalreplaces the srcset attribute for images after giving consentstring
data-ask-consentoptionalReplace element with Opt-In-Elementbool 0/1

For script tags it is required to add type="text/plain", otherwise the script executes directly.


With PrivacyWire itself comes a Textformatter with the shortcode [[privacywire-choose-cookies]] to add a button to show the cookie group selection window.
To automatically include the Opt-In-Element for embedded videos via TextformatterVideoEmbed you can choose the cookie group in the Textformatter settings.

Multiple language support / i18n


The module uses the ProcessWire-integrated translation system.

Hookable methods


Most of the module methods are hookable! Have a look into PrivacyWire.module to find out more.

Install and use modules at your own risk. Always have a site and database backup before installing new modules.

Twitter updates

  • Stumbling upon a really nice ProcessWire-powered website, plus core updates including API improvements for ProcessWire forms— More
    9 September 2022
  • Useful new dot-and-bracket syntax options added for page.get() method— More
    2 September 2022
  • This week, in addition to the regular core updates, we have new versions of ProcessWire ProFields Table and ProFields Combo that add support for their own file and image types— More
    19 August 2022

Latest news

  • ProcessWire Weekly #437
    In the 437th issue of ProcessWire Weekly we're going to check out the latest core updates, forum highlights and online resources, and more. Read on!
    Weekly.pw / 24 September 2022
  • Multi-language field translation export/import
    In this post we cover the details of a new module that enables export and import capabilities for multi-language fields in ProcessWire.
    Blog / 5 August 2022
  • Subscribe to weekly ProcessWire news

“Yesterday I sent the client a short documentation for their ProcessWire-powered website. Today all features already used with no questions. #cmsdoneright—Marc Hinse, Web designer/developer