Skip to documentation content

Meta Pixel

Consent grant and revoke for the Meta Pixel, plus Limited Data Use for US opt-out visitors.

Two separate mechanisms cover Meta, and they answer to different laws. The consent bridge follows the marketing category the way GDPR expects. Limited Data Use follows the US opt-out record. Running one doesn't give you the other.

What it does. Tells the Meta Pixel whether it may fire.

Consent category. marketing, through the collapsed adStorage value described in how bridges work.

How it works. On each consent update the bridge sends one of:

fbq('consent', 'grant');
fbq('consent', 'revoke');

If fbq isn't a function yet, the call is queued and flushed once the pixel loads, so a bridge that runs before your pixel tag doesn't lose the signal.

Setup. On by default. Toggle it under Vendor Consent Signals on the banner's App Integrations page.

Limited Data Use

What it does. Flags a US visitor's events so Meta processes them under its Limited Data Use terms.

Consent category. None, same as Google's restricted data processing. It reads the durable US opt-out record: a US visitor who hasn't deliberately opted in to sale and sharing is flagged.

How it works. At load, and again on every consent update:

fbq('dataProcessingOptions', ['LDU'], 1, 1000);

When the visitor has opted in, or isn't in the US, it sends the clearing form instead:

fbq('dataProcessingOptions', []);

The load-time call is the important one. Meta documents dataProcessingOptions as belonging before fbq('init'), and we don't control when your pixel initializes, so the snippet does two things to get as close as it can. It runs synchronously from the stored opt-out record rather than waiting for a consent event, and it pre-seeds the fbq queue stub the way Meta's own snippet does, but only when fbq isn't already a function. A live pixel is never overwritten.

There's a case this doesn't cover. If your pixel loads and fires its first PageView before our script runs at all, that event goes out without the flag. Loading CookieBeam ahead of the pixel is the fix.

Setup. Off by default, read from the theme's customFeatures:

{
  "usLimitedDataUse": {
    "meta": true
  }
}

No dashboard control exists for this yet, so enabling it means a theme update through the API.

Testing

Filter the network tab to facebook.com/tr. On a US visitor with no stored opt-in you should see dpo=LDU, dpoco=1 and dpost=1000 on the request. For the consent bridge, accept and reject marketing and confirm requests start and stop.

In the console:

window.fbq && window.fbq.queue

A queue with entries means the pixel hasn't loaded yet and the calls are waiting, which is expected rather than broken.