Works with your stack
Cookie consent for ad pixel plugins
the server goes first
Ad pixel plugins add the Meta or TikTok pixel to your pages. The pixel is advertising, so it waits for the visitor’s yes. Many of these plugins also send cookies or events from your server, and no banner can hold that part.

Ad pixel plugins, one by one
The plugins
- Meta Pixel for WordPress and Meta for WooCommerce
- Both write Meta cookies from your server unless they are held. Their held state stops the server cookies and queues events until consent. Meta Pixel.
- Pixel Caffeine
- Prints the Meta pixel on every page with no consent setting. Its optional server events have no consent check.
- TikTok for Business
- Cookie Rocks holds the TikTok Pixel until consent. With an account connected, page views also go to TikTok from your server.
What matters for consent with Ad pixel plugins
The pixel is advertising
A Meta or TikTok pixel tracks visitors for ads. It needs marketing consent before it loads.
Your server can go first
Some of these plugins write ad cookies or send events from your server, with the page itself. A banner runs in the browser, after that. Only a setting in the plugin can stop it.
No consent setting
None of these plugins has a consent setting the visitor’s choice can switch by itself. A hold switch, when there is one, has to be used by a consent plugin.
Server events are optional
Conversions API and Events API features send data to Meta or TikTok from your server. Leave them off unless the plugin can hold them until consent.
What our tests found on Ad pixel plugins
Good to know · Meta Pixel for WordPressWhat Meta Pixel for WordPress stores in visitors' browsers
Meta Pixel for WordPress: 1 cookie(s) or browser key(s) for visitors, recognised by Cookie Rocks from 2.9.8.
Name Kept in Category What it is for fbpix_seen_event_idssessionStorage Marketing Avoids sending the same event twice to Meta Read in its code, 2 November 2026, Meta Pixel for WordPress.
Full detail
Meta Pixel for WordPress can store these in a visitor's browser: fbpix_seen_event_ids (sessionStorage, 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 · 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.
Name Kept in Category What it is for wc_facebook_signals_seen_event_idssessionStorage Marketing Avoids 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.
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.
See the 20 other findings
Good to know · Meta Pixel for WordPressCookie Rocks gives held Meta page views one shared event ID
With Meta Pixel for WordPress, the browser and server events carry the same ID starting with cr, on the first page and the next one.
Seen in our tests, 18 October 2026, Meta Pixel for WordPress 5.2.2.
Full detail
With Cookie Rocks Pro and Meta Pixel for WordPress, the held PageView gets an event ID starting with cr. After Accept all, the same ID was carried by the browser PageView (facebook.com/tr), by the event in the plugin's fbpix_release_signals request and by its Open Bridge request (?ob=open-bridge/events), on the first page and on the next one.
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.
Good to know · Meta Pixel for WordPressMeta Pixel for WordPress contacts only Meta
It loads fbevents.js and its own signal file, then fetches more files from connect.facebook.net. No other provider was contacted.
Seen in our tests, 18 October 2026, Meta Pixel for WordPress 5.2.2.
Full detail
Meta Pixel for WordPress loads only Meta services in the browser: an inline base code that loads connect.facebook.net/en_US/fbevents.js, an inline FacebookSignal.init call and the local file facebook_signal.js. Once started it also fetched signals/plugins/openbridge3.js and signals/config from connect.facebook.net. No other provider was contacted.
Good to know · Meta Pixel for WordPressMeta Pixel for WordPress sets a PHPSESSID cookie through Open Bridge
Once the pixel runs, Meta Pixel for WordPress sends each event to the site itself through Open Bridge (POST to ?ob=open-bridge/events), and the response to that request sets a PHPSESSID session cookie.
Seen in our tests, 18 October 2026, Meta Pixel for WordPress 5.2.2.
Depends on a setting · Meta Pixel for WordPressMeta Pixel for WordPress release can count a page view twice
Released events reach the server without the browser's event ID, so Meta cannot match them. This happens with any consent tool that uses the plugin's release.
Seen in our tests, 18 October 2026, Meta Pixel for WordPress 5.2.2.
Full detail
When Meta Pixel for WordPress releases held events through admin-ajax (action fbpix_release_signals), the PageView sent to its server has no event ID, while the browser PageView carries an Open Bridge ID (ob3_plugin-set_...). The plugin's Open Bridge request to the site (?ob=open-bridge/events) carries the browser's event ID, and its response sets a PHPSESSID cookie. Without a shared ID the Conversions API cannot match the two PageViews, so the page view can be counted twice, with any consent tool that uses the plugin's release.
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 · Pixel CaffeinePixel Caffeine is closed on WordPress.org and gets no updates
Pixel Caffeine is closed on WordPress.org since 30 November 2021 at the author's request and can no longer be downloaded there. Sites that still run it use a copy that gets no updates from the directory.
Seen in our tests, 18 October 2026, Pixel Caffeine.
Sent from your server · Meta Pixel for WordPressMeta Pixel for WordPress sets _fbp and _fbc from the server before the choice
The server sets these Meta cookies before any choice, even with no pixel ID, so holding the scripts in the page does not stop them. Only the plugin's hold state does.
What to do: A consent banner can keep wc_facebook_signals_state=held (window.fbwcsignal.hold()) until marketing consent.
Read in its code, 17 October 2026, Meta Pixel for WordPress 5.2.2.
Full detail
Meta Pixel for WordPress sets _fbp and _fbc (90 days) from the server, with a Set-Cookie header, on any page where they are missing, before any choice, even with no pixel ID checked. Holding scripts in the page does not stop it. Its hold state stops this Set-Cookie: the PHP filter facebook_signals_held or the cookie wc_facebook_signals_state=held; release() then sends the queued events and sets the cookies.
Good to know · TikTok for BusinessCookie Rocks holds the TikTok for Business pixel until consent
After Accept all it sets _ttp and keeps tt_sessionId, tt_pixel_session_index and tt_appInfo in session storage.
Seen in our tests, 17 October 2026, TikTok for Business 1.4.2. Source
Full detail
The TikTok for Business pixel (analytics.tiktok.com events.js, test pixel code, no TikTok account) is held by Cookie Rocks until consent; after Accept all it sets _ttp and keeps tt_sessionId, tt_pixel_session_index and tt_appInfo in session storage.
Set before the choice · Meta pixel for WordPressMeta pixel for WordPress sets _fbp from the server before any choice
_fbp (90 days) is set on the first page, and _fbc (90 days) when the address has fbclid. A banner that blocks scripts cannot hold it. Only the plugin's held state stops it.
Read in its code, 16 October 2026, Meta pixel for WordPress 5.2.2.
Full detail
Meta pixel for WordPress 5.2.2 runs its PHP Parameter Builder when the plugin file is included and, when _fbp is missing, sends Set-Cookie _fbp (90 days) from the server on the first page, before any choice; _fbc (90 days) is set the same way when the URL has fbclid. A banner that blocks scripts cannot hold it. The only way off in the code is the held state (filter facebook_signals_held, or cookie wc_facebook_signals_state=held).
Good to know · Meta pixel for WordPressMeta pixel for WordPress has no consent setting; its held state queues events
- No WP Consent API code; the pixel code is printed directly in the page.
- In the held state, fbevents.js still loads, sends a revoke, skips init and queues events.
- Releasing the queue sends the events and sets _fbp and _fbc.
- With Conversions API on: PHPSESSID (90 days), and server events to graph.facebook.com unless held.
Read in its code, 16 October 2026, Meta pixel for WordPress 5.2.2.
Full detail
Meta pixel for WordPress has no consent setting and no WP Consent API code. It prints the base pixel code inline in wp_head, and fbevents.js still loads in the held state, where it calls fbq('consent','revoke'), skips fbq('init'), queues browser and Conversions API events and stops the server _fbp. window.fbwcsignal.release() sends the queue and sets _fbp and _fbc. With Conversions API on, an Open Bridge request opens a PHP session (PHPSESSID, 90 days), and events are sent from the server to graph.facebook.com in wp_footer unless held.
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.
Sent from your server · Pixel CaffeinePixel Caffeine's Conversions API sends events from the server, no consent check
setting “aepc_enable_server_side” · by default: no
Events go to graph.facebook.com from the site's server, so no banner can hold them. It is off by default and needs a saved access token.
Read in its code, 16 October 2026, Pixel Caffeine 2.3.3.
Full detail
Pixel Caffeine's optional Conversions API sends events to graph.facebook.com from the site's server, on template_redirect and shutdown and through its REST route aepc/v1/fbq, without any consent check. No consent banner can hold these server events. It is off by default and needs a saved access token.
Set before the choice · Pixel CaffeinePixel Caffeine prints the Meta pixel on every page, with no consent setting
As soon as a pixel ID is saved, the pixel code is in every page. The plugin sets no cookie itself: _fbp and _fbc come from Meta's script. A filter can add type="text/plain" to the tag.
Read in its code, 16 October 2026, Pixel Caffeine 2.3.3.
Full detail
Pixel Caffeine 2.3.3 has no consent setting and no fbq('consent') call: as soon as a pixel ID is saved, it prints the Meta Pixel code (fbq('init') and fbevents.js) in an inline script on every page, in the head or the footer. It sets no cookie of its own; _fbp and _fbc come from Meta's script and the plugin only reads them. Its filter aepc_init_script_attributes can add type="text/plain" to the pixel tag.
Sent from your server · TikTok for BusinessTikTok for Business sends page views from the server without checking consent
Once an account is connected, page views and WooCommerce events go to TikTok with the visitor's IP address. A ttclid in the address is kept in a 30-day tiktok_ttclid cookie set by the server.
Read in its code, 16 October 2026, TikTok for Business 1.4.2.
Full detail
When a TikTok account is connected, TikTok for Business sends a PageView to TikTok's Events API (business-api.tiktok.com) from the server on every page rendered by PHP, plus WooCommerce events, with the visitor's IP address, user agent, _ttp and ttclid, without checking consent. On init it saves ?ttclid= in a tiktok_ttclid cookie for 30 days, from the server. It has no consent setting and no WP Consent API support.
Good to know · TikTok for BusinessTikTok for Business code lacks TikTok's consent commands
Its early ttq code does not declare holdConsent, grantConsent or revokeConsent, so those calls fail before TikTok's script has loaded.
Read in its code, 16 October 2026, TikTok for Business 1.4.2.
Full detail
The ttq stub printed by TikTok for Business declares page, track, identify, enableCookie, disableCookie and other methods, but not holdConsent, grantConsent or revokeConsent, so those calls fail before events.js has loaded. The plugin also enqueues ajaxSnippet.js (handle tt4b_ajax_script) for add-to-cart events, which assumes ttq exists.
Analytics and ad pixels
Other plugins of the same kind.
Questions
Is holding the pixel enough?
Not always. If the plugin writes cookies or sends events from your server, those happen before any banner. Check the plugin’s page for what to switch off.
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 sites with an ad pixel
Ads wait for a yes.
marketing needs consent
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

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