# How to audit product feed health across ad platforms

> Tier: deep. Full contract: quantified decision rules and evidence requirements.

One pass over the product feeds behind Google Shopping, Meta catalogue, TikTok Shop and Pinterest catalogues: disapprovals, gaps, and the revenue trapped behind them.

**Intent.** Find the products the platforms refuse to serve, and rank feed fixes by the revenue they unlock.

## When to use

- Before any peak season: feed rejects discovered in November are margin lost.
- Shopping spend flat while inventory grew.
- After a catalogue migration, re-platforming or price update run.

## When not to use

- Accounts without catalogue-based campaigns anywhere: nothing here applies.
- Mid-crawl: right after a large feed push, platforms need hours to re-evaluate; auditing too early reads churn as breakage.

## Sources

Required: Google Ads
Optional: Meta Ads, TikTok Ads, Pinterest Ads

## Preconditions

- At least one catalogue-backed campaign type live.
- Feed refresh cadence known, so freshness findings mean something.

## Inputs

- `scope`: Feeds or catalogues to inspect. Default: every connected platform with a catalogue.

## Procedure

1. Read product-level status and performance on Google Shopping. — tools: `google_ads_get_shopping_products`, `google_ads_get_shopping_performance`
2. Read the Meta catalogue: products, availability, price mismatches. — tools: `meta_get_catalog_products`
3. Read Pinterest catalogue diagnostics and inventory coverage. — tools: `pinterest_get_catalog_diagnostics`, `pinterest_get_catalog_inventory`
4. Read TikTok shop catalogue diagnostics where connected. — tools: `tiktok_get_shop_catalog_diagnostics`
5. Cross the four: products rejected everywhere, rejected somewhere, and serving everywhere.
6. Rank fixes by the trailing revenue of the affected products. — tools: `google_ads_get_shopping_performance`

## Decision rules

- **When** A product family is disapproved on one platform but serves on the others → **conclude** Platform-specific attribute problem; quote that platform's diagnostic verbatim.
- **When** Top-sellers by trailing revenue appear in any rejected list → **conclude** Lead with them: one unblocked top-seller usually outweighs a hundred long-tail fixes.
- **When** Rejections concentrate in one feed attribute (GTIN, price, availability) → **conclude** One upstream fix, not per-product edits; name the attribute and the count.
- **When** Rejected products carry no trailing revenue anywhere → **conclude** Deprioritise explicitly; a clean feed is not the goal, served revenue is.

## Evidence requirements

- Every finding names the product count, the attribute, the platform diagnostic and the trailing revenue affected.
- Freshness claims cite the feed timestamp, not an assumption.

## Human approval boundary

- Feed fixes happen in the merchant tools upstream; the skill delivers the ranked work order.
- No campaign change follows automatically from a feed finding.

## Failure modes

- Out-of-stock read as broken: availability churn is normal retail; compare against the account's baseline reject rate.
- Price mismatch findings during an active promo window are the promo, not the feed.
- Platforms cache feed verdicts on their own clocks; the same product can legitimately differ between platforms for a day.

## Output

- **Blocked revenue, ranked**: Products or families, trailing revenue, platform, diagnostic.
- **One-fix clusters**: Attribute-level fixes that unblock many products at once.
- **Serving coverage**: Share of catalogue serving per platform.

## Related

- Skill: [product-performance](https://www.getmcpads.com/skills/product-performance.md)
- Skill: [pmax-diagnostics](https://www.getmcpads.com/skills/pmax-diagnostics.md)
- Guide: [campaign-audit](https://www.getmcpads.com/guides/campaign-audit.md)
