Layers

UGC Ad Eligibility

When does a UGC post become eligible for ad selection? What stops it?

View as Markdown

A UGC post is eligible for ad selection when ALL conditions hold:

  1. organic_score >= 4.0 OR project_ads_content.override = 'include'
  2. project_ads_content.override != 'exclude'
  3. safetyFailed != true on the ads_content.safety JSON

Amplification rights (platform side)

Even an eligible-by-score post can't run as an ad without platform authorization from the creator:

  • Meta — the creator must whitelist your brand handle (Branded Content tools).
  • TikTok — the creator must enable Ads authorization for the post (Spark Ads).

These are handled outside Layers, on each platform. Layers selects eligible creative; the platform enforces authorization at ad creation time.

Eligibility flow

post synced via SIFT
    → metrics arrive (need >= 50 views)
        → scored every 6h by update-organic-performance
            → score >= 4.0 OR override = include?
                → ELIGIBLE → enters ad selection pool

Common ineligibility causes

  • Score below 4.0 — needs more engagement, may improve as views accumulate.
  • Excluded by override (project_ads_content.override = 'exclude').
  • Safety failed — content moderation flagged; cannot be overridden.
  • Fewer than 50 views — post is unscored.

Eligibility doesn't equal "running"

Eligible posts enter the creative selection pool. The optimizer picks top-N per ad set based on score and pool mix. Most eligible posts run somewhere; not all.

Watching eligibility

Filter the UGC posts UI to Eligible to see your active pool. Filter to Currently running to see what's actually live as ads.

On this page