Skip to content

Works with your stack

Cookie banner for an online shop

the checkout never waits

← Cookie Rocks for your stack

A shop has two kinds of cookies. Some keep the cart, the account and the payment working: they need no consent. Others record where each order comes from or feed ad pixels: they wait for a yes. The banner has to hold the second kind without ever standing between a customer and the checkout.

Cookie Rocks Pro

What Cookie Rocks Pro does for online shops

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

  • Strict payments

    An optional setting lets payment and anti-fraud scripts load without consent only on cart, checkout and account pages, and holds them everywhere else.

  • One plugin, several tools

    Some plugins load several tools from one script, like PixelYourSite or Pixel Manager for WooCommerce. Each tool waits for its own consent: allowing the Meta Pixel does not start Google or Microsoft. When consent is withdrawn, their cookies are removed, from the first visit.

    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.

  • WP Consent API

    Kept in sync on every page view, so Site Kit, WooCommerce and other plugins never read a stale choice.

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

  • Cookies a scan cannot see

    Some cookies appear only after a click, a sign-in or a payment. Cookie Rocks reads the code of your theme and plugins to find their names, and in Cookie Rocks Pro, Record a visit notes the cookies and keys your site writes while you use it.

Every feature →

What matters for consent with online shops

Cart, account and checkout

The cookies that keep the cart, the customer account and the order are necessary. They need no consent, and nothing should hold them.

Order attribution

WooCommerce notes where each visit comes from, such as a search, an ad or a newsletter, and attaches it to the order. That is marketing, and it needs consent.

Payment scripts beyond the checkout

Stripe and PayPal scripts load on product and cart pages too, for express buttons and pay-later messages, and fraud checks come with them. Under EU law, on other pages, they should wait for consent: the strict payments setting holds them there.

Protected pages

On the cart, the checkout and the customer account, payment and anti-fraud scripts load untouched. The rule depends on the page, not on the visitor, so every visitor gets the same cached page.

Pixels for shops

Meta, TikTok and Google extensions for shops add tags of their own on top of WooCommerce. Cookie Rocks holds the pixel plugins it knows until the visitor accepts marketing.

What our tests found on online shops

  • Good to know · WooCommerceThe wc key of WooCommerce is a storage test

    WooCommerce: wc is written then deleted at once (storage test), nothing stays.

    NameKept inCategoryWhat it is for
    wclocalStorageNecessaryChecks that browser storage works, deleted at once
    wcsessionStorageNecessaryChecks that browser storage works, deleted at once

    Read in its code, 4 November 2026, WooCommerce.

    Full detail

    WooCommerce cart fragments write wc = test in local and session storage and delete it in the same statement, to check that storage works. Nothing stays. The Audit 2.9.11 lists wc as an unknown key; a key written and deleted at once should not be listed.

  • Set before the choice · Pixel Manager for WooCommerceWith the WP Consent API on, Cookie Rocks holds Pixel Manager until consent

    Nothing before the choice or after a refusal; all ten pixels start at once on Accept all.

    Seen in our tests, 4 November 2026, Pixel Manager for WooCommerce 1.71.0.

    Full detail

    With the WP Consent API on, Cookie Rocks 2.9.12 held Pixel Manager for WooCommerce 1.71.0: before the choice and after Reject all, none of its ten pixels sent anything and no tracking cookie was set, _uetmsdns included. After Accept all, all ten started at once, without a reload.

