Skip to content

Works with your stack

Cookie banner for a SaaS website

no visitor quota on launch day

← Cookie Rocks for your stack

Your marketing site runs on WordPress and your customers come from everywhere. Cookie Rocks applies the rules of the countries you sell to, sends the right signals to Google Ads and is never priced by visitor, so a launch never costs you more.

Cookie Rocks Pro

What Cookie Rocks Pro does for SaaS websites

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

  • Each visitor, their own rules

    One setting, for the whole world. Each visitor gets the rules of their own country, read from its law sheet; texts, colours and services stay shared. The rules of your own country apply to every visitor, on top of theirs, except for a site in the United States. In the EU, the UK or Brazil, that means prior consent for everyone. Try the simulator.

    Google Consent Mode v2

    Default and update set at the very top of the page, on every page view. Basic or advanced mode, with a recommendation for your site.

    Google Tag Manager, read for you

    Cookie Rocks reads your public container every day, without a Google account. The tools it loads go into your cookie policy by themselves, paused tags are left out, and the dashboard tells you which tags to make wait for consent.

  • Light on every page

    11.43 kB on a first visit, banner included, then 1.00 kB on each next page. Measured on a blank WordPress. And the engine is built for your site: it only carries the options you use. The measured figures.

  • Alerts by e-mail or Slack

    When a serious problem appears, such as the banner switched off, a second consent tool or Google consent set twice, Cookie Rocks Pro tells you by e-mail or in a Slack channel.

  • Proofs you can hand over

    One click downloads a zip: the proofs of the period with the expiry of each choice and its planned deletion date, the texts each version of the banner showed, a copy of the banner to open in a browser, and a manifest with a SHA-256 fingerprint of each file. Checking it needs nothing from your site.

Every feature →

What matters for consent with SaaS websites

No quota, no surprise

Cookie Rocks runs entirely on your WordPress: no pageview or visitor limit, so a traffic spike on launch day changes nothing.

Google Ads signals

Google Consent Mode at the very top of every page, basic or advanced, so your conversions stay measured within the rules.

Customers worldwide

The rules of the countries you sell to, with the official texts, and the Global Privacy Control signal honoured for US visitors when you turn it on.

Proofs you own

Every choice is kept in your own database, with an optional copy to your own storage (Dropbox, WebDAV, a webhook or e-mail). Nothing about your visitors is sent to us.

What our tests found on SaaS websites

  • Good to know · GTM4WPWhat GTM4WP stores in visitors' browsers

    GTM4WP: 2 cookie(s) or browser key(s) for visitors, recognised by Cookie Rocks from 2.9.8.

    NameKept inCategoryWhat it is for
    gtm4wp_user_logged_incookieStatisticsTells Google Tag Manager that the visitor just signed in or registered
    gtm4wp_user_registeredcookieStatisticsTells Google Tag Manager that the visitor just signed in or registered

    Read in its code, 2 November 2026, GTM4WP.

    Full detail

    GTM4WP can store these in a visitor's browser: gtm4wp_user_logged_in (cookie, statistics: Tells Google Tag Manager that the visitor just signed in or registered); gtm4wp_user_registered (cookie, statistics: Tells Google Tag Manager that the visitor just signed in or registered). Cookie Rocks recognises them from 2.9.8, with this category and purpose, and lists them in the cookie policy when it sees them.

  • 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

  • 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 · GTM4WPGTM4WP loads each video tracker only when its player is on the page

    Each tracker is a local file and fetches its player API only with a matching embed. In the test, allowing YouTube or Vimeo loaded only that player, not the container.

    Seen in our tests, 18 October 2026, GTM4WP 2.0.6.

    Full detail

    GTM4WP prints the GTM container as one inline script and keeps each video tracker in its own local file (gtm4wp-youtube.js, gtm4wp-vimeo.js and others). A tracker fetches its player API only when a matching embed is on the page, and every tracker depends on the local file gtm4wp-media-gate.js. In the test, allowing YouTube or Vimeo loaded only that player, and the container did not start.

