TL;DR: UK and EU visitors need a yes before the pixel runs. US visitors can opt out, including through Global Privacy Control. Handle both in code, then send purchases through the Conversions API with a shared ID.
When marketing says Meta shows fewer sales than the shop, the fix often sits in Facebook pixel consent: how the pixel handles each visitor's choice. Get it wrong one way and you lose buyers. Get it wrong the other way and you break the rules.
UK and EU: hold, then release
fbq('consent', 'revoke'); fbq('init', 'YOUR_PIXEL_ID'); // Call on Accept, on Reject, and on page load for returning visitors function onMarketingConsent(granted) { if (granted) { fbq('consent', 'grant'); fbq('track', 'PageView'); } else { fbq('consent', 'revoke'); // also covers people who change their mind } } The grant must run on the same page as the click. If it waits for the next page, the landing page your ad paid for is lost.
US: Limited Data Use
For shoppers who opt out, Meta offers Limited Data Use. It covers California, Colorado, Connecticut, Florida, Texas, Oregon and Montana. California and Colorado also expect you to treat a Global Privacy Control signal as an opt-out.
if (navigator.globalPrivacyControl || userOptedOut) { fbq('dataProcessingOptions', ['LDU'], 0, 0); // Meta works out the location } fbq('init', 'YOUR_PIXEL_ID'); Conversions API without double counting
Meta recommends sending events from the browser and your server. Use the same event name and ID on both:
fbq('track', 'Purchase', { value: 49.99, currency: 'GBP' }, { eventID: 'order_10482' }); On the server, send event_name: "Purchase" and event_id: "order_10482". Skip the call for UK and EU visitors who said no, and add data_processing_options: ["LDU"] for US opt-outs.
The no-code route
Seers.AI connects your pop-up to the Pixel and the Conversions API from a dashboard switch. It blocks trackers until consent, reads Global Privacy Control, shows the right pop-up for each region and logs each choice.