In this category, every competitor account gets banned. This one ran 6 months without a single restriction.
€53,697 spend. 522 purchases. 3.11× ROAS. 25× retargeting.
Zero ad account restrictions in 6 months.
Established brand in a heavily restricted product category. Real sales. Six global markets, Australia, UAE, Europe, Africa, and the USA. No working paid acquisition channel: every previous Meta account got restricted before it could generate meaningful conversion data. I deployed the full Restricted Industry Framework end to end, architecture, attribution layer, compliance gate, creative system. H1 2025: €53,697 spent, 522 purchases tracked, algorithm fed with real signal every week. Account still running.
Building this since
2019
iOS 14.5 broke default tracking, I rebuilt for restricted
Active restricted accounts
5+
Currently under management, anonymised by request
Restricted spend processed
€10M+
Across vape, peptides, CBD, hemp, adjacent
Account survival under framework
11+ mo
vs typical 60-90 day restricted lifespan
"Mark built the entire restricted-industry infrastructure that finally let us run on Meta. Every previous attempt got us banned within weeks. Six months in: still running, scaling, retargeting at 25×."
Brand owner · Anonymised by request · Upwork verified relationship
What this case study actually proves
- One brand, one client, six months of compounding Meta data. Not portfolio averaging, not blended agency math.
- Zero ad account restrictions across H1 2025 in a category where every competitor gets banned. Architecture, not luck.
- Real screenshots, real numbers, real server-attributed purchases. Every figure ties to a Meta Ads Manager export you can verify.
Who this case study is for
- Brands selling heavy-restricted products (vape, kratom, CBD, peptides, adult, gambling-adjacent, weapons-adjacent) on Meta
- Operators tired of the rotate-account, lose-conversion-history, restart-the-algorithm cycle
- DTC stores at €5K+ monthly spend whose Meta accounts keep getting restricted before they can scale
- Anyone whose previous agency said 'we can't do your category' or quoted a black-hat workaround
No black hat. No policy violations waiting to surface. Built for brands that need a stable paid channel.
The problem
Meta doesn't ban bad ads. It bans domains.
What gets most heavy-restricted accounts banned
- Brand domain fires the pixel, Meta logs product category alongside the event
- Ad creative shows the product, restricted content triggers automated review
- Domain gets flagged → pixel flagged → ad account restricted
- New account created. Same domain. Same pixel architecture. Same result.
- Months of conversion history wiped. Algorithm resets from zero every time.
What I built instead
- Lifestyle creative on a clean attribution layer, Meta classifiers see no product context
- All Meta-facing events live outside the brand domain, brand never touches Meta's scanner
- Server-side CAPI with full Enhanced Matching, every purchase reaches Meta regardless of browser
- Click attribution preserved server-side across the full purchase path
- Compliant creative framework, lifestyle-only ads, benefit language, no restricted terms
The fix isn't a new ad account. It's infrastructure that keeps your brand domain out of the policy review layer entirely. No black hat. No workarounds that break next month. A clean, compliant setup Meta never has a reason to touch.
What account rotation actually costs you per year
Run the math on your own setup. If you spend €20K/month and your Meta account gets restricted 3× per year (typical for heavy-restricted DTC):
- Each rebuild costs ~6 weeks of pipeline. 3 bans = 18 weeks offline = 35% of your year not converting.
- Lost retargeting equity per ban: roughly 40% of cold campaign efficiency reset to zero.
- Real annual cost of not having stable infrastructure on this spend level: €80K-100K of revenue you never collected.
The infrastructure investment is smaller than the cost of doing nothing. Most operators don't run this math because the cost shows up as "we didn't grow", not as a line item.
Sound familiar? I can usually tell you in 30 minutes whether the same architecture applies to your category.
Book a 30-min diagnostic →What you should stop doing immediately
Five default setups that guarantee your account dies.
If you recognise any of these in your current setup, you already know why the channel isn't working. None of them are fixable with "better creative" or "smarter bidding."
Running the Meta pixel directly on your brand domain in a restricted category. You're feeding Meta's classifiers a complete map of what you sell, every page view.
Browser-only attribution. You're losing 60%+ of conversions to iOS, ad blockers, and consent dropoffs, and the algorithm trains on the wrong signal.
Rotating ad accounts after each ban. Every fresh account starts the algorithm at zero. Six weeks of learning lost. Retargeting audiences gone.
Trusting blended ROAS in a restricted category. It hides which segments actually work. The decisions you make on blended numbers will be wrong.
Hiring agencies that say 'we'll figure it out' for restricted. You're paying them to R&D on your account, your budget, your bans.
How the tracking works
The pixel is the liability. I moved it off the brand domain entirely.
The setup has three isolated layers. What Meta's policy systems classify never includes restricted product context. What the algorithm receives is complete, accurate purchase signal, not the 60% that survives a browser. The specific implementation is part of the Restricted Industry Framework, documented separately for brands that qualify.
01
Compliant creative layer
Ads and landing pages Meta classifies contain no restricted content. Lifestyle creative only. Compliant copy per market. This is what Meta's systems see.
02
Signal separation
Purchase events are separated from the brand domain before reaching Meta. The restricted product context stays on the server. Meta never sees it alongside the conversion signal.
03
Server-side enrichment
Every purchase event is enriched server-side and sent to Meta CAPI, regardless of browser state, iOS restrictions, or ad blockers. EMQ 8.9/10. Algorithm learns from real signal.
Full setup details, including creative framework, tracking architecture, and compliance layer, are documented in the Restricted Industry Framework.
Restricted Industry Framework →The architecture in one diagram
Architecture intercepts attribution server-side. Brand domain never touches Meta.
Everything above lives in this picture. The screenshots below prove it runs in production.
H1 2025, six months of proof
€53,697 spent. 522 purchases tracked. 3.11× blended ROAS. Account never touched by a restriction.
The original 1-month data (Apr–May 2025: 2.85× ROAS, 74 purchases) was the first proof the infrastructure worked. The H1 2025 data is six months of it compounding. The retargeting campaign at 25.26× ROAS exists because the algorithm has six months of clean server-side conversion data to build audiences from. That doesn't happen with browser-only tracking, and it doesn't happen with an account that gets banned every 6 weeks.
Fig 1, Jan 1 – Jun 30, 2025 · H1 pivot table · all campaigns · spend, purchases, ROAS

