Skip to content

Works with your stack

Cookie banner for a website with ads

certified tool for personalised ads

← Cookie Rocks for your stack

A site that lives on ads has one question the others do not: Google requires a consent tool certified for the IAB TCF before it shows personalised ads in the EEA, the United Kingdom and Switzerland. Cookie Rocks is not certified. Say so plainly, and choose with that in mind.

Cookie Rocks Pro

What Cookie Rocks Pro does for news and ad-funded sites

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

    675 tools recognised

    Meta, LinkedIn, TikTok, Pinterest, Hotjar, AdSense, chats, e-mail marketing and more are held until consent, automatically. The scan finds the ones it does not know yet too. See the list.

    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.

  • Where the law allows less

    Where the law only asks you to inform, the banner informs and lets visitors refuse: cookies work until the visitor opts out. Where your countries allow it, audience measurement set up for it can run until the visitor objects.

  • Consent and refusal do not last the same time

    Cookie Rocks keeps a consent no longer than the strictest country you target allows, and keeps a refusal at least as long as the strictest country requires before asking again. Example: a site that targets France and California keeps consent for 6 months at most, and a refusal for 12 months at least. In Colorado, a visitor who refused is not asked again.

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

  • Back at once after consent

    The visitor accepts, and the held tools start right there, on the same page, without a reload: the video plays, the map appears, the visit is counted. Allowing only Google reCAPTCHA or hCaptcha from a form reloads the page once, and what the visitor typed stays in the form. After consent, held scripts download together, then run in the order of the page.

Every feature →

Plugins that news and ad-funded sites 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 news and ad-funded sites

The TCF rule

To show personalised Google ads in the EEA, the United Kingdom and Switzerland, Google requires a certified consent tool that supports the IAB TCF. Cookie Rocks is not certified: there, use Google’s own consent message or a certified tool.

Google’s own message

With Google’s own consent message, ads are still shown after a refusal, not personalised, and Google stores its own choice cookie. It works as a second consent tool on the site.

Ad cookies come with the ad

AdSense sets its ad cookies once an ad is actually shown, not on consent alone, along with cookies of other ad networks that differ from one visit to the next.

US visitors

Without a US states message set in AdSense, a visitor from California gets ad cookies on the first visit, with no Do Not Sell link, and a Global Privacy Control signal does not stop them.

Ad plugins

Ad plugins place ad code on your pages and have no banner of their own. Each has its own way to make ads wait, and neither of those covered here does it by default.

What our tests found on news and ad-funded sites

  • Good to know · Advanced AdsWhat Advanced Ads stores in visitors' browsers

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

    NameKept inCategoryWhat it is for
    advanced_ads_page_impressionscookiePreferencesCounts the visitor's page views to show ads only after a set number
    advanced_ads_visitorcookiePreferencesRemembers ad display conditions for the visitor

    Seen in our tests, 2 November 2026, Advanced Ads.

    Full detail

    Advanced Ads can store these in a visitor's browser: advanced_ads_page_impressions (cookie, preferences: Counts the visitor's page views to show ads only after a set number); advanced_ads_visitor (cookie, preferences: Remembers ad display conditions for the visitor). 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.

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

