Health & Wellness
Get purchase optimization back after a Meta health & wellness flag
Meta still takes health & wellness ad spend. What it refuses is health data. Upstack gives you a clean pixel, a neutral data domain and server-side events with the health terms removed, so your campaigns can optimize on Purchase again.
- Server-side only: Meta’s browser pixel comes off your store, and product names and health terms are stripped from every event
- Purchase, value and currency still reach Meta, with the identifiers it matches on
- Set up with you: the new pixel, the data domain and the filters
Powering 1,000+ DTC brands on Shopify
The problem
Meta didn’t ban your ads. It stopped accepting your data.
Meta runs two separate systems. The ad policy decides what your ads can say and who they can target. The data restriction decides what your pixel and Conversions API events are allowed to send. Most brands fight the first while the second is what costs them performance.
The data restriction is applied to the dataset and the domain, and it comes in levels:
| Restriction level | What Meta restricts | What you see |
|---|---|---|
| Core Setup | URL details and custom parameters are stripped from your events | Audiences and catalog matching built on URLs weaken; events still arrive |
| Event restrictions | Lower-funnel events such as AddToCart, InitiateCheckout and Purchase can no longer be used | Purchase optimization is unavailable or throttled, and cost caps stop spending |
| Full restriction | No events from the dataset are used for optimization | Conversion campaigns stop working and reported results fall away |
“We’re part of the health and wellness category. I feel like we’re definitely seeing performance hits big time.”
“We got flagged about a month ago. I appealed it and it didn’t work.”
Self-check
Is your pixel flagged? Five signs, and where to check.
Any one of these is worth checking. Two or more together usually means the data restriction, not your ads.
A “data sharing restrictions” notice
Events Manager shows it on the dataset when Meta’s categorization limits which events it will use.
Purchase is unavailable or carries a warning
Conversion campaigns can no longer pick Purchase as the optimization event, or Meta flags it as restricted.
CPMs swing hard in both directions
When the algorithm loses lower-funnel data, targeting goes broad and costs stop following any pattern.
Cost-cap campaigns stop spending
With too little conversion data to bid against, cost caps can drop to near-zero delivery.
Catalog items get rejected
Product catalogs and catalog ads stop being approved, often alongside the event restrictions.
Check it in Events Manager
Open Events Manager, choose your dataset, go to Settings and find the dataset categories section. It shows what was categorized.
Not sure what’s flagged? We’ll check your Events Manager with you on the call.
The cost
What a flag costs a health & wellness brand.
Your ads keep running. They just stop learning from the people who buy.
Purchase optimization is throttled or lost
The event your campaigns are built to find is the one Meta stops using.
Costs stop making sense
CPMs rise, or collapse into cheap impressions that never convert, and reported results stop explaining them.
Whole campaign types stop working
Catalog ads, cost caps and value optimization all depend on the data that is now restricted.
New-customer growth stalls while CPA looks fine
With less data, Meta shows ads to people already likely to buy. Reported CPA can hold while fewer of those buyers are new.
The usual fixes
Why the usual fixes don’t stick.
Each of these treats the flag. None of them changes the data that caused it.
| Approach | What usually happens | Why it doesn’t hold |
|---|---|---|
| Appeal the categorization | One automated review, then a manual one, and the decision rarely changes | Reviews judge your site content, not the data you send. Keep sending the same data and the flag comes back. |
| Start a new pixel on the same domain | Flagged again, often within days | Categorization follows the domain and the data. A new pixel that receives the same events inherits the problem. |
| Open a new ad account | The same restriction | The restriction sits on the dataset and the domain, not on the ad account. |
| Optimize on a custom event instead of Purchase | In the accounts we work with, it stopped working in January 2026 | Meta categorizes the data, not the event name, so the custom event gets restricted too and the flag stays active. You also optimize on a weaker signal. |
| Pay someone to “remove” the flag | Rarely changes anything, and never for long | A category Meta assigns can’t be edited from outside Meta, and the data that caused it keeps flowing. |
How it works
How Upstack restores purchase optimization.
Four parts, configured once. Your customers never see any of it.
Start a new, clean pixel
You create a new pixel in Events Manager and connect nothing to it. Upstack becomes the only thing that sends it data, so nothing unfiltered ever reaches it.
Send events from a neutral domain
You register a second domain with one simple page: no health claims, no product language. Upstack sends your events from it, while customers keep landing on your store.
Server-side only, health terms removed
The browser pixel comes off your store and events go out from the server. Product names, URLs, categories and descriptions are stripped; identifiers, value and currency go through.
Optimize on standard Purchase
Your campaigns move to the new pixel and optimize on the standard Purchase event, not a renamed custom event.
What gets read
Your events tell Meta what you sell.
Meta categorizes from your site, your catalog and the events you send. The events are the part you control: standard tracking forwards product names, categories and URLs with every one, and none of those fields play any part in matching.
| Field in the payload | Result | What it tells Meta |
|---|---|---|
Product nameCollagen Supplement 60ct | Flagged | Names a health product in every purchase |
CategoryHealth & Wellness | Flagged | States the category outright |
Content typesupplement / vitamin | Flagged | Repeats it on every view and cart event |
Page URL/products/joint-support-gummies | Flagged | Names a condition in the URL path |
What changes
Before and after.
| Dimension | Standard tracking | With Upstack |
|---|---|---|
| What Meta receives | Browser and server events, with product data | Server events only, from a neutral domain |
| Health terms | Sent with every event | Stripped before the event is sent |
| Optimization event | Purchase restricted, or a custom-event stand-in | Standard Purchase on a clean pixel |
| Match quality | Degraded once events are restricted | Hashed email and phone, click ID and external ID still forwarded |
| Where it is fixed | Appeals, after the fact | Per destination, before each event is sent |
Field by field
Exactly what leaves your store, and what doesn’t.
Withheld from Meta
Fields that describe the product
- Product names containing health keywords
- Health & Wellness category values
- content_type values such as supplement or vitamin
- Product descriptions naming an ingredient or condition
- Page URLs and paths that name a product or condition
Forwarded as normal
Fields Meta matches on
- Hashed email — the primary matching signal
- Hashed phone in E.164 format
- Click ID (fbc, from the fbclid parameter), when present
- Purchase value and currency
- Client IP and user agent
- External ID, persistent across sessions
Getting started
Your first two weeks.
You stay live the whole time. Nothing is paused while the new pixel takes over.
Call: confirm what’s flagged
We look at your Events Manager with you and confirm which dataset, domain or account is restricted, and at what level.
Set up the domain and the pixel
You register the neutral domain and create the new pixel. We review the domain, then switch on health & wellness filtering and the neutral domain for that pixel.
Connect
Once we confirm the setup, you connect the new pixel, and server-side events start flowing to it.
Move your campaigns
Duplicate your strongest ad sets onto the new pixel and shift budget over one to two weeks. The old pixel keeps receiving clean data until you’re done.
See what the setup would look like for your store.
Customer results
What identity resolution is worth alongside it.
Clean data gets Purchase optimization back. Resolving more of your customers is what recovers the performance.
33% CAC reduction
90× return on the platform fee, and $92K a month in recovered abandonment revenue.
+128% customers identified
More identified customers means more complete conversions for Meta to optimize on.
−20% CAC
+24% MER across the media mix, from sending complete conversions rather than partial ones.
Categories
Built for health & wellness categories.
Meta’s categorization is broader than most brands expect. Product names alone can trigger it.
Supplements & vitamins
Ingredient and benefit words in product names (joint, sleep, gut, hormone) are the most common trigger.
Weight loss
Purchases in this category add up to a health profile, so it is among the most restricted.
Telehealth
Condition pages, intake forms and URLs carry health data with every event unless they are filtered.
Hair loss
Treatment and condition terms in titles and URLs categorize the whole store.
Sexual wellness
Restricted in ad policy and in data, so both layers need attention.
CBD & hemp
One hemp product can get a whole catalog categorized.
Pain relief & recovery
Words like pain, relief, repair and inflammation in product data are enough.
Maternity & baby
Buyers of these products can indicate a pregnancy, which Meta treats as health data.
Why this is the right fix
Compliance, not a workaround.
Data minimization, not evasion
Meta’s matching runs on identifiers, not product descriptions. Sending a product name that plays no part in matching is a choice, not a requirement, and not sending it is ordinary data minimization.
Server-side alone moves the problem
Sending the same payload from a server rather than a browser changes where the data comes from, not what is in it. If the fields that trigger a flag are still present, the flag still happens.
What we don’t do
We don’t remove flags, hide claims or route around Meta’s ad review. Your ads and landing pages still need to follow Meta’s policies. We fix what your data sends.
Rules you can read
Every rule is visible and every payload is inspectable, so you can see exactly which fields left and which were withheld, per destination, per event.
Pricing
Pricing and commitment.
Upstack plans are priced by monthly orders. We confirm the plan and any setup work for your store on the call, before anything is switched on.
Common questions
Health & wellness tracking, answered.
Can you remove the flag?
No. A dataset or domain Meta has categorized usually stays categorized, and appeals rarely change that. What we give you is a new, clean data source: a pixel that only receives server-side events from a neutral domain, with the health terms removed. That is what Meta is asking for, and it lets you optimize on Purchase again.
Is this allowed by Meta’s policies?
It is built around what Meta asks for. Meta isn’t trying to stop health & wellness brands from advertising; it doesn’t want to receive health data. Sending the identifiers and purchase values Meta matches on, without product names or health terms, is data minimization. Your ads and landing pages still have to follow Meta’s ad policies, and that part stays with you.
Will the new pixel get flagged again?
It’s unlikely while Upstack is the only thing sending it data. New pixels usually get flagged again because something else sends them unfiltered data: the browser pixel, the Shopify Facebook & Instagram app’s data sharing, or another integration. That is why nothing else connects to the new pixel, and why we review the neutral domain before it goes live.
Do I have to pause my campaigns?
No. Keep the old pixel running on clean data while you duplicate your strongest ad sets onto the new one and shift budget across over one to two weeks.
What happens to my old pixel?
Keep it. It holds your audiences and history, and it keeps receiving cleaned data while your campaigns move. Don’t delete it.
Who sets up the neutral domain, and what goes on it?
You register it at any registrar other than Shopify, usually your brand name with a prefix such as try or get, and put up one simple page with no health claims and no product language. Send us the domain and we review it, then configure your new pixel to send events from it. Customers never visit it; they keep landing on your store.
What happens to match quality without the browser pixel?
Match quality is scored on the identifiers in each event. Hashed email and phone, click ID, IP address, user agent and a persistent external ID are all sent from the server, so they don’t depend on the browser pixel being on your store.
What happens if I stop using Upstack?
The new pixel stays clean until something starts sending it unfiltered data again. If your store goes back to sending product names and health terms to Meta, expect it to be flagged again.
Does this affect Google or TikTok?
Only if you want it to. Filtering is per destination, so a rule applied to Meta leaves every other destination untouched.
What counts as health and wellness to Meta?
Broader than most brands expect. Supplements, weight loss, telehealth, hair loss, sexual wellness, CBD, pain relief and some maternity products can all fall inside it, and product names alone can trigger it. We confirm what applies to your store when we scope your account.
How quickly does performance recover?
It depends on how long the account has been restricted and how much of your spend sits in affected campaigns, so we would rather scope it against your account than quote an average that will not hold for you.
Which plan do I need?
That depends on your monthly orders, which is how every Upstack plan is priced. We’ll tell you which plan fits your store, and what the setup involves, on the call.
Find out what your pixel is sending.
Book a call and we’ll look at your Events Manager with you: what’s restricted, what’s being sent, and what the setup would look like for your store.











