# UGC Ad Eligibility (/docs/ugc/eligibility)



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) [#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 [#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 [#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" [#eligibility-doesnt-equal-running]

Eligible posts enter the [creative selection](/docs/concepts/ad-eligibility)
pool. The optimizer picks top-N per ad set based on score and pool mix.
Most eligible posts run somewhere; not all.

## Watching eligibility [#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.
