How to run a UGC audit: coverage, rights, freshness, value and a sample report
A UGC audit is four measurements and one comparison. Coverage, rights, freshness and value. Plus a sample report on a fictional store, with a fix order.
The first UGC audit I ran took a weekend and a spreadsheet with four tabs. The finding that mattered fitted in one cell. Most of the catalogue had no customer content at all. The products that did were the ones already selling. Nobody had asked, because nobody had a column for it.
In this article
What a UGC audit is for
An audit answers a question the dashboard does not. Is UGC working across the catalogue, or only on twelve products? Most brands run UGC as a series of moments. A campaign, a homepage widget, a gallery on the hero product. The audit turns that into a map of the whole store.
It works like a stock count. Boring, periodic, and the only way to know what you have. The four measurements are coverage, rights, freshness and value. Run them in that order. Value means nothing if half the content counted is not cleared to show.
Coverage: how much of the catalogue has proof
Coverage is the share of products with cleared, live customer content. One piece is enough. Counting SKUs is the naive version. Weight by traffic instead.
A store where 15% of products carry UGC can go either way. Most sessions might see it, or almost none. Pull the product list and join it to 90 days of sessions. Mark each product covered or not. Report the SKU share and the traffic share. The gap between them is your first finding.
Then cut it by category and price band. Coverage clusters where the team already looked: the hero range, the launch, the sale. The long tail often has nothing. That list, sorted by traffic, is next quarter's collection brief. No source for those products? Read own versus rent for a UGC library.
Rights: cleared, dated, and not expired
Every covered piece needs a rights grant that exists, names its source and has not expired. Count the rest as uncleared. That includes grants with no date, because you cannot defend an expiry you do not know.
Legal exposure is one reason. A revoked or lapsed grant also pulls the content from every surface at once. A coverage number that includes it can drop overnight.
Report three counts per product. Cleared and current. Cleared but expiring within 90 days. Uncleared or unknown. The middle column is the renewal list. The rights-expiry audit covers how to find these past a few dozen agreements.
Freshness: the age of the newest post
Freshness is the age of the newest cleared post per product. Most audits skip it. Shoppers notice it. A gallery whose newest post is two seasons old says the product stopped selling.
Set a threshold that fits your cycle. Try 90 days for fashion and beauty, longer for furniture. Report the share of covered products whose newest post is older than that.
Freshness feeds the brief too. A product with twenty old posts needs a nudge more than one with three new ones. Try a post-purchase ask, a hashtag or a QR code on the packaging. The competition runbook is the fastest way to refill a stale product.
Value: engaged visitors against the store average
There is a clean version of the value question and a flattering one. The flattering version compares pages with UGC to pages without. That mostly measures where you chose to put UGC.
The clean version stays on the same pages, in the same window. It compares visitors who engaged with UGC against the store average for those pages. Engaging is a choice, so selection bias remains. A holdout test then confirms or corrects the number.
Keep the revenue lines apart. Attributed revenue is orders matched to a UGC click through the store's order webhook. Influenced cart value is add-to-cart value after an engagement, closed or not. They answer different questions. Never add them together. Engagement metrics go in a third column.
137%
more likely to buy after seeing customer photos
Yotpo, 200k+ stores / 163M orders analyzed
+162%
more revenue per visitor among shoppers who engage with UGC
Bazaarvoice, Shopper Experience Index
161%
higher conversion among shoppers who interact with UGC
Yotpo, 200k+ stores / 163M orders analyzed
A store with 15% coverage and stale galleries will not match a dataset of 200,000 stores. The audit tells you how far off you are.
Sample report: a fictional homeware store
The store sells homeware on Shopify, with 240 live products. It runs one homepage gallery and a reviews app. It has never run an audit. Here is what the outside-in scan and the four measurements found.
Sample score from the free scanner
60 / 100
Solid, with room to grow
- Leaving money on the table (0-30)
- Big gaps to close (30-55)
- Solid, room to grow (55-80)
- UGC powerhouse (80-100)
What the scanner checked
| Check | Stage | Sample result |
|---|---|---|
| A UGC or review widget on the homepage | Collection | Pass |
| AggregateRating or Review schema | Conversion | Fail: reviews show, schema missing |
| Video on the homepage | Display | Pass |
| Instagram or TikTok content embedded | Display | Pass |
| Canonical URL declared | Display | Pass |
| Mobile viewport tag | Display | Pass |
| Rights requested before reposting | Rights | Pass |
| A record of who granted rights, and when | Rights | Fail: grants live in an inbox |
| Revenue per UGC widget visible | Measurement | Fail |
| Top creators and posts by sales known | Measurement | Fail |
What the four measurements found
| Measurement | Sample finding | What it means |
|---|---|---|
| Coverage | 31 of 240 products (13%). Those 31 get 46% of product page sessions. | Covered where traffic is. The long tail is bare. |
| Rights | 212 live pieces. 151 cleared and current, 18 expiring, 43 undated or uncleared. | One live piece in five has no defensible grant. |
| Freshness | 12 of 31 covered products have no post in 180 days. | Four of the top ten products look stale. |
| Value | No order webhook connected. Engagement data only. | No revenue line can be reported yet. |
Sample fix order
This order follows risk first, then reach. Live content without a grant is a problem today. Everything else can wait a week.
- 1Take down or re-permission the 43 pieces with no dated grant.
- 2Renew the 18 grants that expire within 90 days.
- 3Move every grant from the inbox into one rights record.
- 4Add Review and AggregateRating schema to product pages.
- 5Ask recent buyers of the four stale top-ten products for photos.
- 6Brief collection for the top 50 uncovered products by traffic.
- 7Connect the order webhook, then plan a holdout on one surface.
The sample store, before and after the fix order
This audit
- 13% of products covered
- 43 live pieces with no dated grant
- Grants kept in an inbox
- Engagement data only
Next quarter's target
- Top 50 uncovered products briefed
- No live piece without a dated grant
- One rights record for every piece
- Attributed revenue on its own line
Where you are, and what to do next
Where the audit usually lands
- 1
Moments
You’re here ifA homepage gallery, a campaign or two. Coverage under 10% of traffic. Rights in an inbox.
Next moveConnect sources and log rights on every piece. Target the top 50 products by traffic.
- 2
Covered
You’re here ifCoverage past 40% of traffic, rights dated. Freshness slipping, value unmeasured.
Next moveSet a freshness threshold. Run the engaged-versus-average comparison. Ask buyers of stale products.
- 3
Measured
You’re here ifCoverage, rights and freshness reported quarterly. Revenue lines kept apart.
Next moveHoldout-test one surface. Then expand past the product page: email, lookbooks, ads.
- 4
Compounding
You’re here ifThe library grows faster than it expires. Every surface draws from it.
Next movePut the audit on a schedule. Spend the saved time on the long tail.
What the coverage number tells you to do first
Start here
What did coverage come back as, weighted by traffic?
- Under 20% of sessions
A collection problem
Nothing else matters yet. Brief content for the top products, with rights captured on entry.
- Sources connected, little inbound: A post-purchase ask plus a hashtag or in-store QR code. A competition for volume.
- Sources not connected: Connect Instagram, TikTok and reviews first. The backlog is often bigger than it looks.
- 20% to 60% of sessions
A rights and freshness problem
The content exists. Check it is cleared, current and on the right products.
- Many grants undated or expiring: Renewal list first. Nothing stale goes on a new surface until re-permissioned.
- Rights fine, newest posts old: Set the freshness threshold. Nudge the stale top-traffic products.
- Over 60% of sessions
A measurement problem
You have the inventory. Now find its worth with a clean comparison, then a holdout.
- No commerce integration: Report engagement and influenced cart value. Do not model revenue you cannot match.
- Order attribution live: Report attributed revenue on its own line. Holdout-test the biggest surface.
Running the first pass in an afternoon
Two free routes shorten the first pass. The UGC audit scanner checks a public homepage from the outside. It looks for widgets, video, social embeds, review schema and basic page hygiene. Four quick questions cover rights and measurement.
The 30-minute audit is the inside-out version, with a person on the call. Neither replaces the four measurements. Both tell you which one to start with.
FAQs
How often should a UGC audit run?
Quarterly. Coverage and freshness move with the season. Rights expire on their own schedule. A quarter gives the last brief time to change the numbers.
What counts as "covered" for a product?
At least one piece of customer content that is cleared, current and live on the store. A post in the library but on no page does not count. Nor does one with an expired or undated grant.
Why weight coverage by traffic instead of counting products?
The SKU share can flatter or hide the truth. Traffic weighting tells you what shoppers see.
Is engaged-visitor conversion the same as lift?
No. Visitors who engage differ from those who do not. The comparison is an honest first number. A holdout, where some visitors never see UGC, confirms the lift.
Is the sample report from a real store?
No. The store and every figure in it are fictional. They show the format of a report.
Sources
- 1Yotpo, 200k+ stores and 163M orders (customer photos, revenue per visitor)
- 2Bazaarvoice, Shopper Experience Index (conversion on pages with UGC)
- 3Sample report · Fictional store and figures, written to show the report format.
- 4Idukki, free UGC audit scanner
- 5Idukki, the 30-minute UGC audit
- 6Idukki, auditing creator rights before they expire
More from Rohin Aggarwal
- Strategy
The UGC flywheel: how customer content quietly lowers CAC over time
Customer content feeds better ads, better ads lower acquisition cost, lower CAC funds more customers, and more customers make more content. The mechanism is real. So are the three places it stalls.
- Strategy
Own vs. rent: building a UGC library instead of licensing stock and influencer content every quarter
Licensed content is a recurring bill that resets with every campaign. A rights-cleared UGC library is the rare content asset that gets cheaper to use the longer you hold it.
- Strategy
What happens to add-to-cart rate when the UGC gallery moves above the fold
Above the fold wins attention but competes with the buy box for the same screen. A practical look at gallery placement, the scroll-depth tradeoff, and how to test it instead of guessing.