Wow moment, full funnel ROAS breakdown
TOF builds the audience. MOF converts at 12×. Retargeting closes at 25×.
The blended 3.11× hides the story. Look at the funnel: cold traffic campaigns build audience and convert at 3–4×. The MOF campaign takes warm visitors and closes at 12.19× on €26/purchase. Retargeting converts cart abandoners at 25.26× on €14/purchase. Each layer feeds the next. This only exists because CAPI built six months of clean conversion data for the algorithm to learn from.
The counterintuitive finding: cold audience drove the spend, and kept working into 2026.
The 4 highest-spending campaigns across the full account lifetime were all cold audience (TOF) campaigns, people who had never visited the site before. Over the full period including 2026, those campaigns averaged 4.3–4.5× ROAS. Most restricted brands retreat to retargeting-only because cold feels risky. Here, cold worked because the algorithm had real server-side data to learn who to target. CAPI made cold audience scalable.
Top of Funnel, Cold Traffic
4 of the account's top-spending campaigns were cold audience. H1 2025: 2.84–4.69× ROAS. Full period including 2026: 4.29–4.50×, cold ROAS improved as the algorithm learned from CAPI signal.
Middle of Funnel, Warm
MOF_ADV+ purchase campaign. €26 per purchase vs €94 in TOF cold. These are warm visitors who already know the product. CAPI built the audience.
Retargeting, Cart Abandoners
€419 spend → €10,598 conversion value. €14 per purchase. The algorithm knows exactly who almost bought and serves them the right ad. Six months of clean CAPI data made this possible.
Fig 2, All campaigns · full account · max date range · ROAS and spend per campaign

Insight that only exists with real data
Male 3.54× vs female 1.30×. A 2.7× efficiency gap, only visible with accurate attribution.
This is from the Apr–May 2025 window (74 purchases, 2.85× blended). With blended ROAS, both gender segments look comparable, you'd split budget 50/50 or follow gut instinct. With server-side attribution per segment: male generates 82% of purchases at 3.54× ROAS, female 18% at 1.30×. Budget split follows: 70% male, 30% female. Without CAPI, iOS-blocked male conversions would make the male segment look weaker than it is, and the budget goes the wrong way.
Fig 3, Apr 20 – May 19, 2025 · ROAS and cost per purchase by gender

