Meta Setup
Business Portfolio, Page, and Pixel — plus hard-won lessons on avoiding an account restriction.
Meta Business Portfolio Setup — Lessons for Avoiding Restriction
A real Business Portfolio was restricted shortly after creation, flagged for "automation." Read this before touching Meta at all for a new client.
- 1.Root cause pattern identified: creating a new Business Portfolio and touching Business Manager intensively (linking payment, creating pixels, building campaigns) too quickly after account creation — especially combined with reusing the same device, browser, network, and payment card as any prior restricted/flagged account — appears to trigger Meta’s automated fraud-detection systems, even for entirely legitimate use.
- 2.Use a genuinely fresh device or browser profile, and a different network than any previously-restricted account.
- 3.Use a payment card that has never been used on any other Meta account, especially a previously-restricted one.
- 4.Don’t rush — space out Business Manager actions (portfolio creation, page creation, pixel creation, payment setup) over at least a few days rather than one session.
- 5.If a restriction does occur, identity-verification review typically resolves within 48 hours to about a week, but can take longer — if pending over a week with zero response, check the platform’s support page directly. A review left incomplete for 30 days converts the restriction into a permanent one — treat any pending review as time-sensitive.
- 6.Avoid third-party "ad account rental" or similar bypass services entirely — these violate platform terms and risk permanent loss of access to pixel/audience data.
Foundational Setup (Business Portfolio + Page + Pixel)
- 1.business.facebook.com → Create a Business Portfolio → fill in business name, your name, business email.
- 2.Verify the business email (check inbox, click the confirmation link).
- 3.Inside the portfolio → Settings → Accounts → Pages → + Add → Create a new Page → name, category, description, profile photo, website link.
- 4.Settings → Data Sources → Pixels (or "Datasets") → + Add → Create a new dataset → name it — note "Add Conversions API for web events to all new and existing datasets" is ON by default. If server-side CAPI will be built manually via GTM later (as in this project), disconnect this afterward (Business Settings → Data Sources → Conversions API connection → toggle off "Automatically connect" + Remove the connection) to avoid two independent CAPI systems running simultaneously.
- 5.Copy the resulting Pixel/Dataset ID.
- 6.In GTM: Tags → New → search the Community Template Gallery for "Meta Pixel" (published by facebook — confirmed live, this project uses the official template) → build following the Pixel Tag Build Checklist below.
Meta Pixel Tag Build Checklist (applies to every Pixel event tag, not just the base one)
- 1.Tag type: Meta Pixel (Community Template Gallery, published by facebook).
- 2.Facebook Pixel ID(s): reference via Constant variable, never typed raw.
- 3.Enhanced Ecommerce dataLayer Integration: leave unchecked unless the site genuinely has ecommerce activity.
- 4.Use GA4 dataLayer Integration: leave unchecked — an automatic-detection feature that conflicts with this project’s explicit-tracking philosophy and risks duplicate/unintended firing.
- 5.Event Name: Standard type, select the correct Meta standard event (PageView for the base tag, Lead for a lead conversion, Contact for a call/message-intent action) — avoid "Custom" unless no standard event genuinely fits.
- 6.Enable Advanced Matching: only when real hashed user data actually exists at that point in the funnel (true post-lead-capture; false for an earlier-funnel click with no user data yet) — map Email/Phone to em/ph.
- 7."Opt in to a Meta-enabled Conversions API integration": leave unchecked, always — this hands control to Meta’s own fully-managed, non-consent-gated CAPI system, bypassing the deliberately-built server-side GTM architecture. Confirmed live: optInMetaCAPI is false on every Pixel tag in this container.
- 8.Consent gating — do not use the tag’s own built-in "Consent Granted (GDPR)" field (a static true/false with no real connection to actual visitor consent). Use GTM’s own Advanced Settings → Consent Settings → "Require additional consent for tag to fire," requiring ad_storage + ad_user_data.
- 9.Triggering: for a page-load-only tag (the base Pixel), pair the page-load trigger with a Consent Update retry-trigger. For an already-event-driven tag (a click-triggered Contact event), use only the real event trigger — do not add the Consent Update retry-trigger here (Debugging Journal #3).