> For the complete documentation index, see [llms.txt](https://help.littledata.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.littledata.io/event-editor/common-setups/redact-product-details-from-meta-events.md).

# Redact product details from Meta events

Use the Event Editor to stop product names and other sensitive fields reaching Meta, while GA4, Klaviyo and your other destinations keep the full data. For health and wellness stores under Meta's data

### What you'll build

A Meta destination that sends every purchase and add-to-cart with the customer identifiers and order value Meta needs, but without product names or other fields that describe what was bought. Uses [field mappings](/event-editor/field-mappings.md) with custom values, plus [enable or disable](/event-editor/enable-disable-events.md) for events you can't remap.

Meta places supplement, skincare, fitness and other health-adjacent stores in its **health and wellness** category and restricts what their Pixel and Conversions API events may contain. Moving tracking server-side doesn't change that on its own: if a product title with a health keyword is in the payload, Meta still receives it. What helps is sending Meta a minimal payload, and the Event Editor lets you do that for Meta alone, so your warehouse, GA4 and email flows keep full product data. See [Meta's health and wellness restrictions](/integrations/facebook-capi/meta-ads-tracking-guide.md#metas-health-and-wellness-restrictions) in the tracking guide for the restriction tiers and how to check your dataset.

{% hint style="warning" %}
This is data minimization, not a way around a restriction. It doesn't change a category Meta has assigned, and it isn't legal advice. Meta asks advertisers to agree a data-sharing compliance plan with their own counsel, and your ads and landing pages still have to follow Meta's ad policies.
{% endhint %}

### What you need

* Littledata's [Meta Conversions API](/integrations/facebook-capi.md) destination connected
* Access to the Event Editor in the Littledata app
* A list of the fields you want to stop sending. Start with product names, product categories or types, and any custom parameter that names an ingredient, condition or outcome

### What the Meta events contain

Every Meta event has two parts. The identifiers are what Meta matches on; the custom data describes the order.

| Section       | Fields the Event Editor exposes                                                                                                   | What to do                                       |
| ------------- | --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| `user_data`   | `em`, `ph`, `fbp`, `fbc`, `client_ip_address`, `client_user_agent`, `external_id` and the other hashed customer fields            | Leave untouched. These drive Event Match Quality |
| `custom_data` | `value`, `currency`, `order_id`, `content_ids`, `contents` (id, quantity, item price), `market_id`, `market_handle`, `order_type` | Keep. None of these describe the product         |
| `custom_data` | `content_name` (on AddToCart), any custom parameters you added                                                                    | Redact                                           |

`event_name` and `event_time` are locked. `value` and `currency` are required by Meta for Purchase and should stay mapped to the order total.

The product IDs in `contents` and `content_ids` are what Meta uses to match your catalog for dynamic product ads. Shopify product and variant IDs are opaque numbers, so they're safe to keep. If your IDs are SKUs that spell out an ingredient or condition, remap them to a numeric ID, but only if your Meta catalog uses the same ID, or catalog matching breaks.

### Steps

{% stepper %}
{% step %}

#### Open the Meta Event Editor

In the Littledata app, open the Meta destination's settings and go to the [Event Editor](/event-editor/getting-started.md).
{% endstep %}

{% step %}

#### Edit the server-side AddToCart event

Click the **three-dot menu** on **AddToCart** (server-side) and select **Edit**, then open **Field mappings**.

In the `custom_data` section, find `content_name`. Click its source, type a neutral value such as `Product` in the search box, and click **Use "Product" as custom value**. Every AddToCart now sends that word instead of the product title.
{% endstep %}

{% step %}

#### Review the Purchase event

Open **Purchase** and go to **Field mappings**. The Purchase mappings the editor exposes carry product IDs, quantities and prices rather than a product name, so there's often nothing to change here. Open **Event preview** anyway and search the payload for product titles. Then check the **custom parameters** at the bottom of `custom_data` and `event`: remove or neutralise any you added that name a product, ingredient or condition.

Do the same for **InitiateCheckout**, **AddPaymentInfo**, **Post Purchase Upsell** and any [recipe](/event-editor/recipes.md) events such as New Customer Purchase or Subscribe. Recipe events inherit the base event's mappings, so a change to Purchase doesn't carry across: edit each one.
{% endstep %}

{% step %}

#### Disable client-side events you can't remap

Client-side events, sent from the [Littledata Pixel](/sources/shopify/littledata-pixel.md), can't have their mappings edited. If a client-side event carries product names (ViewContent always does, since it describes a product page), the only way to stop that is to [disable it](/event-editor/enable-disable-events.md) for Meta.

Weigh this against what you lose. ViewContent only exists client-side, so disabling it removes your view-content signal and the audiences built on it. AddToCart, InitiateCheckout and Purchase are also sent server-side, so disabling their client-side copies keeps the conversion data flowing and only costs you the browser copy Meta would have deduplicated anyway.
{% endstep %}

{% step %}

#### Preview and save

Open **Event preview** on each event you changed. The payload is built from a real recent event with your mappings applied, so search it for product names before you save. The `user_data` section should be unchanged.

Click **Save**.
{% endstep %}
{% endstepper %}

### Verify it's working

1. Place a test order or add a product to the cart, then open Meta **Events Manager → Data sources → your pixel → Test events** and open the event. The parameters shown should contain IDs, value and currency, but no product title.
2. Check `value` and `currency` still arrive on Purchase, and that **Event Match Quality** for Purchase hasn't dropped. Identifiers weren't touched, so it shouldn't.
3. If your dataset showed an **Event parameters blocked** message under **Diagnostics**, watch whether it recurs over the following days.
4. Confirm GA4 and your other destinations still receive product names. Every Event Editor change is scoped to one event on one destination.

### Make it yours

* **Keep a product signal without the name.** Map a custom parameter to a non-descriptive grouping, for example a Shopify collection handle such as `core-range`, instead of the product title. Avoid anything that names a condition.
* **Send a different value to Meta.** Map `value` to `net_revenue` if you'd rather optimize on profit, or keep `value` as order total and send `net_revenue` alongside it with [Profit Signal](/sources/profit-signal/how-to-check-profit-signal-in-meta.md).
* **Hold back specific products entirely.** Add a [trigger condition](/event-editor/trigger-conditions.md) so an event is only sent when `products.collections` does not contain a sensitive collection. The whole event is dropped for those orders, so use this for a small subset of products, not your core range.
* **URLs.** The `event_source_url` on server events isn't editable in the Event Editor. Under Core Setup Meta truncates it to your domain on its side. If you need it changed before it leaves Littledata, contact <help@littledata.io>.

### Related articles

* [Meta Ads tracking for Shopify: the complete guide](/integrations/facebook-capi/meta-ads-tracking-guide.md)
* [Remap existing events](/event-editor/field-mappings.md)
* [Enable or disable events](/event-editor/enable-disable-events.md)
* [Preview events](/event-editor/event-preview.md)
* [Troubleshooting common Meta errors](/integrations/facebook-capi/common-meta-errors.md)