See the 17 other findings
  • Depends on a setting · Advanced AdsAdvanced Ads' ad blocker counter can load Google's tag on every page

    setting “Ad blocker counter: Google Analytics ID” · by default: empty

    With a Google Analytics ID in the counter, a footer script loads gtag.js and sends an AdBlock event. It is held on the server only with the Cookie or TCF privacy methods.

    Read in its code, 16 October 2026, Advanced Ads 2.0.29.

    Full detail

    When a Google Analytics ID is entered in Advanced Ads' ad blocker counter, an inline footer script on every page loads googletagmanager.com/gtag/js and sends an AdBlock event; it is held on the server only with the Cookie or TCF privacy methods. Advanced Ads also marks its critical inline script (id ending in 'ready', no tracker) to be skipped by WP Rocket's delay and by one consent plugin's blocker, and does nothing for other delay tools.

  • Set before the choice · Advanced AdsAdvanced Ads can load AdSense before the choice with non-personalised ads

    setting “Show non-personalized AdSense ads until consent is given”

    With the Privacy module on, Auto ads wait for the accepted signal. With 'Show non-personalized AdSense ads until consent is given', AdSense loads before any choice.

    Read in its code, 16 October 2026, Advanced Ads 2.0.29.

    Full detail

    AdSense Auto ads in Advanced Ads print adsbygoogle.js in the head; with the Privacy module on, an inline script creates it when the advanced_ads_privacy event says accepted. With 'Show non-personalized AdSense ads until consent is given' (Cookie method), Advanced Ads sets requestNonPersonalizedAds=1 and loads AdSense before any choice.

  • Depends on a setting · Advanced AdsAdvanced Ads shows all ads without consent by default

    setting “Privacy > consent method” · by default: Show all ads even without consent

    • No banner, no WP Consent API, no Consent Mode defaults.
    • Its Privacy module shows all ads without consent by default.
    • Cookie method: looks for a consent cookie; with page caching, the free version serves one result to everyone.
    • IAB TCF method: waits for TCF and needs purpose 1 consent.

    Read in its code, 16 October 2026, Advanced Ads 2.0.29.

    Full detail

    Advanced Ads has no banner and does not use WP Consent API or set Consent Mode defaults. Its Privacy module defaults to showing all ads without consent. The Cookie method looks for a cookie name containing a value, checked in PHP (substring) and re-read in JavaScript every 333 ms for 60 seconds; with page caching the free version serves the cached result to everyone. The IAB TCF method waits for window.__tcfapi and needs purpose 1 consent; ads are kept base64-encoded in a text/plain script and decoded only at load. It fires a DOM event, advanced_ads_privacy.

  • Depends on a setting · Ad InserterAd blocking detection loads Google and ad scripts before the choice

    setting “Use external scripts (ad blocking detection)” · by default: on

    • Off by default; the problem starts when you turn it on.
    • Adds bait tags for Google Analytics, Tag Manager, Quantcast and Media.net.
    • Also loads an image from dummyimage.com and checks Google's AdSense script.
    • Sets the cookies aiADB, aiADB_PV, aiADB_PR and aiBLOCKS.

    What to do: Turn off Use external scripts, or define AI_ADB_NO_GOOGLE_ANALYTICS, AI_ADB_NO_GTM, AI_ADB_NO_QUANT, AI_ADB_NO_MEDIA_NET, AI_ADB_NO_DUMMYIMAGE and AI_ADB_NO_GOOGLESYNDICATION in wp-config.php.

    Read in its code, 16 October 2026, Ad Inserter 2.8.19.

    Full detail

    Ad Inserter's ad blocking detection is off by default. When it is on with Use external scripts (on by default), every page footer gets bait tags before any choice: <object> tags pointing to google-analytics.com/analytics.js, googletagmanager.com/gtag/js, secure.quantserve.com/quant.js and contextual.media.net/dmedianet.js, an <img> from dummyimage.com, and after load a HEAD fetch to pagead2.googlesyndication.com/pagead/js/adsbygoogle.js whose address is base64-encoded in an inline script. Cookies: aiADB (30 days by default) and aiADB_PV (365 days) when a blocker is handled, aiADB_PR for redirection, and aiBLOCKS (365 days) for per-block close and view limits.

  • Set before the choice · Ad InserterAd Inserter hides ad code from banners that read the page

    setting “Dynamic blocks” · by default: Client-side insert

    Blocks with a browser-side check or lazy, manual or delayed loading are printed encoded, so a banner reading the page cannot see the ad address. Default blocks are printed in clear.

    What to do: Put the consent condition in each ad block's Cookies list (whitelist) instead of relying on a banner reading the HTML.

    Read in its code, 16 October 2026, Ad Inserter 2.8.19.

    Full detail

    With Dynamic blocks set to Client-side insert (the default), an Ad Inserter block that has a check run in the browser (cookie, URL parameter, referrer or client list, scheduling, a device selection other than all) or uses lazy, manual or delayed loading is printed with its code base64-encoded in a data-code attribute of a div (ai-dynamic, ai-lazy, ai-manual). Ad Inserter's own script decodes it and inserts it, and the inserted scripts run. A consent plugin that reads the page markup cannot see the ad network address. A block with default settings and no list is printed in clear.

  • 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

Can I use Cookie Rocks on an ad-funded site?

Yes, outside the EEA, the United Kingdom and Switzerland, and for non-personalised ads. For personalised Google ads there, use a TCF certified tool.

Where are ad plugins covered?

See ad plugins and Site Kit.

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 ad-funded sites

Know where Cookie Rocks fits before you choose.

said plainly

The free Audit shows what your ads set before any choice. The complete plugin is free 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.