Works with your stack
Cookie consent for a non-profit website
free for associations that sell nothing
An association or a club still uses cookies when it embeds a video, shows a map, counts visits or adds a newsletter form. An association that sells nothing, with no advertising and no affiliate links, can ask for a free Community key: every feature, exactly like a paid key.

Cookie Rocks with a free Community key A Community key opens the complete plugin, exactly like a paid key. Here is what matters most for this kind of site. Contact Form 7, WPForms, Gravity Forms, Forminator, Spectra and Divi forms protected by reCAPTCHA or hCaptcha ask before sending, and nothing the visitor typed is lost. Videos, maps, music, social media posts and forms (YouTube, Vimeo, Google Maps, Spotify, Instagram, X, TikTok, Typeform…) show a placeholder with a load button, in place, without breaking your layout. The banner, its details panel and the cookie policy in 54 languages: English, Arabic, Azerbaijani, Bulgarian, Bangla, Catalan, Czech, Danish, German, Greek, Spanish (Spain), Spanish (Mexico), Estonian, Finnish, French, Irish, Hindi, Croatian, Hungarian, Armenian, Indonesian, Icelandic, Italian, Japanese, Georgian, Kazakh, Korean, Kyrgyz, Lithuanian, Latvian, Macedonian, Mongolian, Malay, Maltese, Norwegian Bokmål, Nepali, Dutch, Polish, Portuguese (Brazil), Portuguese (Portugal), Romanian, Russian, Slovak, Slovenian, Albanian, Serbian (Cyrillic), Serbian (Latin), Swedish, Turkish, Ukrainian, Uzbek, Vietnamese, Chinese (Simplified) and Chinese (Traditional). With Polylang or WPML, the banner follows the language of each page. One option shows it in the visitor’s browser language instead, even when your site has no version in that language. The dashboard comes in 28 languages, the law sheets in 28. How visitors answer the banner, day by day, over 30 days, 90 days or 12 months, drawn by the plugin from the register of proofs, without any outside service. Every choice is recorded on your site and kept for the months you choose, never less than the choice itself plus 12 months, or what a country you target requires. Then it is deleted automatically. An optional daily or weekly copy goes to your own storage: Dropbox, a WebDAV server, a signed webhook or an e-mail address. It goes straight from your site, never through ours. Keyboard and screen reader friendly. Light, dark or automatic theme, a discreet box or a bar, rounded or square corners, in your colours.Everything Cookie Rocks does, free for Non-profit websites
reCAPTCHAForms keep working
Placeholders, not holes
In their language
Statistics
Register of proofs
Accessible
Plugins that Non-profit websites often use
Each one is tested with Cookie Rocks: what it loads in the browser, and what waits for the visitor’s choice. Open a card for the details.
What matters for consent with Non-profit websites
A free key for associations that sell nothing
Clubs and associations without a shop, youth movements, sports clubs and student circles can ask for a free Community key. It covers one domain or subdomain and is renewed each year in one click, as long as the site stays non-commercial. The credit sentence at the end of the cookie policy stays: it is the counterpart of the free key.
Forms and captchas
A captcha that needs consent can stop a form from sending. Once allowed, a reCAPTCHA or hCaptcha form shows no message asking for consent.
Payments
Stripe and PayPal scripts can load on more pages than the payment itself, with fraud checks. Under EU law, outside the payment, they should wait for consent: the strict payments setting holds them there.
Videos and maps
A YouTube video or a Google map waits behind a message with a Load button, and loads in place after the click.
Newsletters and statistics
Sign-up forms and popups can add a tracker of their own. Google Analytics needs consent under the GDPR and similar laws; some statistics plugins count on your own site instead.
What our tests found on Non-profit websites
Set before the choice · Cookie RocksAtlas Major stops calling Google Fonts once the copy is done
With Cookie Rocks Pro 2.11.0 and WP Go Maps' Atlas Major interface, local fonts on and the copy done, nothing goes to Google Fonts before the choice: the stylesheet is served from the site. Without local fonts, or before the scheduled copy has run, Atlas Major's @import still calls fonts.googleapis.com before the choice.
Seen in our tests, 6 November 2026, Cookie Rocks.
Set before the choice · WP Go MapsWith Cookie Rocks, WP Go Maps' Google map starts without a reload
Google engine, consent option on or off: nothing to Google before the choice; a placeholder, then the map after Accept all, without a reload.
Seen in our tests, 6 November 2026, WP Go Maps 10.1.10.
Full detail
With the Google engine of WP Go Maps 10.1.10, its consent option on or off, Cookie Rocks 2.10.1 sends nothing to Google before the choice, and after Accept all the map appears without a reload. After Reject all or a withdrawal, nothing loads. Until then a placeholder of the same size holds the place of the map, with a Load the map button that starts it. Cookie Rocks tells WP Go Maps on the server that consent is handled, so no cookie is set in the visitor's browser for this.
Set before the choice · Cookie RocksCookie Rocks holds the Leaflet map of WP Go Maps until the visitor accepts
Nothing reaches unpkg.com or OpenStreetMap before Accept, and the map draws without a reload.
Seen in our tests, 6 November 2026, Cookie Rocks.
Full detail
Cookie Rocks 2.11.0 holds the Leaflet engine of WP Go Maps 10.1.10. Before the choice and after Refuse, nothing goes to unpkg.com or the OpenStreetMap tile servers. After Accept, the libraries and tiles load and the map draws without a page reload.
Good to know · WP Go MapsWP Go Maps picks its interface at random on a new install
On a new install, WP Go Maps 10.1.10 picks its interface at random, one chance in two: Atlas Novus or Atlas Major. Two fresh sites with the same settings can therefore behave differently. Atlas Major's stylesheet loads Plus Jakarta Sans and IBM Plex Mono from Google Fonts through an @import, which does not show in the page's HTML.
Seen in our tests, 6 November 2026, WP Go Maps.
Set before the choice · WP Go MapsWP Go Maps' consent option only stops the Google Maps engine
Google engine: notice, nothing from Google until the cookie. Leaflet engine: no notice, libraries still load from unpkg.com.
Seen in our tests, 6 November 2026, WP Go Maps 10.1.10.
Full detail
With its option Require consent before loading Maps API on and the Google engine, WP Go Maps 10.1.10 shows a notice and a button and loads nothing from Google Maps until the cookie wpgmza-api-consent-given exists; removing the cookie brings the notice back at the next page view. With the Leaflet engine, the same option shows no notice and the Leaflet and MapLibre libraries still load from unpkg.com; only the map tiles wait for the cookie.
Good to know · Drag and Drop Multiple File Upload for Contact Form 7What Drag and Drop Multiple File Upload for Contact Form 7 stores in browsers
Drag and Drop for CF7: dnd_wpcf7_session_id and dnd_cf7_token_* (necessary, 24 h, upload field only).
Name Kept in Category What it is for dnd_wpcf7_session_idlocalStorage Necessary Keeps the visitor's upload folder for the form, 24 hours dnd_cf7_token_*localStorage Necessary Keeps the token of the visitor's upload folder, 24 hours *_count_fileslocalStorage Necessary Counts the files added to the upload field Read in its code, 4 November 2026, Drag and Drop Multiple File Upload for Contact Form 7.
Full detail
On a page with its upload field, the plugin keeps in local storage dnd_wpcf7_session_id (a random upload folder and the time it was made), dnd_cf7_token_<folder> (a random token for that folder) and <field>_count_files. It deletes the folder and token after 24 hours. They let the visitor's files reach the form; nothing is sent elsewhere. The Audit 2.9.11 shows the observed dnd_cf7_token_<uuid> under the site's own name as an identifier to check, although the same plugin's code pattern dnd_cf7_token_* is in its list.
See the 17 other findings
Good to knowCookie Rocks lists Wordfence, Forminator, WP WhatsApp and WPForms Pro cookies
- Each appears in its cookie list with its purpose.
- Wordfence: wfCBLBypass, wf_loginalerted_*, wfls-remembered-*.
- Forminator: poll-cookie-*, forminator_stripe_payment_owner.
- WP WhatsApp: nta-wa-gdpr. WPForms Pro: _wpfuuid.
Read in its code, 18 October 2026.
Full detail
Cookie Rocks lists the site cookies of Wordfence (wfCBLBypass, wf_loginalerted_*, wfls-remembered-*), Forminator (poll-cookie-*, forminator_stripe_payment_owner), WP WhatsApp (nta-wa-gdpr) and WPForms Pro (_wpfuuid) in the cookie list it writes, with their purpose.
Good to know · Contact Form 7, WPForms Lite, Forminator, Fluent Forms, Ninja FormsFive form plugins set nothing on a default home page
by default: Default settings
With default settings and no form on the page, Contact Form 7, WPForms Lite, Forminator, Fluent Forms and Ninja Forms set no cookie, store nothing and load no known third-party tool.
Seen in our tests, 17 October 2026, Contact Form 7, WPForms Lite, Forminator, Fluent Forms, Ninja Forms 6.2.2, 2.0.2.2, 1.58.2, 6.2.16, 3.15.6.
Full detail
On a fresh WordPress home page with default settings, Contact Form 7, WPForms Lite, Forminator, Fluent Forms and Ninja Forms set no cookie, keep nothing in the browser's storage and load no known third-party tool, before or after Accept all (no form or captcha placed on the page).
Good to know · TranslatePress, Weglot, Instagram Feed, WP Go Maps, MailPoet, MatomoTranslatePress, Weglot, MailPoet and others set nothing by default
by default: Default settings
With default settings and nothing set up, TranslatePress, Weglot, Instagram Feed, WP Go Maps, MailPoet and Matomo for WordPress set no cookie, use no storage and load no known third-party tool.
Seen in our tests, 17 October 2026, TranslatePress, Weglot, Instagram Feed, WP Go Maps, MailPoet, Matomo 3.3.8, 6.4.3, 6.14.0, 10.1.10, 5.42.0, 5.13.1. Source
Full detail
On a fresh WordPress home page with default settings (no account, key or content set up), TranslatePress, Weglot, Smash Balloon Instagram Feed, WP Go Maps, MailPoet and Matomo for WordPress set no cookie, keep nothing in the browser's storage and load no known third-party tool, after Accept all.
Set before the choice · Contact Form 7Contact Form 7 loads reCAPTCHA on every page, not only form pages
Once keys are saved, reCAPTCHA runs on each page load. Turnstile also loads on every page, and Stripe wherever CF7 scripts load. A filter can switch reCAPTCHA to www.recaptcha.net.
Read in its code, 16 October 2026, Contact Form 7 6.2.2.
Full detail
Once reCAPTCHA keys are saved, Contact Form 7 enqueues google-recaptcha (api.js?render=) and wpcf7-recaptcha on every page, not only pages with a form, and calls grecaptcha.execute on each page load. Turnstile (challenges.cloudflare.com/turnstile/v0/api.js) also loads on every page once its keys are saved, and js.stripe.com/v3/ wherever CF7 scripts load when Stripe is set up. The filter wpcf7_use_recaptcha_net switches reCAPTCHA to www.recaptcha.net.
Good to know · Contact Form 7Cookie Rocks asks for reCAPTCHA permission above Contact Form 7 forms
Sending waits until reCAPTCHA is allowed, the page reloads without losing what was typed, and reCAPTCHA loads from recaptcha.net. A setting can treat it as necessary.
Read in its code, 16 October 2026, Contact Form 7 6.2.2.
Full detail
On Contact Form 7 forms protected by reCAPTCHA, Cookie Rocks shows a permission request above the form, holds the send until reCAPTCHA is allowed, reloads without losing what was typed, and loads reCAPTCHA from recaptcha.net. A setting can treat reCAPTCHA as necessary.
Good to know · Contact Form 7Contact Form 7 sets no cookie and contacts no other site by default
Other sites are contacted only when reCAPTCHA, Turnstile, Akismet, Stripe or a mailing tool is on. A submission records time, IP address, port, browser and page address.
Read in its code, 16 October 2026, Contact Form 7 6.2.2.
Full detail
Contact Form 7 reads and sets no cookie and sends nothing to other sites unless reCAPTCHA, Turnstile, Akismet, Stripe or a mailing tool is turned on. A submission records timestamp, IP address, port, user agent and page URL. The nonce is added only for logged-in users, so a cached form page stays valid for visitors. It does not use WP Consent API.
Good to know · Contact Form 7Without reCAPTCHA loaded, Contact Form 7 files messages as spam
The form is then sent without a token, filed as spam and no e-mail is sent. An empty Turnstile token is also treated as spam.
Read in its code, 16 October 2026, Contact Form 7 6.2.2.
Full detail
If grecaptcha is missing, Contact Form 7's wpcf7-recaptcha script stops with an error before it wraps the submit, so the form is sent without a token and CF7 files it as spam ('reCAPTCHA response token is empty.') and sends no email. An empty Turnstile token is also treated as spam.
Set before the choice · WPForms LiteWPForms loads its captcha only on pages with a form that uses it
It loads reCAPTCHA, hCaptcha or Turnstile in the footer of those pages only. Its No-Conflict mode removes other captcha scripts, but not those from recaptcha.net.
Read in its code, 16 October 2026, WPForms Lite 2.0.2.2.
Full detail
WPForms loads its captcha only on pages that show a form using it, in the footer: reCAPTCHA (www.google.com/recaptcha/api.js), hCaptcha (hcaptcha.com/1/api.js) or Turnstile (challenges.cloudflare.com); the address can be changed with the wpforms_frontend_captcha_api filter. Its No-Conflict mode dequeues other scripts from google.com/recaptcha, gstatic.com/recaptcha and hcaptcha.com/1, but not recaptcha.net. It sends a Permissions-Policy header for private state tokens on every request.
Good to know · WPForms LiteWPForms Lite sets no cookie for visitors
Lite does not write its _wpfuuid cookie unless a consent function allows it. Form analytics send views to the site itself, with no cookie or storage. It does not use WP Consent API.
Read in its code, 16 October 2026, WPForms Lite 2.0.2.2.
Full detail
WPForms Lite sets no cookie for visitors: its front script writes _wpfuuid (random ID, 3,999 days, SameSite=Strict) only if uuid_cookie is true, which Lite hardcodes to false, or if a wpforms.hasRequiredConsent JavaScript function exists and returns true. Form analytics (2.0) send form-view data to the site's own admin-ajax.php by sendBeacon, with an in-memory session ID, no cookie or storage, and skip authors, editors and administrators. It does not use WP Consent API.
Good to know · MC4WP: Mailchimp for WordPressMC4WP Mailchimp forms set no cookie and store nothing in the browser
The forms work on cached pages. Form data is sent to Mailchimp by the server when the form is submitted.
Read in its code, 16 October 2026, MC4WP: Mailchimp for WordPress 4.14.1.
Full detail
MC4WP: Mailchimp for WordPress 4.14.1 contains no setcookie, document.cookie, localStorage, sessionStorage, IndexedDB, WP Consent API or gtag('consent') code (outside minified and vendor files). Forms use a timestamp field accepted for 90 days instead of a nonce, so they work on cached pages. Form data is sent to Mailchimp by the server on submission.
Depends on a setting · MC4WP: Mailchimp for WordPressMC4WP's tracking pixel loads on every page with no wait for consent
setting “Enable Site Tracking” · by default: off
Off by default. After a sign-up, the email is sent to Mailchimp only if the pixel is already loaded, so it is lost if the pixel is held and accepted later on that page.
Read in its code, 16 October 2026, MC4WP: Mailchimp for WordPress 4.14.1.
Full detail
MC4WP's Site Tracking Pixel (off by default) enqueues Mailchimp's script chimpstatic.com/mcjs-connected/js/users/<id>.js (handle mc4wp-mailchimp-site-tracking-pixel, defer) on every public page, with no setting to wait for consent. After a sign-up, an inline footer script calls $mcSite.pixel.api.identify with the subscriber's email only if the pixel is already loaded, so it is lost if the pixel is held and accepted later on the same page.
Good to know · MailPoetMailPoet's tracking consent covers emails, not the cookie banner
setting “tracking.consent.subscriber_choice” · by default: track_all
It covers email opens and clicks only, and MailPoet has no WP Consent API code. For visitors, its forms set only popup_form_dismissed_<id> (182 days) after closing a pop-up or subscribing.
Read in its code, 16 October 2026, MailPoet 5.42.0.
Full detail
MailPoet's subscriber tracking consent (track_all by default, ask_new, ask_all) covers email opens and clicks only; it does not read a cookie banner and does not cover cookies set at login or order. MailPoet has no WP Consent API code. For anonymous visitors, its forms set only popup_form_dismissed_<id>, by JavaScript, after closing a pop-up form or subscribing (182 days).
Depends on a setting · MailPoetMailPoet forms load Google or Cloudflare captcha only when it is chosen
setting “Load 3rd-party libraries” · by default: off
The built-in captcha sets no cookie. Google Fonts load only with Load 3rd-party libraries on (off by default). If the captcha script is held, the form cannot be sent before consent.
Read in its code, 16 October 2026, MailPoet 5.42.0.
Full detail
MailPoet forms load www.google.com/recaptcha/api.js or challenges.cloudflare.com/turnstile only when that captcha is chosen; the built-in captcha uses a hidden field and no cookie. Google Fonts in forms load from fonts.googleapis.com only when Load 3rd-party libraries is on (off by default). If the captcha script is held, public.js retries 20 times every 400 ms then gives up, so the form cannot be sent before consent.
Sent from your server · MailPoetMailPoet sets long-lived tracking cookies from the server, out of banners' reach
setting “Engagement analytics tracking” · by default: full
- With the default level (Full), mailpoet_subscriber (10 years) is set when a known subscriber logs in or orders.
- mailpoet_page_view (10 years) is then set on public pages.
- A newsletter click sets mailpoet_revenue_tracking (14 days) and mailpoet_subscriber.
- The Partial or Basic level, or the mailpoet_is_cookie_tracking_enabled filter, stops them.
Read in its code, 16 October 2026, MailPoet 5.42.0.
Full detail
With the default Engagement analytics tracking level (Full), MailPoet sets from PHP mailpoet_subscriber (10 years) when a known subscriber logs in, confirms, registers or places a WooCommerce order, then mailpoet_page_view (10 years) on public pages at most once a minute; a click in a newsletter sets mailpoet_revenue_tracking (14 days) and mailpoet_subscriber before redirecting. A consent plugin cannot hold them. Partial or Basic, or the mailpoet_is_cookie_tracking_enabled filter, stops them.
Set before the choice · The Events CalendarThe Events Calendar shows a Google map on events with an address by default
setting “Enable Maps” · by default: on
With the built-in key the map is a Google iframe; with the site's own key, Google's map script loads. The plugin sets no cookie or storage. Its suggested policy text says no data leaves the site.
Read in its code, 16 October 2026, The Events Calendar 6.18.2.
Full detail
The Events Calendar shows a Google map on events with an address by default (maps enabled, Show Google Map ticked for new events). With the key built into the plugin, the map is an iframe to www.google.com/maps/embed/v1/place in the HTML; with the site's own key, it loads maps.googleapis.com/maps/api/js and embedded-map.js draws the map on page load. The plugin sets no cookie and uses no browser storage on visitor pages, and its calendar export links load nothing until clicked. Its suggested privacy policy text says no data leaves the site by default.
Set before the choice · WP Go MapsWP Go Maps loads map libraries from other sites with no consent condition
- Leaflet engines load from unpkg.com, the newer OpenLayers engine from cdn.jsdelivr.net.
- They load even when its own consent notice is on.
- Map tiles are requested by script, so a consent plugin reading the HTML misses them.
- The Google engine adds a maps.googleapis.com script.
Read in its code, 16 October 2026, WP Go Maps 10.1.10.
Full detail
WP Go Maps loads its map libraries without any consent condition: the Leaflet engines, including the zero-cost engine of new installs, from unpkg.com (leaflet, maplibre-gl); the newer OpenLayers engine from cdn.jsdelivr.net; the classic OpenLayers engine from the site (lib/ol.js). These load even when its own consent notice is on. With OpenStreetMap-type engines the map and its tiles (tile.openstreetmap.org, tiles.openfreemap.org and others) are requested by JavaScript, so a consent plugin reading the page HTML does not see them. The Google engine adds a maps.googleapis.com script tag with a callback.
Sent from your server · WP Go MapsWP Go Maps address search sends the search text to OpenStreetMap
With an OpenStreetMap engine, WP Go Maps' address search goes through the site's REST route query-nominatim: the browser contacts only the site, and the server sends the visitor's search text to nominatim.openstreetmap.org.
Read in its code, 16 October 2026, WP Go Maps 10.1.10.
Kinds of sites
Other kinds of sites, each with its own page.
Questions
Does every association get a free key?
No. An association that sells products, lives on advertising or carries affiliate links takes a paid key, with 30 days free. Every request is read by a person, who may decline it. See the Community rules.
Which plugins have their own page?
See payment plugins, newsletter plugins, bookings and events and statistics plugins.
What happens after the 30-day trial?
The banner, your visitors’ choices and your proofs of consent keep working. Without a key, most settings lock, updates and support stop. Take a key at any time and everything opens again.
For associations and clubs
Every feature, free for your association.
free for associations that sell nothing
Three fields, one minute, read by a person. Your key arrives by e-mail, renewed each year in one click while the site stays non-commercial.