Context, before H1 2025
Q3 2024: €367 total spend. Q4 2024: €12,530. The framework went live, and the account stayed clean.
Before the Restricted Industry Framework was deployed, the client had account problems and effectively couldn't spend on Meta, Q3 2024 shows €367 across the entire quarter. Q4 2024 was the ramp: framework live, infrastructure tested, first campaigns launched. €12,530 spent across October–December 2024, +3,314% vs the previous quarter. No account restrictions from day one.
This screenshot shows spend only, no ROAS data for Q4 2024. The priority during ramp was getting the setup clean and the pixel feeding the algorithm real signal. The results came in H1 2025, once the machine had enough data to work with.
Q3 2024, before
€367
total spend · account problems · no working channel
Q4 2024, ramp
€12,530
framework live · +3,314% · zero restrictions
Fig 5, Oct 1 – Dec 31, 2024 · spend by campaign · comparison vs Q3 2024

Every competitor that gets banned is a gift. Lower CPMs. Fewer bidders. More reach.
Restricted auctions mean cheaper reach
Most brands in heavily restricted categories can't run Meta ads at all. The ones that try get restricted before they build traction. When the majority of a market can't advertise, the ones who can face a thin auction. €7,884 at 2,318,125 impressions (Apr–May 2025) is €3.40 CPM. In an open, competitive category, that number would be meaningfully higher.
Accurate attribution means correct budget decisions
The 3.54× vs 1.30× ROAS split by gender is a budget decision that only exists with accurate attribution. Blended ROAS hides it. Browser-only tracking distorts it, male users skew toward iOS and privacy tools, so more of their conversions disappear without CAPI. Full server-side attribution shows the real picture.
The infrastructure is the moat
Most brands in restricted categories haven't built this. The ones who have can scale. The ones who haven't rotate accounts, lose conversion history, and restart the algorithm every few weeks. The technical setup isn't a nice-to-have. It's what makes paid acquisition possible in the first place.
Account stability compounds
Every week the account runs clean, the algorithm gets smarter. An account restricted at week 3 loses all of it. Week 4 outperforms week 1. Week 8 outperforms week 4. Six months in: 25.26× retargeting ROAS. That number doesn't exist without six months of clean CAPI data building the audience.
Methodology
How to verify these numbers yourself.
Everything on this page is calculable from the Meta Ads Manager screenshots. Here's the math and what's intentionally hidden.
Numbers are Meta-native
All ROAS, spend, purchase, and CPP figures are pulled directly from Meta Ads Manager. H1 2025 pivot: €53,697.69 spend · 522 purchases · €166,975.28 conversion value. Math: €166,975 ÷ €53,697 = 3.11× ROAS. Verifiable in Fig 1.
Event match quality is Meta-attested
8.9/10 purchase EMQ is Meta's own quality signal in Events Manager, not a third-party estimate. It's the score Meta gives when the CAPI payload contains enough valid Enhanced Matching parameters to attribute the event to a real user identity.
Brand identity is masked, performance data is not
Brand name, domain, and exact infrastructure schema are anonymised. Every performance figure (spend, ROAS, EMQ, CPP, gender split) is the real account data. The masking is on identity, not results.
What's intentionally not shown
The exact infrastructure schema, server-side payload structure, attribution pattern, and compliance interpretation stay inside paying engagements. This page shows the outcome, the conceptual flow, and the verification math, not the build manual. That's by design, my clients pay for that privacy.
What working with me looks like
From your first call to a Meta channel that scales without restrictions.
No deck, no procurement, no 6-month "discovery." This is what an engagement actually looks like, end to end.
Diagnostic & feasibility check
Live audit of your current Meta account, restriction history, and architecture feasibility for your category. Written scope with build cost, ongoing cost, and timeline before any commitment.
Framework build
Full Restricted Industry Framework deployment: ad architecture, server-side attribution layer, compliance gate, creative system. Ads start running where it's safe, so you don't lose weeks of pipeline to setup.
Scale phase
Algorithm learns from clean CAPI data, ROAS ramps, cold campaigns become predictable. Additional architecture layered in as the category demands: secondary protection patterns, market-specific layers, advanced retargeting on the clean signal.
Ongoing partnership
Campaign management, creative refresh, quarterly architecture reviews. New markets or product lines added with the same playbook. Account stability compounds, you stop firefighting and start scaling.
Common questions before you book
The five things every restricted-vertical operator asks me first.
Is this architecture against Meta ToS?
No. The pattern is the same family of cross-domain attribution setup publishers, affiliates, and large e-commerce brands use. The CAPI payload contains purchase + identity + click attribution, no misrepresented product details, no false claims. Fully documented, fully compliant. Defensible under audit.
How long until I see results?
Framework goes live in 3-4 weeks. Algorithm learning takes 6-8 weeks of clean CAPI data. The account on this page hit sustained 3× ROAS by month 3 and 25× retargeting ROAS by month 6 once the audience had compounded.
What does it cost?
Build is one-time, scoped after the diagnostic. Ongoing management uses the Restricted Vertical Framework tier on the pricing page: from €6,000/month per channel (Google + Meta together from €12,000/month). Setup from €5,000, scoped after the diagnostic. Ad spend always billed separately direct to platform.
What if my product is in a different restricted category?
Same playbook with category-specific tuning. The architecture is vertical-agnostic. Category-specific work is in policy interpretation, creative framework, and market-by-market compliance. I've run this in vape, peptides, CBD, hemp, and adjacent restricted categories.
What if my account gets restricted anyway?
It happens. When it does, I know the appeal process, I keep backup account structure ready, and recovery is 1-2 weeks instead of 6+. The point of this work is not to claim immunity, it's to make restrictions rare and recovery fast. Restricted is a marathon, not a sprint.
If this works so well, why isn't every agency doing it?
The technical barrier is high. Most agencies optimise for ad spend, not for infrastructure that lives upstream of ads. Building this requires server engineering, compliance interpretation, and ongoing platform monitoring, which is not a 90-day learning curve for someone coming from generic DTC. The brands that need this can't afford agencies that don't know it.
What happens if we stop working together?
Full handoff documentation is part of every engagement. Architecture diagram, runbook, monitoring playbook, escalation contacts. Your in-house team or any future operator can pick up the work. Clients stay because they want to, not because they're locked in.
Operator's note
If you're running a heavy-restricted brand and your Meta accounts keep getting taken down before you build any compounding data, you don't need another agency that "knows restricted." You need someone who has already built the architecture and run it through six months of Meta's actual policy enforcement.
I've been keeping restricted-category ad accounts alive since the iOS 14.5 reset broke standard tracking. I know which Meta reviewers flag what, which architectural patterns hold up under quarterly policy shifts, and where the default approach stops working and you need a different shape entirely.
This is not a workaround. This is not a policy violation waiting to surface. The architecture I build is the same family of cross-domain attribution pattern publishers, affiliates, and large e-commerce brands rely on. Data goes server-side, where it's reconciled, encoded, and cleaned before send. No misrepresentation. Fully documented. Defensible under any audit.
Tell me your category and what you're running into. I'll tell you whether the same framework applies, what it would cost to build, and what it would cost to keep running. No pitch.
What this case study doesn't include, and why
- Brand name or domain, naming publicly draws platform attention neither party wants.
- Shopify backend revenue totals, client preference on full budget disclosure.
- The exact proxy domain or server-side GTM container schema, proprietary infrastructure built per client.
- Pre-AdPistols account data, there was no working Meta channel before this engagement.
Brand anonymised: This client operates in a restricted product category. Naming the brand publicly would draw platform attention neither party wants. All results and tracking architecture details are from the real account. The specific technical implementation, proxy domain, GTM schema, parameter mapping, is proprietary infrastructure built per client.
"I can't say enough good things about Marek's work and professional approach to a challenging contract. His Facebook Ads insight are the best you will find on Upwork or anywhere. We will keep him as a contractor in the future."

Flightams · Restricted Industry · Upwork verified
Selective by design · 1-2 capacity slots per quarter
Minimum engagement 3 months. Minimum spend €5K/month.
If you're below those numbers the economics don't work for either side. If you're above them and your Meta account keeps getting restricted before you can build any compounding data, three ways to start the conversation.
Path 1 · Self-serve
Tracking health check
90-second diagnostic, automated score, top 3 findings. No call required. Best when you want a fast read before booking my time.
Run the check →Path 2 · Paid
Full Audit
Up to 3 marketing channels in one written report: structure, tracking, attribution, plus an AI opportunity layer. Delivered within 72 hours. €1,500 fixed. Restricted accounts prioritised.
See audit options →Path 3 · Direct
Strategy Call
30 minutes, your category, your current setup, honest answer on whether the framework applies and what it would cost to build.
Book the Call →Or email contact@adpistols.com and describe your category and what you're running into.