See the 58 other findings
  • Set before the choice · Pixel Manager for WooCommercePixel Manager starts Google and UET before the choice, even with opt-in

    Google and UET start with denied signals before the choice (page view, client ID, _uetmsdns empty); the eight other pixels wait.

    Seen in our tests, 4 November 2026, Pixel Manager for WooCommerce 1.71.0.

    Full detail

    With the WP Consent API on, consent type optin and no choice made yet, Pixel Manager for WooCommerce 1.71.0 still loaded the Google tag for GA4 and Google Ads and sent a GA4 page view with gcs=G100, a client ID and the page address. It also loaded Microsoft UET and sent hits with asc=D, and set _uetmsdns with an empty value. Meta, TikTok, Pinterest, Snapchat, Reddit, OpenAI and Hotjar waited. After a refusal nothing more was sent; after an acceptance all ten pixels started without a reload.

  • Good to know · WooCommerceWhat WooCommerce stores in visitors' browsers

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

    NameKept inCategoryWhat it is for
    WOOCOMMERCE_CHECKOUT_IS_CUSTOMER_DATA_DIRTYlocalStorageNecessaryKeeps the shopping cart and the checkout working
    storeApiCartHashlocalStorageNecessaryKeeps the shopping cart and the checkout working
    storeApiNoncelocalStorageNecessaryKeeps the shopping cart and the checkout working
    wc_cart_createdsessionStorageNecessaryKeeps the shopping cart and the checkout working
    woocommerce_geo_hashcookieNecessaryServes the cached page that matches the visitor's country (taxes, shipping)
    woo-sharecookieNecessaryLets a visitor with a share link see a store that is not launched yet
    tk_aicookieStatisticsAnonymous identifier for WooCommerce usage statistics (Automattic Tracks)
    tk_lrcookieStatisticsAutomattic Tracks usage statistics (referrer)
    tk_orcookieStatisticsAutomattic Tracks usage statistics (original referrer)
    tk_r3dcookieStatisticsAutomattic Tracks usage statistics
    tk_tccookieStatisticsAutomattic Tracks usage statistics (session)

    Read in its code, 2 November 2026, WooCommerce.

    Full detail

    WooCommerce can store 11 cookies or browser keys for visitors: WOOCOMMERCE_CHECKOUT_IS_CUSTOMER_DATA_DIRTY, storeApiCartHash, storeApiNonce, wc_cart_created, woocommerce_geo_hash, woo-share, tk_ai, tk_lr, tk_or, tk_r3d, tk_tc. Cookie Rocks recognises them from 2.9.8 and lists them in the cookie policy, each with its category and purpose, when it sees them.

  • Good to know · WooPaymentsWhat WooPayments stores in visitors' browsers

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

    NameKept inCategoryWhat it is for
    wcpay_express_checkout_redirect_urlcookieNecessaryKeeps an express payment going
    skip_woopaycookieNecessaryKeeps an express payment going

    Read in its code, 2 November 2026, WooPayments.

    Full detail

    WooPayments can store these in a visitor's browser: wcpay_express_checkout_redirect_url (cookie, necessary: Keeps an express payment going); skip_woopay (cookie, necessary: Keeps an express payment going). 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 · WooCommerce Stripe Payment GatewayWhat WooCommerce Stripe Payment Gateway stores in visitors' browsers

    WooCommerce Stripe Payment Gateway: 1 cookie(s) or browser key(s) for visitors, recognised by Cookie Rocks from 2.9.8.

    NameKept inCategoryWhat it is for
    wc_stripe_express_checkout_redirect_urlcookieNecessaryKeeps an express payment (Apple Pay, Google Pay) going

    Read in its code, 2 November 2026, WooCommerce Stripe Payment Gateway.

    Full detail

    WooCommerce Stripe Payment Gateway can store these in a visitor's browser: wc_stripe_express_checkout_redirect_url (cookie, necessary: Keeps an express payment (Apple Pay, Google Pay) going). 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 · WooCommerce PayPal PaymentsWhat WooCommerce PayPal Payments stores in visitors' browsers

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

    NameKept inCategoryWhat it is for
    axoEnvlocalStorageNecessaryKeeps the PayPal fast checkout (Fastlane) going
    axoOriginalCheckoutFieldslocalStorageNecessaryKeeps the PayPal fast checkout (Fastlane) going

    Read in its code, 2 November 2026, WooCommerce PayPal Payments.

    Full detail

    WooCommerce PayPal Payments can store these in a visitor's browser: axoEnv (localStorage, necessary: Keeps the PayPal fast checkout (Fastlane) going); axoOriginalCheckoutFields (localStorage, necessary: Keeps the PayPal fast checkout (Fastlane) going). 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 · Facebook for WooCommerceWhat Facebook for WooCommerce stores in visitors' browsers

    Facebook for WooCommerce: 1 cookie(s) or browser key(s) for visitors, recognised by Cookie Rocks from 2.9.8.

    NameKept inCategoryWhat it is for
    wc_facebook_signals_seen_event_idssessionStorageMarketingAvoids sending the same event twice to Meta

    Read in its code, 2 November 2026, Facebook for WooCommerce.

    Full detail

    Facebook for WooCommerce can store these in a visitor's browser: wc_facebook_signals_seen_event_ids (session, marketing: Avoids sending the same event twice to Meta). 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 RocksCookie Rocks 2.9.5 tested on PHP, WooCommerce and multisite
    • No PHP error on PHP 7.4 and 8.3.
    • WooCommerce cart and checkout work before and after the choice.
    • Multisite: settings, choice cookie and tables per site.
    • Uninstall removes options, tables, task and files.

    Seen in our tests, 1 November 2026, Cookie Rocks.

    Full detail

    Cookie Rocks 2.9.5 with the Audit and Pro showed no PHP error on PHP 7.4 and 8.3. On WooCommerce, cart and checkout work before and after the choice, and strict payments keep Stripe out of other pages only. On a multisite network, settings, the choice cookie (cr_consent_2) and tables are per site, including sites created later. Uninstall removes options, tables, the scheduled task and files.

  • Set before the choiceCookie Rocks Pro holds both Meta plugins, server cookies included

    No _fbp or _fbc cookie is set and nothing goes to Meta before the choice. After consent, the held events are released once, without a reload.

    Seen in our tests, 18 October 2026.

    Full detail

    With Cookie Rocks Pro, Meta Pixel for WordPress and Meta for WooCommerce set no _fbp or _fbc cookie from the server for a new visitor, even with fbclid in the address, and the page makes no request to facebook.com or connect.facebook.net before the choice, fbevents.js included. After Accept all or allowing the Meta Pixel service alone, the held events were released without a reload: one fbq('init'), a PageView, and _fbp, _fbc and wc_facebook_signals_state=active set by the page.

  • Set before the choiceCookie Rocks releases held Meta events on the same page after consent

    The queued page view is sent, _fbp (and _fbc with fbclid) is set and the pixel starts once, without a reload. On next pages the server still sets no Meta cookie.

    Seen in our tests, 18 October 2026.

    Full detail

    After Accept all, or after allowing the Meta Pixel alone, Cookie Rocks releases the held events of Meta Pixel for WordPress and Meta for WooCommerce on the same page, without a reload: the queued PageView is sent, _fbp (and _fbc with fbclid) is set, and fbq('init') runs once. On the next pages the server still sets no _fbp or _fbc cookie.

  • Set before the choiceWithdrawing consent removes Meta cookies set by both Meta plugins

    With both Meta plugins, CookieRocks.rejectAll() after Accept all reloaded the page, removed _fbp and _fbc, and no request went to Meta afterwards.

    Seen in our tests, 18 October 2026.

  • Good to knowWithdrawing consent removes Meta cookies and the signal state cookie

    After Reject all, the page reloaded and removed _fbp, _fbc and wc_facebook_signals_state. Only the consent cookie stayed, and nothing went to Meta afterwards.

    Seen in our tests, 18 October 2026.

    Full detail

    With Meta Pixel for WordPress or Meta for WooCommerce, CookieRocks.rejectAll() after Accept all reloaded the page and removed _fbp, _fbc and wc_facebook_signals_state; only the consent cookie stayed on the site and no request went to Meta afterwards. On a plain page without a Meta plugin, the purge list of the page (crConfig.pg) is absent.

  • Sent from your server · Facebook for WooCommerceFacebook for WooCommerce sets _fbp and _fbc from the server unless held

    Holding comes from a filter or a cookie. While held, events wait and no cookie is set; a release sends them and the page then sets _fbp and _fbc.

    Read in its code, 18 October 2026, Facebook for WooCommerce 3.7.8. Source

    Full detail

    Facebook for WooCommerce sets _fbp and _fbc from the server with setcookie() when they are missing, before any choice, unless its signals are held. The held state comes from the PHP filter facebook_signals_held (since 3.6.0) or the cookie wc_facebook_signals_state. While held, events are queued and no cookie is set; window.fbwcsignal.release() then sends the queue, and the page sets _fbp and _fbc from the values returned by the server.

  • Depends on a setting · Meta for WooCommerceMeta for WooCommerce releases held events with matching event IDs

    The server and browser page views share one event ID. Without an access token, the release fails and nothing is released.

    Seen in our tests, 18 October 2026, Meta for WooCommerce 3.7.8.

    Full detail

    When Meta for WooCommerce releases held events (POST to admin-ajax, action facebook_release_signals), the PageView it sends to its server carries the same event ID as the PageView the browser sends to facebook.com/tr. Without an access token, the release request fails with 'Plugin not configured.' and nothing is released.

  • Good to know · Meta for WooCommerceMeta for WooCommerce release can delay the pixel by several seconds

    Without an access token nothing is released. With one, the pixel started 7 to 19 seconds after the click in our tests.

    Seen in our tests, 18 October 2026, Meta for WooCommerce 3.7.8.

    Full detail

    Meta for WooCommerce releases held events only when it has an access token: without one, the release request answers 'Plugin not configured.' and nothing is released. With a token, its admin-ajax release waits for Meta's Conversions API before answering, so the pixel started 7 to 19 seconds after the click in our tests.

  • Good to know · Meta for WooCommerceMeta for WooCommerce release can fail on pages cached too long

    It sends a WordPress security code that expires after 12 to 24 hours, so the release is refused on a page cached longer than that.

    Read in its code, 18 October 2026, Meta for WooCommerce 3.7.8.

    Full detail

    window.fbwcsignal.release() sends a WordPress nonce printed in the page (security parameter, checked with check_ajax_referer). A WordPress nonce expires after 12 to 24 hours, so on a page served from a cache older than that the release request is refused: this public release API is fragile with page caches.

  • Set before the choice · Pixel Manager for WooCommerceCookie Rocks holds all of Pixel Manager for WooCommerce until marketing consent

    In the test, none of its ten pixels loaded before the choice. Allowing Meta Pixel alone loaded none of them, Meta included.

    Seen in our tests, 18 October 2026, Pixel Manager for WooCommerce 1.70.0.

    Full detail

    Cookie Rocks holds the script of Pixel Manager for WooCommerce (pmw-public.p1.min.js) and its pmwDataLayer settings under one service, pixel-manager-for-woocommerce, in the marketing category. In the test, nothing from the ten pixels set up in Pixel Manager loaded before the choice, and allowing the Meta Pixel service alone loaded none of them, Meta included.

  • Depends on a setting · Pixel Manager for WooCommerceCookie Rocks passes the choice to Pixel Manager without a reload

    In the test, Accept all started all ten pixels without a reload, with or without the WP Consent API plugin, and again on the next page.

    Seen in our tests, 18 October 2026, Pixel Manager for WooCommerce 1.70.0.

    Full detail

    Without the WP Consent API plugin, Cookie Rocks adds a relay to the inline script pmw-js-before that sends its choice to Pixel Manager for WooCommerce through the wp_listen_for_consent_change event. In the test, Accept all started all ten pixels set up in Pixel Manager without a reload, and all ten started again on the next page view. With the WP Consent API plugin installed, the relay was not added and Accept all also started all ten without a reload.

  • Depends on a setting · Pixel Manager for WooCommerceWithdrawing marketing stops Pixel Manager's pixels at once

    Cookie Rocks sent deny right away: Pixel Manager set its consent to false and Google got denied signals. On the next page none of the ten pixels loaded.

    Seen in our tests, 18 October 2026, Pixel Manager for WooCommerce 1.70.0.

    Full detail

    When the visitor withdrew marketing after Accept all, Cookie Rocks sent deny to Pixel Manager for WooCommerce at once: Pixel Manager set its statistics, marketing and preferences consent to false, and Google Consent Mode updates with ad_storage and analytics_storage denied were pushed to dataLayer. On the next page none of the ten pixels loaded.

  • Depends on a setting · Pixel Manager for WooCommerceStatistics-only consent starts GA4 but keeps Pixel Manager held

    The hard-coded GA4 tag loaded without a reload. Pixel Manager stayed held as marketing, so its own GA4 and pixels did not load.

    Seen in our tests, 18 October 2026, Pixel Manager for WooCommerce 1.70.0.

    Full detail

    On a page with Pixel Manager for WooCommerce and a hard-coded GA4 tag, a visitor who saved statistics only got the hard-coded GA4 tag without a reload: gtag.js, a /g/collect hit and the _ga cookies. Pixel Manager stayed held as a marketing service, so its own GA4 and its marketing pixels did not load, and it received statistics allow, marketing deny through the relay.

  • Set before the choice · Pixel Manager for WooCommerceWithdrawing marketing erases Pixel Manager's cookies on the site

    The page reloaded and every first-party cookie of the ten pixels was removed, even on a first visit. Cookies on the providers' own domains are out of reach of a site script.

    Seen in our tests, 18 October 2026, Pixel Manager for WooCommerce 1.70.0.

    Full detail

    Withdrawing marketing after Accept all reloaded the page and removed every first-party cookie set by the ten pixels of Pixel Manager for WooCommerce, including _rdt_uuid, __oaiq_consent and __obref, even on the very first page view of a new site. Only the consent cookie of Cookie Rocks stayed on the site; cookies on the providers' own domains are out of reach of a site script.

  • Good to know · Pixel Manager for WooCommercePixel Manager for WooCommerce starts all its pixels from two scripts

    One inline script holds every pixel ID and one local script loads a part per pixel. In a test, ten pixels started this way, with no separate tag per service.

    Seen in our tests, 18 October 2026, Pixel Manager for WooCommerce 1.70.0.

    Full detail

    Pixel Manager for WooCommerce (free) prints one inline script, window.pmwDataLayer, that holds the IDs of every pixel set up in the plugin, and one local script, pmw-public.p1.min.js, that loads a chunk per pixel. In a test with ten pixels set up (GA4, Google Ads, Meta, Microsoft UET, TikTok, Pinterest, Snapchat, Reddit, OpenAI, Hotjar), all ten started from these two scripts. The page has no separate script tag per service.

  • Good to know · Pixel Manager for WooCommercePixel Manager loads no pixel for automated browsers and known bots

    A default headless scan therefore sees none of its pixels, although real visitors get them.

    Seen in our tests, 18 October 2026, Pixel Manager for WooCommerce 1.70.0.

    Full detail

    Pixel Manager for WooCommerce loads no browser pixel when navigator.webdriver is true or when the user agent matches its bot list (Googlebot, bingbot and others). An automated scan with a default headless browser therefore sees none of its pixels, although real visitors get them.

  • Depends on a setting · Microsoft ClarityClarity's Brand Agents loads a Microsoft script and sets a cookie on stores

    setting “Brand Agents” · by default: not connected

    With Brand Agents connected and front-end injection on, a script loads from an Azure address on every front page for visitors not logged in. On WooCommerce stores, brandagent_attrs is set for 2 hours.

    Read in its code, 16 October 2026, Microsoft Clarity 0.10.35.

    Full detail

    With Brand Agents connected and front-end injection on, the Microsoft Clarity plugin loads a script module from adsagentclientafd-b7hqhjdrf3fpeqh2.b01.azurefd.net on every front page for visitors who are not logged in. On WooCommerce stores, a REST endpoint called by that script sets the brandagent_attrs cookie for 2 hours (session, customer and conversation IDs, Clarity data, language, currency, country).

  • Set before the choice · KlaviyoKlaviyo sends checkout details to Klaviyo even when its addresses are held

    On the WooCommerce checkout, scripts served by the site set __kla_id (email and name, 2 years) and send profile data when the email or name is typed, or on load for logged-in customers.

    Read in its code, 16 October 2026, Klaviyo 3.8.3.

    Full detail

    On the WooCommerce checkout, wck-started-checkout.js (classic) and includes/blocks/build/events.js (block checkout), both served by the site, set the __kla_id cookie (base64 of email, first and last name, 2 years) and POST profile and Started Checkout data to a.klaviyo.com/client/profiles/ and client/events/ without klaviyo.js: on load for a logged-in customer, otherwise when the email or name is typed. Holding Klaviyo's own addresses does not stop them.

  • Sent from your server · KlaviyoKlaviyo's server sends Added to Cart events while __kla_id exists

    Without the cookie nothing is sent, so removing __kla_id on withdrawal stops it.

    Read in its code, 16 October 2026, Klaviyo 3.8.3.

    Full detail

    When a product is added to the cart and the __kla_id cookie is present, the Klaviyo plugin's server sends an Added to Cart event to a.klaviyo.com/client/events/ (wp_remote_post). Without the cookie nothing is sent, so removing __kla_id on withdrawal stops it.

  • Sent from your server · Matomo for WordPressMatomo for WordPress sends WooCommerce carts and orders from the server

    setting “Track ecommerce” · by default: on

    With Track ecommerce on (default), carts and orders are sent from PHP in some cases, with no consent check. A browser-side consent signal does not hold these hits. The server tracker sets no cookie.

    Read in its code, 16 October 2026, Matomo for WordPress 5.13.1.

    Full detail

    With Track ecommerce on (default), Matomo for WordPress sends WooCommerce carts and orders from PHP during AJAX or REST requests, in Tag Manager mode, or with MATOMO_TRACK_ECOMMERCE_SERVER_SIDE, with no consent check in that code; the PHP tracker sets no cookie but reads _pk_id. A browser-side consent signal does not hold these hits. Use server generated Visitor ID (off by default) starts the WooCommerce session for visitors without _pk_id.

  • Sent from your server · Mailchimp for WooCommerceMailchimp for WooCommerce sends the typed email to the site before any order

    setting “Cart tracking” · by default: all

    With cart tracking on (the default), leaving the email field sets mailchimp.cart.current_email and sends the address to the site. The server then passes cart data to Mailchimp.

    Read in its code, 16 October 2026, Mailchimp for WooCommerce 6.3.

    Full detail

    With cart tracking on (all, by default), Mailchimp for WooCommerce's site script sets the session cookie mailchimp.cart.current_email when the visitor leaves the email field at checkout, login or registration, then sends the address to admin-ajax.php?action=mailchimp_set_user_by_email, before any order. The server then passes cart data to Mailchimp's API.

  • Sent from your server · Mailchimp for WooCommerceMailchimp for WooCommerce sets 28-day cookies that banners cannot hold
    • mailchimp_campaign_id and mailchimp_email_id when the visitor arrives with ?mc_cid= or ?mc_eid=.
    • mailchimp_user_email, mailchimp_user_previous_email and mailchimp_cart_token for cart recovery.
    • mailchimp_landing_site on the first page, only if landing page tracking is on (off by default).
    • All go through the mailchimp_allowed_to_use_cookie filter.

    Read in its code, 16 October 2026, Mailchimp for WooCommerce 6.3.

    Full detail

    Mailchimp for WooCommerce sets its cookies from PHP for 28 days (2 419 200 s, Secure, SameSite=Strict): mailchimp_campaign_id and mailchimp_email_id when a visitor arrives with ?mc_cid= or ?mc_eid=, mailchimp_user_email, mailchimp_user_previous_email and mailchimp_cart_token (HttpOnly) for cart recovery, and mailchimp_landing_site on the first page only if landing page tracking is on (off by default). A consent plugin cannot hold them; all go through the mailchimp_allowed_to_use_cookie filter.

  • Sent from your server · OptinMonsterOptinMonster sends order revenue from the server using the _omra cookie

    setting “Revenue Attribution”

    With Revenue Attribution on, OptinMonster's server reads the _omra cookie at a WooCommerce or EDD order and sends the revenue to the OptinMonster API (v2/revenue). If _omra survives a refusal, sending continues.

    Read in its code, 16 October 2026, OptinMonster 2.17.1.

  • Sent from your server · WooCommerceWooCommerce geolocation can send the visitor's IP to an outside lookup site

    setting “Default customer location”

    When it needs the country and no MaxMind key or CDN header gives it, the server asks ipinfo.io or api.country.is. With page caching support, woocommerce_geo_hash is set for 1 hour.

    Read in its code, 16 October 2026, WooCommerce 11.2.1.

    Full detail

    When WooCommerce needs the visitor's country (default customer location set to Geolocate, or taxes by geolocation) and neither a MaxMind key nor a CDN country header gives it, its server looks the country up at ipinfo.io or api.country.is, sending the visitor's IP address. With Geolocate (with page caching support), it sets woocommerce_geo_hash for 1 hour from the first page and adds a v= parameter to addresses.

  • Good to know · WooCommerceWooCommerce attribution cookies are session cookies, except sbjs_session

    sbjs_session lasts 30 minutes. The cookies are set on the domain without www., while WooCommerce's removal on withdrawal uses the full host name.

    Read in its code, 16 October 2026, WooCommerce 11.2.1.

    Full detail

    WooCommerce passes a lifetime of 0.00001 month to its sourcebuster library, which converts and truncates it to 0 minutes: the sbjs_ attribution cookies are session cookies, except sbjs_session (30 minutes). sourcebuster sets them on the host name without www. (domain=.<domain>), while WooCommerce's own removal on withdrawal uses domain=.<hostname>.

  • Good to know · WooPaymentsWooPayments checkout computes a device ID and uses cookies and browser storage
    • A FingerprintJS device ID is sent with the payment for fraud checks.
    • Sets skip_woopay (1 day) and keeps wcpay_appearance_<context> in local storage.
    • With Sift in the fraud setup, it creates cdn.sift.com/s.js itself, outside the page HTML.
    • Block checkout keeps woopay_preferred_card (card brand, last 4 digits) in local storage.

    Read in its code, 16 October 2026, WooPayments 11.2.0.

    Full detail

    WooPayments' checkout bundle (served by the site) computes a FingerprintJS device ID sent with the payment for fraud checks, with monitoring off (no call to openfpcdn.io); it sets and deletes a cookietest cookie, keeps wcpay_appearance_<context> in localStorage and reads or sets skip_woopay (1 day). When the account's fraud configuration includes Sift, the same bundle creates <script src="https://cdn.sift.com/s.js"> itself, so it is not in the page HTML. The block checkout also stores woopay_preferred_card (card brand and last 4 digits) in localStorage; multi-currency keeps wcpay_mc_async_config in sessionStorage for 5 minutes. It does not read WP Consent API.

  • Sent from your server · WooPaymentsWooPayments sends shopper events from the server for US stores

    setting “wcpay_shopper_tracking_enabled (filter) ; WooCommerce usage tracking” · by default: off

    Only with WooCommerce usage tracking allowed, mostly when WooPay is on. The anonymous ID is a tk_ai session cookie set by the server. No banner can hold a server-side call.

    Read in its code, 16 October 2026, WooPayments 11.2.0.

    Full detail

    WooPayments sends shopper Tracks events from the server to pixel.wp.com (wp_remote_get), only for stores in the United States with WooCommerce usage tracking allowed, mostly when WooPay is on; it respects a tk_opt-out cookie. The anonymous ID is a tk_ai session cookie set in PHP. No banner can hold a server-side call.

  • Set before the choice · WooPaymentsWooPayments loads Stripe.js on product, cart and checkout pages by default

    setting “Express checkout locations” · by default: product, cart, checkout

    Its default Apple Pay, Google Pay, WooPay and Amazon Pay buttons show on those pages, so Stripe.js runs there, but not on the home page or posts.

    Read in its code, 16 October 2026, WooPayments 11.2.0.

    Full detail

    WooPayments loads Stripe.js (js.stripe.com/v3) at checkout and pay-for-order, and on product and cart pages when express buttons or pay-later messages (Affirm, Afterpay, Klarna) are shown there. Its defaults offer Apple Pay and Google Pay, WooPay and Amazon Pay buttons on product, cart and checkout pages, so Stripe.js runs on those pages; not on the home page or posts. It uses the same script handle as the Stripe extension to avoid loading it twice.

  • Set before the choice · WooCommerce Stripe Payment GatewayWooCommerce Stripe loads Stripe.js on product, cart and checkout by default
    • Not on the home page, posts or shop.
    • On product and cart pages it loads even when express buttons are off there.
    • With express buttons, it adds early connections to four Stripe hosts.
    • An express redirect sets wc_stripe_express_checkout_redirect_url (10 minutes).

    Read in its code, 16 October 2026, WooCommerce Stripe Payment Gateway 11.1.1.

    Full detail

    The Stripe extension for WooCommerce loads Stripe.js (js.stripe.com) on product, cart, checkout, pay-for-order and add-payment-method pages by default, not only at checkout, and never on the home page, posts or shop. On product and cart pages it still loads when express buttons are off there, because two filters (wc_stripe_load_scripts_on_product_page_when_prbs_disabled and the cart one) default to true. When express buttons show, it adds preconnect hints to js.stripe.com, m.stripe.network, q.stripe.com and b.stripecdn.com in the head, and sets wc_stripe_express_checkout_redirect_url (10 minutes) on an express redirect. Its shop bundles write no cookie or localStorage.

  • Set before the choice · WooCommerce PayPal PaymentsPayPal Payments always loads PayPal's FraudNet script where its buttons are

    In 4.1.3 a site script creates c.paypal.com/da/r/fb.js at checkout and on product, cart and pay pages with buttons. Optional reCAPTCHA (off by default) loads Google there. No consent setting.

    Read in its code, 16 October 2026, WooCommerce PayPal Payments 4.1.3.

    Full detail

    PayPal Payments always loads FraudNet in version 4.1.3 (the enabled check returns true): fraudnet.js, served by the site, creates a JSON config tag and <script src="https://c.paypal.com/da/r/fb.js"> at the page load event, at checkout whenever a PayPal method is active and on product, cart and pay pages where buttons are; its session ID is kept in the WooCommerce session. Its optional reCAPTCHA protection (off by default) loads www.google.com/recaptcha/api.js where buttons are. It has no consent setting and does not read WP Consent API.

  • Set before the choice · WooCommerce PayPal PaymentsPayPal Payments loads the PayPal SDK by script on product, cart and checkout

    setting “Button and Pay Later locations” · by default: product, cart, checkout

    The SDK is not a tag in the HTML. Pay Later messages load it in 8 countries, and on home and shop pages only if turned on. Mini-cart buttons (off by default) load it on every page.

    Read in its code, 16 October 2026, WooCommerce PayPal Payments 4.1.3.

    Full detail

    WooCommerce PayPal Payments does not print the PayPal SDK as a tag: its own button.js (served by the site) creates www.paypal.com/sdk/js from an address in its localized data. After setup, buttons are on product, cart and checkout pages, so the SDK loads there; Pay Later messages load it on product, cart and checkout pages in 8 countries (US, DE, GB, FR, AU, IT, ES, CA), and on home and shop pages only if turned on. Mini-cart buttons (off by default) load it on every page.

  • Depends on a setting · Meta for WooCommerceMeta for WooCommerce can hold Pixel events, but fbevents.js still loads

    setting “facebook_signals_held (filter)” · by default: active

    A consent plugin can hold the Pixel and Conversions API events, then release them. While held, no _fbp or _fbc is written and events are queued. It does not read WP Consent API.

    Read in its code, 16 October 2026, Meta for WooCommerce 3.7.8.

    Full detail

    Meta for WooCommerce can hold Pixel and Conversions API events until consent: signals are active by default (no wc_facebook_signals_state cookie), and a consent plugin holds them with the PHP filter facebook_signals_held or window.fbwcsignal.hold(), then window.fbwcsignal.release(). While held, PHP writes no _fbp or _fbc, fbq('consent','revoke') is sent and events are queued, but fbevents.js still loads. The state cookie lasts 1 year. It does not read WP Consent API.

  • Good to know · Meta for WooCommerceMeta for WooCommerce prints the Pixel code directly in the page head

    Nothing loads without a Meta connection and pixel ID. It keeps sent event IDs in sessionStorage and adds a facebook.com/tr image for browsers without JavaScript.

    Read in its code, 16 October 2026, Meta for WooCommerce 3.7.8.

    Full detail

    Meta for WooCommerce prints the Pixel as an inline snippet in wp_head that starts with if(f.fbq)return;, so a fbq function defined before it stops fbevents.js from loading. It keeps sent event IDs in sessionStorage wc_facebook_signals_seen_event_ids, adds a facebook.com/tr noscript image, and lets the filter wc_facebook_pixel_script_attributes change the script tag attributes. Nothing loads without a Meta connection and pixel ID.

  • Sent from your server · Meta for WooCommerceMeta for WooCommerce sets _fbp from the server; blocking scripts cannot stop it

    On a visitor's first page it sets _fbp (90 days), and _fbc when the visitor arrives with ?fbclid=. It also loads Meta's Param Builder on every page, which writes both unless signals are held.

    Read in its code, 16 October 2026, Meta for WooCommerce 3.7.8.

    Full detail

    When the shop is connected to Meta and signals are not held, Meta for WooCommerce sends Set-Cookie _fbp (90 days) from PHP on a visitor's first page, and _fbc when the visitor arrives with ?fbclid=. A consent plugin that only blocks scripts cannot stop it. It also loads Meta's Param Builder from cdn.jsdelivr.net (fallback unpkg.com) on every page, which writes _fbp and _fbc on the root domain unless wc_facebook_signals_state=held.

  • Depends on a setting · Google for WooCommerceGoogle for WooCommerce enhanced conversions print the address in clear text

    setting “Enhanced conversions” · by default: off

    Off by default. When on, each page of a known customer prints the email, names and phone hashed, but the street, city, postal code and country in clear text.

    Read in its code, 16 October 2026, Google for WooCommerce 3.9.6.

    Full detail

    With Google for WooCommerce's enhanced conversions on (off by default), every page of a known customer's session prints gtag('set','user_data') with the email, first name, last name and phone hashed (SHA-256), but the street, city, region, postal code and country in clear text in the HTML.

  • Set before the choice · Mailchimp for WooCommerceMailchimp for WooCommerce loads Mailchimp scripts on every page by default

    setting “Mailchimp script” · by default: on

    Mailchimp's site snippet and pixel load on every page, and a logged-in customer's email is written into the page for identification. No WP Consent API or Google consent code.

    Read in its code, 16 October 2026, Mailchimp for WooCommerce 6.3.

    Full detail

    Mailchimp for WooCommerce prints Mailchimp's connected-site snippet (chimpstatic.com/mcjs-connected) inline in wp_footer on every page by default (option mailchimp-woocommerce-code-snippet, filter mailchimp_add_inline_footer_script). The Mailchimp pixel scripts are enqueued on every page unless MAILCHIMP_PIXEL_ENABLED is false, and the logged-in customer's email is written into window.mcPixel for identification. No WP Consent API or Consent Mode code.

  • Good to know · WooCommerceWooCommerce block cart and checkout use the browser's local storage

    They keep storeApiNonce, storeApiCartData and storeApiCartHash, plus one more key on the checkout page. The classic checkout keeps nothing there.

    Seen in our tests, 15 October 2026, WooCommerce 11.2.1.

    Full detail

    The WooCommerce block cart and block checkout keep storeApiNonce, storeApiCartData and storeApiCartHash in the browser's local storage, plus WOOCOMMERCE_CHECKOUT_IS_CUSTOMER_DATA_DIRTY on the checkout page. The classic checkout keeps nothing in local storage.

  • Set before the choice · WooCommerceWooCommerce cart cookies are necessary and never held

    by default: Default settings

    Browsing sets no cookie. Adding a product sets woocommerce_items_in_cart, woocommerce_cart_hash and wp_woocommerce_session_* before any choice; they keep the cart.

    Seen in our tests, 15 October 2026, WooCommerce 11.2.1.

    Full detail

    Browsing a WooCommerce shop sets no cookie. Adding a product to the cart sets woocommerce_items_in_cart, woocommerce_cart_hash and wp_woocommerce_session_* before any choice. They keep the cart, so they are necessary cookies and Cookie Rocks never holds them.

  • Good to know · WooCommerceWooCommerce checkout works after Reject all or Accept all

    With Cookie Rocks, orders go through with the WooCommerce block checkout and the classic checkout alike, after Reject all or Accept all, with no error and no request to another site.

    Seen in our tests, 15 October 2026, WooCommerce 11.2.1.

  • Good to know · WooCommerceCookie Rocks is not flagged as incompatible with WooCommerce order storage

    setting “HPOS”

    With WooCommerce's order storage (HPOS) on, WooCommerce only judges extensions that declare they target WooCommerce: Cookie Rocks, which declares nothing, is not listed as incompatible, and no declaration is needed.

    Seen in our tests, 10 October 2026, WooCommerce.

  • Set before the choice · WooCommerceWooCommerce order attribution sets seven cookies on arrival, before any choice

    setting “Order attribution” · by default: on

    Without a consent integration, the sbjs_ cookies are set as soon as the visitor arrives and stay after a refusal.

    Seen in our tests, 9 October 2026, WooCommerce 11.2.

    Full detail

    Without a consent integration, WooCommerce order attribution sets seven sbjs_ cookies (sbjs_migrations, sbjs_current_add, sbjs_first_add, sbjs_current, sbjs_first, sbjs_udata, sbjs_session) as soon as the visitor arrives, before any choice, and they stay after a refusal.

Questions

Does refusing cookies stop a customer from buying?

No. The cart, the checkout and the payment work with necessary cookies only. A visitor who refuses everything can still place an order.

Do express buttons still show?

With strict payments on, one-click buy buttons on product pages may not show to visitors who refuse cookies. At checkout, payment always works.

What happens to pixel cookies when a customer changes their mind?

Cookie Rocks erases the marketing cookies of the pixel plugins it knows from your site and stops their pixels at once.

Which shop plugins have their own page?

See WooCommerce, payment plugins and ad pixel 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 online shops

Consent that never stands between a customer and the checkout.

the checkout never waits

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.