In our checks of European websites, the Meta pixel loading before consent was the second most common problem: 31 out of 85 websites with tracking issues had it. In most cases the owner had a cookie banner and assumed everything was fine.
Why it happens even with a cookie banner
A cookie banner only stops tags it controls. The Meta pixel often ends up outside that control:
- it was added directly to the theme or to the header code years ago,
- a plugin such as Facebook for WooCommerce, PixelYourSite or a shop module adds it on its own,
- it is in Google Tag Manager with an “All Pages” trigger and no consent condition,
- the banner is only a notice (“This site uses cookies. OK”) and does not block anything.
There is also a common misunderstanding about Google Consent Mode. Consent Mode tells Google tags what the visitor agreed to. It does nothing for the Meta pixel, TikTok, LinkedIn or any other non-Google tag.
How to check it in two minutes
- Open the website in a private or incognito window, so no earlier consent is stored.
- Open the developer tools (F12) and go to the Network tab.
- In the filter field type
facebook.com/tr. - Reload the page and do not click anything in the cookie banner.
If requests appear in the list, the pixel is sending data before consent. Then click “Reject” or “Only necessary”, reload, and check again. With rejected consent there should be no requests at all.
The Meta Pixel Helper browser extension shows the same thing, but the Network tab is more reliable because it shows every request, also from pixels added by plugins.
How to fix it
Step 1: keep one source
Find every place where the pixel is installed: theme code, plugins, shop modules and GTM. Search the page source for fbq( and connect.facebook.net. Decide on one source, usually Google Tag Manager, and remove the others. Two pixels are a consent problem and a data problem at the same time, because events are counted twice.
Step 2: add a consent condition in GTM
There are two common ways to do it:
- Built-in consent settings: in the Meta pixel tag, open Advanced Settings, Consent Settings, and require additional consent for
ad_storage. The tag will then fire only when the consent tool has granted it. This works when your consent tool updates the consent state in GTM, which most current tools do. - Consent trigger: fire the pixel on a custom event from your consent tool (for example
cookie_consent_marketing) instead of on all pages, and use a trigger group if it should also wait for the page view.
Whichever you choose, the PageView and all other Meta events must use the same condition.
Step 3: use the consent functions of the pixel
The pixel has its own consent commands. Calling fbq('consent', 'revoke') before fbq('init', ...) stops the pixel from sending data until fbq('consent', 'grant') is called after the visitor accepts. This is useful when the pixel must stay in the theme code, for example because of a shop integration.
Step 4: test
Repeat the check above: no facebook.com/tr requests before consent or after rejection, requests after acceptance, and in Meta Events Manager the events still arrive after the change.
What changes in your Meta data
After the fix, Meta receives fewer browser events, because visitors who decline are no longer tracked. That is expected. If you also use Conversions API from a server, make sure it follows the same consent decision; server-side does not mean consent-free.
Not sure what else is firing before consent on your website? A tracking audit checks every tag, not only the Meta pixel.
