What LDU is, in plain terms
When Meta receives an event with the LDU signal attached, it treats that event as restricted. No retargeting, no custom audiences, no use of the data for ad personalisation. The visitor still counts as a conversion (Meta uses the data for measurement and modelling), but Meta doesn’t use it to build profiles or audiences.
Technically, PYS sends three parameters on each event when LDU is on:
- Browser pixel:
vdpo: 'LDU',dpoco: 0,dpost: 0. - CAPI:
data_processing_options: ['LDU'],data_processing_options_country: 0,data_processing_options_state: 0.
The two 0 values tell Meta to detect the country and state itself from the IP. You don’t have to do geolocation; Meta does.
When you need LDU
LDU only matters for visitors from US states with consumer privacy laws that grant the right to opt out of data sharing. As of 2026, these states are covered:
| State | Meta Business Tools | Audience Network SDK | Customer List Custom Audiences |
|---|---|---|---|
| California | ✓ | ✓ | ✓ |
| Colorado | ✓ | ✓ | — |
| Connecticut | ✓ | ✓ | — |
| Delaware | ✓ | ✓ | — |
| Florida | ✓ | ✓ | — |
| Montana | ✓ | ✓ | — |
| Nebraska | ✓ | ✓ | — |
| New Hampshire | ✓ | ✓ | — |
| New Jersey | ✓ | ✓ | — |
| Oregon | ✓ | ✓ | — |
| Texas | ✓ | ✓ | — |
The list grows as more states pass privacy laws. Check Meta’s Limited Data Use documentation for the current list before relying on this table.
LDU is not GDPR
LDU and GDPR are not interchangeable. Mixing them up is the most common mistake.
| GDPR (EU + EEA) | LDU (US states) | |
|---|---|---|
| What’s required | Block all tracking until the visitor explicitly opts in. | Track by default; flip LDU on for visitors who opt out. |
| Default state | Denied. | Granted. |
| Visitor experience | Banner blocks the site features until consent is given. | Banner informs and offers an opt-out link. |
A GDPR-compliant cookie banner doesn’t make you LDU-compliant. An LDU-compliant inform-and-opt-out banner doesn’t make you GDPR-compliant. You need both, applied based on the visitor’s location.
How PYS implements LDU
A single developer filter: pys_meta_ldu_mode.
- When the filter returns
false(default), no LDU signal is sent. Events go to Meta normally. - When the filter returns
truefor the current visitor, PYS adds the LDU parameters to every Meta browser pixel event and every CAPI event for that visitor.
PYS doesn’t decide when to flip the filter. Something else — ConsentMagic, or custom code wired to a third-party consent plugin — has to detect the visitor’s state and the visitor’s choice, then return true from the filter when LDU should apply.
Setup paths
| Setup | Consent plugin | When to use |
|---|---|---|
| Recommended | ConsentMagic | New install or any site that wants a clean path. ConsentMagic ships a built-in LDU rule that targets the covered US states and runs an Inform-and-Opt-Out flow. |
| Custom | Any other consent plugin, or your own code | You’re committed to a different consent tool. Use the pys_meta_ldu_mode filter to tell PYS when the visitor’s opted out. |
Recommended: PixelYourSite + ConsentMagic
- Install ConsentMagic and complete the setup wizard.
- In ConsentMagic, enable the Meta Limited Data Use rule. It targets the covered US states automatically.
- Configure the rule’s consent type as Inform and Opt-Out (the default for LDU).
- Save.
That’s it. For visitors from covered states:
- A banner informs them about tracking and offers an opt-out link.
- If they don’t opt out, PYS keeps sending Meta events normally.
- If they opt out, ConsentMagic flips the
pys_meta_ldu_modefilter totrue, and PYS adds the LDU signal to every Meta event for that visitor going forward.
Custom: any other consent plugin
If you use Cookiebot, Complianz, Iubenda, OneTrust, or your own consent system, add this filter to your theme’s functions.php or a custom plugin:
php
add_filter( 'pys_meta_ldu_mode', function( $ldu_on ) {
// Detect whether the current visitor is in a covered US state
// and has chosen to opt out of data sharing.
if ( my_visitor_is_in_covered_state() && my_visitor_opted_out_of_meta() ) {
return true;
}
return $ldu_on; // keep the default (false)
} );
Both helper functions are yours to implement based on your consent plugin’s API. The visitor’s state can come from your CMP’s geolocation, from a CDN header like CF-IPCountry+CF-Region, or from a server-side lookup of the visitor’s IP.
Verify it’s working
Browser side
Open your site in an incognito window. Use the Meta Pixel Helper Chrome extension.
For a normal visitor (no LDU): no special parameters.
For a visitor with LDU on: each event should carry vdpo=LDU, dpoco=0, dpost=0. The Pixel Helper shows them in the parameter detail panel.
Server side
In Events Manager, open a CAPI event and look at its payload. With LDU on, the event includes:
json
"data_processing_options": ["LDU"],
"data_processing_options_country": 0,
"data_processing_options_state": 0
If you don’t see these on a LDU-eligible visitor, the filter isn’t firing. Check that your consent rule is enabled for that visitor’s state.
Things to know
- Geolocation is Meta’s job. PYS sends
0, 0so Meta uses its own IP-based geolocation. You don’t need a third-party geolocation service for LDU itself, but you do need one to decide whether to ask the visitor for an opt-out in the first place (which only matters in covered states). - The state list grows. Eight states were added on December 18, 2024. More will follow as US state laws pass. Don’t hardcode the list in your own code; rely on ConsentMagic’s rule, which is updated centrally.
- LDU doesn’t stop the event from firing. The conversion still reaches Meta and still counts toward measurement and modelling. LDU only restricts personalisation, custom audiences, and lookalikes built from the data.
- Customer list Custom Audiences are different. Uploading a customer list with California residents triggers LDU restrictions automatically on Meta’s side; you don’t need to send a separate signal.
- LDU is independent of GDPR. For EU traffic, you need a full opt-in flow before any Meta tag fires. See Meta CAPI Event Match Quality (EMQ) for the matching side and ConsentMagic & other WordPress Consent Plugins for the consent layer.
- No PYS admin toggle. LDU is filter-driven by design, because the decision is always per-visitor, not site-wide. There’s no on/off switch in the plugin admin — only the filter and ConsentMagic’s rule.
