Skip to content

Works with your stack

Cookie banner for a business website

the map waits for a click

← Cookie Rocks for your stack

A business website presents a company or an independent: who you are, what you do, how to reach you. The cookies come with what you add: statistics, a contact form with a captcha, a map, reviews, a chat or WhatsApp button. Each one is a small question, and the banner answers it page by page.

Cookie Rocks Pro

What Cookie Rocks Pro does for business websites

The complete plugin, every feature, free for 30 days. Here is what matters most for this kind of site.

    Forms keep working

    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.

    Placeholders, not holes

    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.

  • Cookie policy

    Generated from the cookies really found on your pages, with their durations. For sites that address the United States, it also explains how the site answers browser privacy signals (Global Privacy Control, Do Not Track).

  • Live preview

    See the banner on your own home page while you adjust it, before your visitors do.

  • Laws of your countries

    The rules of 248 jurisdictions with their official texts, and your settings checked against them. Country by country, too: proof of consent (248 jurisdictions), storing data in the country (218), hosting abroad (246), the local representative where one is needed, AI chatbots (50) and accessibility (99). The law sheets also give the language the banner must speak, the age of digital consent, the rule on cookie walls, the highest fine and recent decisions of the authorities.

  • Warnings that matter

    The dashboard tells you when a country you target requires a language your banner does not speak, when payment scripts load on every page instead of the checkout, or when comment avatars come from Gravatar. Each warning says what to do, often in one click.

Every feature →

What matters for consent with business websites

Statistics

Google Analytics needs consent under the GDPR and similar laws. Some statistics plugins count visits on your own site instead; even then, a cookie or a kept IP address is what the visitor’s choice is about.

Contact 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.

Maps and videos

A Google map or a YouTube video waits behind a message with a Load button. It loads in place, without reloading the page.

Reviews and chat

Review widgets, chat windows and WhatsApp buttons can load from another company’s servers. A plain link waits for the click; a hosted widget may need consent.

A site with nothing to accept

When nothing on the site needs consent, the banner says so: the site only uses the cookies it needs to work.

