Blog

DPA Feed Errors and Disapprovals: A Field Guide to Fixing Them

The DPA feed errors that actually matter, sorted by likelihood. Image policy violations, pixel mismatches, product set rule traps, and the underdelivery causes Meta's feed report won't tell you about.

AI Shopping Feeds TeamAI Shopping Feeds Teamon May 26, 2026
DPA Feed Errors and Disapprovals: A Field Guide to Fixing Them

A DPA campaign that’s underdelivering, getting disapproved, or sitting “in review” longer than expected is almost always one of six things. This playbook covers them in order of how often they’re the real cause — read top to bottom, fix as you go.

If you only have five minutes, run the diagnostic triage in the HowTo above and come back to read the rest after the campaign is recovering.

1. Image policy violations

The single largest cause of DPA disapprovals in 2026. Meta’s automated image review has tightened over the last 18 months and creatives that passed in 2024 don’t always pass now.

What gets flagged

  • Text overlays. Anything overlaying the product — sale percentage, “NEW” stickers, watermarks, logos, prices. Meta’s threshold is roughly 20% of the image area, but the auto-reviewer over-flags in busy retail windows, so even legitimate logos in corners can trip it.
  • Promotional language baked into images. “FREE SHIPPING” or “50% OFF” rendered into the image rather than the title or sale_price field.
  • Collage images. Multiple products in one image. Even subtle ones — a bag with the contents arranged next to it — can fail.
  • Low resolution. Anything under 500 x 500. Meta accepts smaller without complaint but then under-serves the ad because thumbnails look bad.
  • Adult or restricted imagery. Self-explanatory, with the caveat that the auto-reviewer is conservative on lingerie, swimwear, and certain fitness verticals.

The fix

Stop baking creative into images at the source. Use clean product shots in image_link and apply badges, prices, and brand elements at render time through a template that pulls dynamic data from the feed. This is what branded DPA creative solves — the source image stays policy-compliant, the rendered creative carries everything you wanted in the overlay, and you don’t have to re-shoot the catalog when policies change.

2. Pixel and feed ID mismatches

Symptom: the feed validates, the catalog loads, the campaign delivers, but performance is poor and Advantage+ never seems to find its rhythm.

The cause is almost always that pixel content_ids and feed ids don’t match. Meta’s algorithm can’t link user behaviour to specific products, so it optimises against an incomplete signal.

How to confirm

Events Manager → Diagnostics → Pixel. The “Catalog match rate” metric. Target 95%+. At 90% you’re losing optimisation quality. At 75% the pixel is effectively misconfigured.

Common mismatch patterns

  • Variant IDs in pixel, parent IDs in feed. Shopify ships with variant IDs by default in pixel events; many feed tools use parent product IDs. The two never match. Fix at the pixel level — use content_ids that match what the feed exposes.
  • SKU codes vs database IDs. Stores that sync product database IDs to the pixel but human-readable SKU codes to the feed. Pick one and use it consistently.
  • URL parameters in IDs. A product link with ?utm_source= appended is a different “ID” to the pixel than the clean URL in the feed. Strip parameters before sending to pixel.
  • Trailing slashes, capitalisation, locale prefixes. Treated as different IDs. Normalise both ends.

The fix

Decide on one canonical ID format. Use it in the feed’s id field. Configure your pixel (or Conversions API) to send the same format in content_ids. Verify in Events Manager that match rate climbs above 95% within 7 days.

3. Product set rules that over-filter

Symptom: a product set you built to hold 10,000 SKUs has 1,200. The campaign delivers but never finds scale. Meta’s not throttling; the set genuinely doesn’t have items.

How it happens

Product set rules compound. Each clause cuts the set. A rule that looks reasonable —

availability = "in stock"
AND price > 0
AND brand IS NOT NULL
AND google_product_category CONTAINS "Apparel"

— silently excludes every new SKU where the price hasn’t synced yet, every house-brand product where brand is empty, every item miscategorised under “Clothing > Apparel” instead of “Apparel”.

How to confirm

In Ads Manager → Product Sets, open the set and apply the rule filter to the full catalog manually. Count what comes back. If it’s much lower than expected, the rule is the problem.

