Product support

Visit this product's website for support.



October CMS plugin to make websites GDPR compliant.


Cookie Consent Manager

This plugin provides two simple components to make your October installation GDPR compliant.


Cookie presets

It is possible to define your cookie groups and cookies in a yaml file and import them using the gdpr:import console command. This allows you to define cookies once and re-use them between installations.

php artisan gdpr:import --path=plugins/offline/gdpr/assets/presets/example_en.yaml --replace

You can find example definitions in the assets/presets directory of this plugin.

You can optionally use the --replace flag to remove all existing cookie data and replace it with your preset.

If no path is specified, the plugin will load all presets from the configured presets_path and ask you which preset to import.

You can change the path where presets are loaded from by changing the offline.gdpr::config.presets_path config entry. To do this, create the file config/offline/gdpr/config.php and return your custom path:

return [
    'presets_path' => '/path/to/your/presets',



The cookieBanner component displays a cookie banner on the first page view. There the user has the possibility to enable and disable cookies that your website uses (defined via October's backend settings).

These settings are stored and made available in your partials using the gdprCookieAllowed helper. With this helper you can check for the user's consent and optionally include your resources.


You can enable a log via the backend settings so every cookie banner request gets logged. This is useful to get an idea of the number of users that do not accept a cookie request and therefore never end up in your analytics data.

The log only contains the user's session id and their decision.

Twig Helpers

gdprCookieAllowed($code, $minLevel = 0)

Check if a certain cookie is allowed to be included. You can optionally pass a cookie level to check if the user has accepted a specific level of this cookie.

{% if gdprCookieAllowed('google-analytics') %}
    <!-- Include Analytics Code here -->
{% endif %}

{% if gdprCookieAllowed('google-analytics', 3) %}
    <!-- Include advanced Level 3 Analytics Code here -->
{% endif %}

Get the max allowed level for a certain cookie. A return value of -1 means the cookie is not allowed at all. A value of 0 or higher means the cookie is allowed with the returned level value.

{% if gdprAllowedCookieLevel('google-analytics') >= 3 %}
    <!-- Include advanced Level 3 Analytics Code here -->
{% endif %}

Check if the user has made a decision about the cookies yet. This will return true on the second page view if the user did not interact with the cookieBanner (silent opt-in).

Data retention

The data retention functionality enables you to delete old plugin data after a specified amount of days.

You can specify the data retention policy for each plugin via October's backend settings.

Important: To automatically delete old data make sure you have set up the Task Scheduler correctly.

The documentation for this plugin can be found on GitHub.

  • Found the plugin useful on 20 Nov, 2020

    good work just the design can be better

  • Found the plugin useful on 15 Dec, 2019

    how can I add a link?

  • author

    Replied on 16 Dec, 2019

    Thank you for your review! Please use our GitHub page for support questions. Also provide some more information about your problem as your current question could literally mean anything! ;-)

  • Found the plugin not useful on 17 Nov, 2019

    Warning this plugin is broken, when you turn on cron jobs you will see a daily error message saying the following: ReflectionException: Function gdpr:cleanup() does not exist

    Have opened a github issue found here: https://github.com/OFFLINE-GmbH/oc-gdpr-plugin/issues/63

    Can the author please fix it asap.

  • author

    Replied on 17 Nov, 2019

    Please don't leave negative reviews only because a certain feature of the plugin does not seem to work for you. If you fund a bug, use GitHub to report it and at least give us time to respond.

  • Found the plugin useful on 27 Jul, 2018

    Wow that's a nice peace of a plugin to make the site more gdpr compliant. Good job! I guess there are still some issues right? Especially with the multiple purpose entries in klaro Manager! If it has only one entry then it is not a problem i see the germanized word Zweck: but if a Cookie Object has multiple purposes entries you see instead of Zwecke: only : and the entries.

    Some css cosmetics improvements of the close button are needed, especially in smartphone and tablet viewports, but was easy to fix for own needs!

    Documentation could be way more clear especially of the process how to get those squares with groups of cookies into the cookie bar?

    But over all if this thing will one day run fine, just wow! Good work guys and best greethings to neighbours in switzerland. You rock guys!

  • Found the plugin useful on 20 Jun, 2018

    Great plugin, but Opt-in (enable default cookies) does not work properly. Cookies that are enabled by default, are not actually enabled.

    Sorry for my english.

  • author

    Replied on 20 Jun, 2018

    Hello Custom Venum

    Thank you for your review! Since the plugin is still pretty new there is a high chance of bugs with certain installations. Please make sure to always update to the latest release. We are releasing updates as often as possible. Also check out our GitHub's develop branch where we are working hard on the next version with a lot of new ePrivacy and GDPR conform features!


Removed unnecessary jQuery usage (thanks to @verenaroe)

Jun 09, 2024


Optimized support for closure when using the data retention feature (thanks to @damsfx)

Nov 02, 2023


Added isAllowed proxy method to CookieBanner component

Aug 25, 2023


Optimized support with older October CMS installations

Aug 14, 2023


Added gdprHasAnyOptional Twig helper function

Aug 14, 2023


Made getCookieGroups method on CookieManager Component public

May 30, 2023


Made getCookieGroups method on CookieManager Component public

May 30, 2023


Additional information about the cookie selection is now available in the accept cookie response

May 23, 2023


gdpr:import command now updates imported data on re-runs (thanks to @damsfx)

Feb 24, 2023


Optimized PHP 8 compatibility

May 27, 2022


Fixed useragent field type to allow for very long user agent strings

May 10, 2022


Added finnish translations (thanks to @mediaclinic)

Mar 03, 2022


Added CSRF token to cookie manager component

Dec 03, 2021


Fixed yaml syntax in changelog

Sep 24, 2021


Fixed bug introduced in previous release

Jul 19, 2021


Optimized compatibility with Winter CMS (thanks to @damsfx)

Jul 19, 2021


Added portuguese translations (thanks to @tospe)

Mar 30, 2021


Return a proper Redirect::back() after the CookieManager form was submitted. This makes sure the newly set GDPR consent cookie will be available immediately.

Dec 18, 2020


The onAccept component method now returns the rendered GDPR partial

Dec 16, 2020


Added onRenderCookieManager method to the CookieManager component to render the markup dynamically. This is useful to render the manager dynamically inside a popup via a AJAX request.

Dec 16, 2020


Fixed October 469 compatibility issue (The scripts.js partial was renamed to scripts.htm, make sure to update your code if you did override this partial)

Sep 08, 2020


Fixed bug in update message

Sep 07, 2020


Run cookiemanager/script.js in DOMContentLoaded event.

Aug 24, 2020


Optimized PHP 7.2 support

Feb 20, 2020


Added option to ignore specific user agents from cookie request log

Feb 14, 2020


Fixed cookie log migration

Feb 14, 2020


Added cookie banner log: You can now opt-in via the backend settings to keep a log of all cookie requests and the decision the user made

Feb 13, 2020


Added `--path` option to new `gdpr:import` command

Feb 13, 2020


Removed support for Klaro! consent manager. Added ability to import cookies from yaml presets. Check the README for instructions on how to use this feature.

Feb 12, 2020


Added italian translations (thanks to @inalto)

Feb 05, 2020


Fixed compatibilty problems with October Build 460

Dec 19, 2019


Another Bugfix release

Nov 18, 2019


Bugfix release

Nov 18, 2019


Added workaround to a October schedule bug for cleanup command (https://github.com/octobercms/october/issues/4771)

Nov 18, 2019


Added polish translations (thanks to @Magiczne)

Sep 02, 2019


Fixed minor bug in cookie manager JS

Aug 29, 2019


Fixed default cookie manager markup bug

Apr 15, 2019


Fixed style bug for cookieManager component.

Mar 18, 2019


!!! Implemented responsive design for cookieManager component. The markup of the cookieManager component changed slightly. Make sure to check for display errors if you've made manual changes to this component's markup after this update.

Mar 18, 2019


Fixed saving of translated cookie data

Feb 21, 2019


Marked Cookie and CookieGroup fields as fillable

Dec 09, 2018


Fixed installation via composer (thanks to angelcoding)

Oct 22, 2018


Added Slovak translation (thanks to vosco88)

Aug 31, 2018


Updated french translation (thank to damsfx)

Aug 13, 2018


Minor wording changes in the cookieManager component

Jul 27, 2018


Hide Levels selector if a cookie is disabled

Jul 25, 2018


Minor cleanup and bugfixes

Jul 24, 2018


!!! Big update to make this plugin more GDPR and ePrivacy compliant. Users of the 1.x version will have to manually update their Cookie Levels after the update. All your other settings remain compatible. Check out the new Help and Info section to find out more on how to make your Website GDPR and ePrivacy compliant.

Jul 20, 2018


General cleanup and extension of plugin

Jul 20, 2018


Fixed bug with data retention closures (thanks to Alex360hd)

Jul 11, 2018


Added the Info and Help Section

Jun 24, 2018


Finished off the Cookie Backend and did a general tidy up

Jun 21, 2018


!!! Removed cookie groups from banner component since they arent in line with GDPR regulations. Also added new fields to optimize ePrivacy conformity. (*Very big thank you* to ayumihamsaki for giving a lot of feedback via our GitHub page!)

Jun 19, 2018


Load the correct cookie state when visiting the cookieManager after a user has declined

Jun 19, 2018


Updated french translations (thanks to damsfx)

Jun 15, 2018


Optimized responsive display of cookie banner on mobile devices

Jun 15, 2018


Various bug fixes and extended support for old Laravel 5.1 installations

Jun 15, 2018


Optimized PHP 7.2 compatibility

Jun 15, 2018


Optimized default cookieBanner styles

Jun 15, 2018


Updated french translations (thanks to damsfx)

Jun 14, 2018


Added `ignore_behaviour` property to `cookieBanner`. You can now decide what happens if the user ignores the banner (show banner again, opt-in, opt-out).

Jun 13, 2018


Changed default cookie banner wording

Jun 13, 2018


Fixed cookie group management permission name

Jun 13, 2018


Optimized default CSS of the new cookieManager component

Jun 13, 2018


Added new cookie manager component

Jun 13, 2018


Fixed bug in consent manager configuration

Jun 06, 2018


Added french translations (thanks to damsfx)

Jun 06, 2018


Fixed loading of ConsentManager component if no settings have been defined yet

Jun 06, 2018


Fixed translation string.

Jun 05, 2018


Initialize plugin.

Jun 05, 2018