See the 20 other findings
  • Good to know · GTM4WPGTM4WP does not track YouTube videos embedded from youtube-nocookie.com

    The YouTube tracker of GTM4WP watches only iframes whose src starts with https://www.youtube.com/embed. A video embedded from youtube-nocookie.com is not tracked: the tracker did not load www.youtube.com/iframe_api for it.

    Seen in our tests, 18 October 2026, GTM4WP 2.0.6.

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

  • Good to know · GTM4WP (GTM for WordPress)Cookie Rocks holds the GTM4WP Tag Manager container until Accept all

    On a test WordPress with GTM4WP 2.0.6 and a dummy container ID, Cookie Rocks holds gtm.js before the choice and loads it after Accept all, without a reload. GTM4WP set no cookie or browser storage of its own on that page.

    Seen in our tests, 17 October 2026, GTM4WP (GTM for WordPress) 2.0.6.

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

  • Set before the choice · GTM4WP (GTM for WordPress)GTM4WP loads Tag Manager on every page with no wait for consent

    Once a container ID is set, gtm.js loads in the head of every page. GTM4WP has no wait-for-consent setting and does not read WP Consent API.

    Read in its code, 16 October 2026, GTM4WP (GTM for WordPress) 2.0.6.

    Full detail

    GTM4WP always loads the Tag Manager container (gtm.js from www.googletagmanager.com or a custom domain) in the head of every page once a container ID is set: wp_head priority 10 (2 with its load-early option), after its data layer block at priority 1. It has no wait-for-consent setting and does not read WP Consent API. Its inline blocks carry data-cfasync="false" and data-pagespeed-no-defer.

  • Depends on a setting · GTM4WP (GTM for WordPress)GTM4WP media tracking loads player scripts only when it finds a video

    setting “Media events” · by default: off

    Off by default. When on, it requests the YouTube, Vimeo and other player scripts only when it finds the provider's frame, so a banner that holds the frame also prevents the request.

    Read in its code, 16 October 2026, GTM4WP (GTM for WordPress) 2.0.6.

    Full detail

    GTM4WP's media events options are off by default. When on, the player SDKs (YouTube iframe_api, Vimeo, SoundCloud, Wistia, Twitch, Dailymotion and others) are requested by JavaScript only when the provider's iframe is found by its src address, so a banner that moves src to data-src or shows a placeholder prevents the request. The filter gtm4wp_media_sdk_blocked (true) holds all SDK requests, and the gtm4wp-media-gate script can be blocked.

  • Good to know · GTM4WP (GTM for WordPress)GTM4WP's WooCommerce integration stores small values only after an action
    • gtm4wp_item_list_attr: cookie, 3 days, when a product is clicked in a list.
    • gtm4wp_orderid_tracked: localStorage on the order received page, or a 365-day cookie.
    • gtm4wp_readded_to_cart: localStorage.
    • Cache-safe data layer option (off by default): gtm4wp_woo_event, gtm4wp_login, gtm4wp_visitor_session.

    Read in its code, 16 October 2026, GTM4WP (GTM for WordPress) 2.0.6.

    Full detail

    GTM4WP's WooCommerce integration writes small first-party values only after an action: gtm4wp_item_list_attr (cookie, 3 days, when a product is clicked in a list), gtm4wp_orderid_tracked (localStorage on the order received page, or a 365-day cookie if localStorage is unavailable) and gtm4wp_readded_to_cart (localStorage). Its cache-safe data layer option (off by default) adds gtm4wp_woo_event (2 days), gtm4wp_login (logged-in users) and sessionStorage gtm4wp_visitor_session.

  • Set before the choice · HubSpotThe HubSpot plugin loads HubSpot on every page with no consent setting

    Once an account is connected, the loader is added to every front page. Consent exists only through HubSpot's own banner, set in the HubSpot portal. Forms and meetings load separately.

    Read in its code, 16 October 2026, HubSpot 11.3.75.

    Full detail

    Once a HubSpot account is connected, the HubSpot plugin adds the loader js.hs-scripts.com/<portalId>.js (or js-eu1..., id hs-script-loader, async defer) in the footer of every front page, plus an inline _hsq.push(['setContentType']) in the head. It has no consent setting in WordPress and no WP Consent API code; consent handling exists only through HubSpot's own banner configured in the portal. Forms load from <hublet>.hsforms.net and meetings from static.hsappstatic.net, separately.

  • Depends on a setting · HubSpotHubSpot's optional proxy makes HubSpot cookies come from the site's domain

    setting “proxy mappings” · by default: off

    Off by default. When on, WordPress relays HubSpot addresses, with HubSpot's cookies, so its requests and cookies come from the site itself.

    Read in its code, 16 October 2026, HubSpot 11.3.75.

    Full detail

    The HubSpot plugin has an optional reverse proxy, off by default: /_hcms/, /hs/, /hubfs/, /hs-fs/, /cs/c/, /e3t/ and /events/public/v1/ are relayed to HubSpot by WordPress, with HubSpot's headers and Set-Cookie included, so HubSpot requests and cookies then come from the site's own domain.

  • 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 it work with Google Tag Manager?

Yes. Cookie Rocks reads your public Tag Manager container, lists the tools it loads, adds them to your cookie policy and tells you which tags to make wait.

Will it slow down our landing pages?

Very little. Each site gets an engine with only the options it uses, and the code for held videos, maps and forms loads only on the pages that have them.

Can we test it before buying?

Yes. The complete plugin is free for 30 days, with every feature, and the free Audit checks your current setup first.

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 SaaS teams

Ship consent before your next launch.

no quota, no meter

Every feature for 30 days, no card. Enough time to get the purchase through your finance team.

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