a.ads
← All guides

How Meta campaigns work

The exact objectives, learning-phase thresholds, budget floors, creative specs and policy rules the agent works from — rendered from the same versioned knowledge module, nothing added.

Meta best practice · knowledge v2026-07-13.1, verified 2026-07-13

Integration status

Connected platform: OAuth connect + sync live; publishing goes through the approval gate and META_TRAFFICKING_ENABLED.

Objectives

Every campaign starts from a goal. Each goal maps to one Meta objective with its own optimization events, required setup and learning phase.

AwarenessOUTCOME_AWARENESS
Optimizes for
reach
Bidding
lowest_cost (default); cost_cap after stable signal
Required before launch
page_id
Learning phase
~50 events / 7 days per ad set

Allowed CTAs: learn more, see more.

TrafficOUTCOME_TRAFFIC
Optimizes for
landing_page_view
Bidding
lowest_cost (default); cost_cap after stable signal
Required before launch
page_id
Learning phase
~50 events / 7 days per ad set

Allowed CTAs: learn more, see more, get offer.

EngagementOUTCOME_ENGAGEMENT
Optimizes for
post_engagement
Bidding
lowest_cost (default); cost_cap after stable signal
Required before launch
page_id
Learning phase
~50 events / 7 days per ad set

Allowed CTAs: learn more, see more, sign up, subscribe.

LeadsOUTCOME_LEADS
Optimizes for
lead
Bidding
lowest_cost (default); cost_cap after stable signal
Required before launch
page_id; pixel recommended for website leads
Learning phase
~50 events / 7 days per ad set

Allowed CTAs: sign up, learn more, get offer, subscribe, download, apply now, get quote.

SalesOUTCOME_SALES
Optimizes for
purchase
Bidding
lowest_cost (default); cost_cap after stable signal
Required before launch
pixel_id + conversion event (promoted_object)
Learning phase
~50 events / 7 days per ad set

Allowed CTAs: shop now, buy now, order now, get offer, subscribe.

AppOUTCOME_APP_PROMOTION
Optimizes for
app_install
Bidding
lowest_cost (default); cost_cap after stable signal
Required before launch
application_id + object_store_url (promoted_object)
Learning phase
~50 events / 7 days per ad set

Allowed CTAs: download, use app, sign up, learn more.

Text limits

FieldHard maxRecommended
Headline255 chars≤ 40 chars
Primary text· check docs3000 chars≤ 125 chars
Description· check docs255 chars≤ 30 chars

Headline: 255 is the API hard cap the repo already enforces; ~27 chars is safest before feed truncation.

Primary text: ~125 chars show before the fold ('see more'); hard cap re-verify against current docs.

Description: Shown only in some placements; keep to ~30 chars.

Creative specs

Ship the full ratio set per placement — serving one stretched asset everywhere is penalized by delivery ranking.

Feed
4:5 — min 1080×1350px, jpg/png, ≤ 30 MB· check docs
1:1 — min 1080×1080px, jpg/png, ≤ 30 MB· check docs
Stories reels
9:16 — min 1080×1920px, jpg/png, ≤ 30 MB · keep text inside safe zone (top 13%, bottom 20%)· check docs
In stream video
9:16 — min 1080×1920px, jpg/png, ≤ 30 MB · keep text inside safe zone (top 13%, bottom 20%)· check docs
Search
1:1 — min 1080×1080px, jpg/png, ≤ 30 MB· check docs
Right column
1:1 — min 1080×1080px, jpg/png, ≤ 30 MB· check docs
Audience network
1.91:1 — min 1200×628px, jpg/png, ≤ 30 MB· check docs
1:1 — min 1080×1080px, jpg/png, ≤ 30 MB· check docs
Messenger
1:1 — min 1080×1080px, jpg/png, ≤ 30 MB· check docs

Policy rules

Blocks

Ads may not assert or imply knowledge of personal attributes (health condition, financial status, race, religion, sexual orientation). Address the topic, never the person ('diabetes care' ok; 'your diabetes' not).

Blocks

Housing, employment, credit and social-issue ads must declare special_ad_categories (targeting restrictions apply); health/pharma, alcohol, gambling and financial services have per-country restrictions or authorization requirements.

Blocks

No claims of guaranteed health outcomes, cures or diagnosis; no before/after imagery implying results. (The tenant compliance gate enforces the hard cases.)

Warns

No clickbait, engagement bait or sensationalized language; quality ranking penalizes it even when approved.

Common mistakes

Ad-set fanout

Splitting budget across many narrow prospecting ad sets fragments the signal and keeps every set in learning. Consolidate: 1-2 broad sets, creative does the targeting. (The rules engine warns via interest_fanout.)

Lookalike on unqualified seed

Building lookalikes from raw leads or thin seeds scales the wrong profile. Qualify the seed first (buyers, engaged users). (Rules engine: lookalike_on_unqualified.)

Editing during learning

Significant edits (budget, targeting, creative) reset the learning phase. Batch changes; avoid daily budget nudges. (Rules engine: daily_edit_churn_risk.)

One stretched asset for all placements

Serving one ratio everywhere is penalized by delivery ranking; ship the full ratio set per placement. (Rules engine: missing_required_format.)

Working guidance

Direct and human. The first sentence of the primary text must work as a standalone hook; concrete benefit over cleverness; no hype-words.

Hooks

Lead with the strongest concrete claim in the first ~125 characters of primary text and the first 2 seconds of video; hooks phrased as a question or a specific number outperform generic openers.

Source: Meta creative best-practice docs; aligns with COMPONENT_LIMITS in the prompt builder.

Creative refresh

Watch frequency and declining CTR rather than a fixed calendar; at sustained frequency above ~2-3 per week with falling CTR, rotate in new creative. Typical refresh window is every 2-4 weeks at steady spend.

Source: Meta delivery/auction guidance; the fatigue proposer uses the same CTR-decay signal.

Funnel

Awareness: Awareness buys recognition, not action — judge it on reach and recall proxies, and retarget engagers with a Traffic/Leads campaign rather than expecting conversions directly.

Source: Meta ODAX objective guidance.

Sales: Run Sales only with pixel purchase events flowing; below ~50 purchases/week per ad set, consider optimizing on a higher-funnel event (add-to-cart, lead) until signal matures.

Source: Meta learning-phase guidance; same 50-events/week threshold as the rules engine.

Bidding

Start on lowest-cost (no cap) to buy signal; introduce cost caps only after CPA stabilizes, and expect volume loss when the cap is near the observed CPA.

Source: Meta bidding strategies documentation.

Tone

Engagement: Engagement optimizes for interactions — conversational, opinionated copy earns comments; pure product copy underperforms here.

Source: Meta creative guidance per objective.

Last verified against official Meta documentation: 2026-07-13 (module v2026-07-13.1). Values marked “check docs” are guidance not yet confirmed against the platform's current published specs.

Questions? hello@dotstack.io