What our tests found on business 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.

  • 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).

    NameKept inCategoryWhat it is for
    dnd_wpcf7_session_idlocalStorageNecessaryKeeps the visitor's upload folder for the form, 24 hours
    dnd_cf7_token_*localStorageNecessaryKeeps the token of the visitor's upload folder, 24 hours
    *_count_fileslocalStorageNecessaryCounts 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 33 other findings
  • Good to know · Widgets for Google Reviews (Trustindex)The ti-success cookie of Trustindex review widgets

    Trustindex: ti-success (60 seconds, admin settings only).

    NameKept inCategoryWhat it is for
    ti-successcookieNecessaryShows the result of connecting the review source in the admin, 60 seconds (editors only)

    Read in its code, 4 November 2026, Widgets for Google Reviews (Trustindex).

    Full detail

    Widgets for Google Reviews (Trustindex) sets ti-success = connected or disconnected for 60 seconds in its Advanced settings tab, after the editor connects or disconnects the review source, reads it once on the next admin page and deletes it. Editors only, never for visitors. The Audit 2.9.11 lists it as unknown.

  • Good to know · Cookie RocksOnly visitors' pages say which tools the site uses

    Cookie Rocks Pro records the tools a site uses only from pages viewed by visitors. Pages viewed by site staff (users who can edit posts) never add tools, so files loaded only for logged-in users, such as the Google Fonts of Site Kit's admin bar, stay out of the list of detected tools and the cookie policy. Blocking still applies to everyone.

    Seen in our tests, 28 October 2026, Cookie Rocks.

  • Good to know · google-site-kitSite Kit's admin bar loads Google Fonts for logged-in users only

    Site Kit loads Google Fonts (Google Sans, from fonts.googleapis.com) on public pages only for logged-in users who see the admin bar: its admin bar stylesheet depends on it. Visitors never receive it.

    What to do: Scan the site while logged out. Do not list Google Fonts in the cookie policy because of Site Kit alone.

    Read in its code, 27 October 2026, google-site-kit 1.190.0. Source

  • 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.

  • Sent from your server · Site Kit by GoogleSite Kit tag gateway serves the Google tag from the site itself

    setting “Google tag gateway for advertisers” · by default: Off until Google turns the feature on for the site

    The site forwards each request to Google with the visitor's IP address. The browser never contacts Google directly, so a banner that only knows Google's addresses misses the tag.

    Seen in our tests, 18 October 2026, Site Kit by Google 1.189.0.

    Full detail

    With Site Kit's Google tag gateway on, the Google tag is served by the site itself: a script with the id google_gtagjs-<tag ID>-js loads /wp-content/plugins/google-site-kit/gtg/measurement.php?id=<tag ID>. That file forwards each request to <tag ID>.fps.goog with the visitor's IP address and request headers. The browser never contacts a Google address directly, so a banner that only knows Google's addresses does not see the tag.

  • Set before the choice · Site Kit by GoogleCookie Rocks holds the Google tag served through Site Kit's tag gateway

    It is held until consent, like the tag served by Google. Site Kit's short script that only fills the data layer still runs, after the default consent set by Cookie Rocks.

    Seen in our tests, 18 October 2026, Site Kit by Google 1.189.0.

    Full detail

    Cookie Rocks recognises the Google tag that Site Kit serves from the site through its tag gateway (gtg/measurement.php?id=G-, GT- or AW-) and holds it until consent, like the tag served by Google. Site Kit's short inline script that only fills the dataLayer still runs before the choice, after the default consent set by Cookie Rocks.

  • 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.

  • Good to know · Click to Chat, Joinchat, WP WhatsAppWhatsApp button plugins keep their state on the site, not with Meta
    • Click to Chat stores ht_ctc_storage.
    • Joinchat stores joinchat_views (a page-view counter updated on every page) and joinchat_hashes.
    • WP WhatsApp (NinjaTeam) sets nta-wa-gdpr for 30 days, only when the visitor ticks its consent box.
    • None of them contacts Meta before the click.

    Read in its code, 17 October 2026, Click to Chat, Joinchat, WP WhatsApp.

    Full detail

    WhatsApp button plugins keep their state on the site only: Click to Chat stores ht_ctc_storage, Joinchat stores joinchat_views (a page-view counter updated on every page) and joinchat_hashes, and WP WhatsApp (NinjaTeam) sets nta-wa-gdpr for 30 days only when the visitor ticks its consent box. None of them contacts Meta before the click.

  • Set before the choice · Site Kit by GoogleSite Kit's Sign in with Google is held until consent

    setting “Sign in with Google module”

    • Both Google's script and Site Kit's sign-in script are held: no g_state or googlesitekit_auth_nonce cookie.
    • After Accept all, without a reload, the button and One Tap appear.
    • On wp-login.php, where no banner is shown, the button works as usual.
    • Before 2.5.2 both scripts ran before the choice.

    Seen in our tests, 17 October 2026, Site Kit by Google 1.189.0.

    Full detail

    With Site Kit's Sign in with Google module, Cookie Rocks holds both Google's script (accounts.google.com/gsi/client) and Site Kit's own sign-in script until consent: before the choice there is no g_state or googlesitekit_auth_nonce cookie. After Accept all, without a reload, the button and One Tap appear. On wp-login.php, where no banner is shown, the button works as usual. If accounts.google.com does not answer, the button does not appear, as without Cookie Rocks. Before 2.5.2 both scripts ran before the choice.

  • 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 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.

  • 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.

  • Set before the choice · Widgets for Google Reviews (Trustindex)Google Reviews widget images load from Trustindex before any choice

    If loader.js is held, visitors see no reviews until they accept. Star icons, logos and reviewer photos are plain images that load before the choice even then.

    Read in its code, 16 October 2026, Widgets for Google Reviews (Trustindex) 14.2.

    Full detail

    The review widget of Widgets for Google Reviews is written into the page by the server but hidden (opacity 0, height 0) until cdn.trustindex.io/loader.js formats it; if that script is held, visitors see no reviews until they accept. Its star icons and platform logos (cdn.trustindex.io) and reviewer photos are plain <img> tags with the skip-lazy class, so they load before any choice even when loader.js waits. Widgets with an ID also add a stylesheet from cdn.trustindex.io.

  • Good to know · JoinchatJoinchat sends click events to Google and Meta tags when they exist

    setting “Clicks Counter (tracking)” · by default: on

    On click it sends events to the site's Google tags, a Google Ads conversion if set, and Meta if present. If those tags are held, nothing reaches Google or Meta.

    Read in its code, 16 October 2026, Joinchat 6.4.2.

    Full detail

    On click, Joinchat sends a generate_lead event through gtag to each G- or GT- tag found, a Google Ads conversion if set, a dataLayer push and fbq('trackCustom') if fbq exists, then opens wa.me or web.whatsapp.com; if those tags are held, nothing reaches Google or Meta. Its click counter (on by default) posts to the site's /wp-json/joinchat/v1/track-click, and the server keeps a hash of IP, user agent, channel and number for 60 seconds. No WP Consent API or Consent Mode default; events joinchat:event and joinchat:track can be cancelled.

  • Depends on a setting · JoinchatJoinchat keeps a page-view count in the browser when it opens by itself

    setting “message_delay” · by default: 10

    joinchat_views goes to localStorage when automatic opening is on (default: after 10 seconds and 2 page views). A cookieless setting moves it to sessionStorage.

    Read in its code, 16 October 2026, Joinchat 6.4.2.

    Full detail

    Joinchat writes joinchat_views to localStorage on page load when automatic opening is on (default: after 10 seconds and 2 page views). The cookieless setting (filter joinchat_get_settings) moves its keys to sessionStorage, and a negative automatic-opening delay removes all storage. The JavaScript event joinchat:starting can pause its start until joinchat_obj.resume().

  • Depends on a setting · Site Kit by GoogleSite Kit's WooCommerce conversions can send the buyer's email, phone and name

    With the gtagUserData flag, the purchase event carries billing details for Google's enhanced conversions. The Reader Revenue Manager module loads a Google News script on its pages.

    Read in its code, 16 October 2026, Site Kit by Google 1.189.0.

    Full detail

    With Site Kit's conversion tracking for WooCommerce and the gtagUserData flag (since 1.161.0), the purchase event carries user_data with the billing email, phone and name for Google's enhanced conversions. Its Reader Revenue Manager module loads news.google.com/swg/js/v1/swg-basic.js on the pages where its snippet is set.

  • Good to know · Site Kit by GoogleWith Site Kit's Ads module, the Google tag counts as statistics and marketing

    After Accept all, Google Ads sets _gcl_au. With statistics only, no Google Ads cookie is set, but the tag still sends Google a cookieless request with advertising denied.

    Seen in our tests, 15 October 2026, Site Kit by Google 1.189.0.

    Full detail

    With Site Kit's Ads module (a test AW- conversion ID), the Google tag counts as statistics and marketing. After Accept all, Google Ads sets _gcl_au and calls doubleclick.net. With consent to statistics only, no Google Ads cookie is set, but the loaded tag still sends Google a cookieless request with advertising consent denied (pagead2.googlesyndication.com/ccm/collect).

  • Good to know · Site Kit by GoogleCookie Rocks holds Site Kit's Google tag in basic mode
    • Before any choice, no request goes to Google.
    • Accept all or statistics only: _ga and _ga_<ID> are set; with statistics only, advertising stays denied.
    • Reject all: gtag.js never loads.

    Seen in our tests, 15 October 2026, Site Kit by Google 1.189.0.

    Full detail

    Site Kit prints its Google tag (gtag.js) in the page head. Cookie Rocks holds it there in basic mode: before any choice, no request goes to Google. After Accept all, Google Analytics sets _ga and _ga_<ID>; with statistics only, the same happens and advertising stays denied; after Reject all, gtag.js is never loaded. With a GT- test ID Google returned no configuration and set no cookie; the cookies were seen with a G- test ID.

  • Good to know · Site Kit by GoogleSite Kit sends nothing to Google before it is connected

    Before it is connected to a Google account, Site Kit only adds a DNS prefetch hint for googletagmanager.com to the pages: no request to Google and no cookie.

    Seen in our tests, 15 October 2026, Site Kit by Google 1.189.0.

  • Set before the choice · Site Kit by GoogleTwo Site Kit scripts still run before the choice, but send nothing to Google

    When the Google tag is held, Site Kit's tag settings and content events only fill the data layer. After consent, the tag processes events pushed before the choice.

    Seen in our tests, 15 October 2026, Site Kit by Google 1.189.0.

    Full detail

    When a banner holds Site Kit's Google tag (gtag/js), two other Site Kit scripts still run before the choice: the inline tag settings (google_gtagjs-js-after: linker, js, developer_id, config) and its content events provider. They only fill the dataLayer and send nothing to Google. Site Kit also replaces window.gtag with an equivalent function writing to the same dataLayer. After consent, events pushed before the choice are processed by the tag.

  • Good to know · Site Kit by GoogleCookie Rocks holds Site Kit's Tag Manager and AdSense scripts

    The Tag Manager container loads only after consent. Auto ads count as marketing: they load after Accept all, not with statistics only or after Reject all.

    Seen in our tests, 15 October 2026, Site Kit by Google 1.189.0.

    Full detail

    With Site Kit's Tag Manager module, the container (gtm.js) is held in the page head and loads only after consent. With its AdSense module, the Auto ads script (adsbygoogle.js) is held as marketing: it loads after Accept all, not with statistics only or after Reject all.

Questions

Does a small business site need a banner?

As soon as one tool on it sets a cookie that is not strictly needed, such as statistics, a map or a video, consent comes first under the GDPR and similar laws.

Can I keep statistics without consent?

In some countries, audience measurement set up for it can be exempt, until the visitor objects. Google Analytics can never be exempt.

Which plugins have their own page?

See anti-spam and captchas, feeds and embeds, chat and WhatsApp buttons.

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 business websites

Your site, your contact form, consent in place.

one question per tool

Every feature of the complete plugin for 30 days, no card.

  • During the trial: everything, including the full settings and the scans
  • After 30 days without a key: the banner, your visitors’ choices and your proofs of consent keep working
  • What waits for a key: most settings, updates and support

How the trial works, in detail

Get your trial key

Your e-mail and your site. Your key arrives as soon as you confirm your e-mail.

One trial per domain. Local and staging sites never use up your key.

We keep your e-mail address to send your key and help you with it, as explained in our privacy policy. No newsletter, nothing else.