The fix

Loosen the rule, one clause at a time, watching the count. Then add back what’s actually necessary. Usually one or two clauses are doing 95% of the filtering work and the others are decorative.

4. Feed staleness

Symptom: ads keep delivering for products that are out of stock, prices in ads don’t match prices on the site, “available for order” appears on items long after they’ve been discontinued.

How it happens

Feed refresh cadence too slow for the inventory’s velocity. A daily-refreshed feed on an hourly-changing catalog is always 12 hours behind on average.

The fix

  • Switch to hourly refresh for active assortments.
  • For real-time accuracy on price and availability, use the Catalog Batch API to push updates between scheduled fetches.
  • Verify the availability field is being updated, not just the price. Many feed integrations sync prices well but leave availability stuck on in stock.

5. Restricted category disapprovals

Symptom: an entire product category is in review for days, then disapproved with a vague policy reason.

Categories Meta restricts

  • Alcohol — restricted to specific countries, requires age-gating
  • Health supplements and dietary products — restricted claims, no before/after imagery
  • Beauty (some sub-categories) — restricted in 2025 to specific claims
  • Subscription products — must disclose recurring billing
  • Cryptocurrency, gambling, financial services — heavily restricted

How to confirm

Account Quality → Restrictions. Categories your account is restricted in will be listed. The disapproval reason in Diagnostics is sometimes vague; Account Quality is usually clearer.

The fix

Comply with the category-specific rules. Appeals rarely succeed because the underlying rules aren’t negotiable. The exception is when a product is mis-categorised by Meta’s classifier — appealing with the correct category usually resolves it.

6. Default-creative underdelivery

This isn’t an “error” — the campaign is healthy, the feed is clean, the pixel matches. The ads just don’t perform.

Why

The default Meta DPA template (white background, product image, small title, price) underperforms branded creative by 30–60% on CTR in 2026. The algorithm sees low CTR, throttles delivery, the campaign stalls below its potential.

How to confirm

Compare CTR on your DPA campaigns to your other Meta ad campaigns (brand, conversion, traffic). If DPA CTR is dramatically lower, creative is the cause, not feed or pixel.

The fix

Replace the default template with branded DPA creative — your brand colours, type, dynamic price tags, conditional sale badges, rendered against every SKU in the feed. The branded DPA creative playbook covers the approach.

The DPA Creative Editor is the operational tool for this. One template, every SKU, published to Meta, Google, and TikTok.

Errors Meta’s report doesn’t tell you about

The Diagnostics view shows policy and validation errors. It does not show:

  • CTR-driven underdelivery. Below-threshold creative gets throttled, but Diagnostics calls the catalog healthy.
  • Pixel match rate. That’s in Events Manager. Many teams never check it because the catalog looks fine.
  • Product set rule effectiveness. A set with 200 items isn’t an error, it’s just an unfortunately small set.
  • Image quality issues below the rejection threshold. Pixelated thumbnails are accepted but suppress CTR.
  • Duplicate descriptions across SKUs. Treated as one signal by Meta’s relevance scoring; suppresses delivery quality.

A complete audit covers all of these, not just what Diagnostics surfaces. AI Shopping Feeds’ audit feature runs continuous checks across Meta, Google, and TikTok rules, including the ones Meta’s own diagnostics don’t flag.

Putting it together

If you’re triaging a live campaign, the order is:

  1. Read Diagnostics for explicit errors (image, validation, policy)
  2. Check pixel match rate for hidden underperformance
  3. Audit product set sizes for over-filtering
  4. Inspect creative CTR vs other campaigns for branded-template gaps
  5. Refresh feed cadence if availability/price drift is the issue

Most underperforming DPA campaigns recover after fixing two of these. The teams that run continuous audits — not just at triage time — find the issues before they cost budget.

Free forever · No card

Why wait? Try it free today.

Stop managing feeds manually. Start optimising with AI in 30 seconds.

  • 100% free forever, no credit card required
  • 1 brand, 1 feed, 100,000 products per feed
  • Full AI Product Optimisation, Rule Engine, and 200+ channel exports
  • Pay only for AI credits when you need them