UGC Scoring
How UGC posts are scored 0–10 for ad eligibility. Pool-specific formula.
UGC posts score in the ugc pool of the
organic scoring algorithm. Score
components:
quality = weighted engagement rate percentile within UGC pool (weight 0.45)
reach = views percentile within UGC pool (weight 0.25)
outperformance = log2(views / creator median views) (weight 0.30)
weighted_er = (likes + 3·comments + 5·shares + 6·saves) / views
freshness = bonus up to +1.5 that decays over 90 daysCombined into a 0–10 score (base multiplier 8.5 + freshness bonus).
Min views threshold
Posts below 50 views are NOT scored. They sit at score 0 until they accumulate enough views (or get archived as too old).
Freshness window
Bonus decays linearly over the 90-day freshness window. After 90 days, posts typically score below threshold and exit the eligible pool.
Why scoring?
Two reasons:
- Most UGC isn't worth amplifying. Even good creators have flop posts. Scoring picks the winners automatically.
- Spend efficiency. Promoting 10 high-quality UGC posts beats promoting 100 average ones with the same budget.
Re-scoring cadence
Every 6 hours, the update-organic-performance workflow rescores all
UGC posts. New metrics → new score.
Score history
Each post's detail panel shows its score over time. You'll see:
- Initial score after metrics first arrived.
- Bumps as engagement compounded.
- Decay as the post aged out of the freshness window.
Manual override
If a post's score is below 4.0 but you want it eligible, set
override = 'include'. If above 4.0 but you want it excluded
(off-brand, contains a competitor), set override = 'exclude'.
Pool-specific scoring
UGC scores are NOT comparable to generated or manual pool scores —
each pool's score is computed differently. The optimizer handles pool
mixing via the creative selection
algorithm.