Most dynamic ads catalogue failures trace back to one of two causes: feed field errors or identifier mismatches between your pixel events and your catalogue. Your immediate move is to open Commerce Manager diagnostics and download the product-level error report. Some issues disapprove items outright; others just quietly throttle delivery without ever showing up as a hard error.
TL;DR:
- Critical issues often stem from missing or malformed mandatory fields, with price and ID fields causing the majority of disapprovals when not formatted correctly.
- Image URL failures are frequent due to redirects or improper sizes, and currency mismatches between the feed and website can quickly lead to disapproval.
- Proper identifier matching between pixel events, Conversions API, and catalog IDs is essential, as mismatches silently impair ad delivery and performance.
- Regularly reviewing the Diagnostics tab, running validator tests before updates, and verifying match rates help prevent recurring errors and ensure consistent delivery.
- Addressing catalogue errors and harmonizing identifiers typically yields faster ad performance improvements than creative testing alone.
Table of Contents
- Where Meta reports catalogue problems and how to read the diagnostics report
- A concise, ordered 8-step troubleshooting checklist
- Catalogue and feed error types with hands-on fixes
- How to harmonise identifiers between pixel, Conversions API and the catalogue
- Operational monitoring and feed governance to prevent repeat issues
- Practical tips from agency audits and when to call in support
- Why catalogue fixes often outperform creative testing
- Get a free audit of your catalogue and Facebook Ads account
- FAQ
- Sources
Where Meta reports catalogue problems and how to read the diagnostics report
The Diagnostics tab sits inside Commerce Manager, attached to your catalogue, and it is where every item-level problem actually surfaces. Account-level notifications tell you something is wrong; the diagnostics report tells you exactly what and where.
Meta colour-codes every item by severity. Red means a critical error that will stop the product from serving. Yellow flags a warning, something that limits performance without a full block. Green confirms the item is healthy and eligible to serve in dynamic ads. Once you can see the split between red and yellow rows, you already know whether you are dealing with an emergency or a performance leak.
Downloading the product-level CSV turns a vague “items disapproved” banner into a working document. Each row names the product, the specific field that failed, and the exact error message Meta generated, which is far more useful than the summary count shown on the main dashboard.
The report checks nine mandatory fields for every item, and Meta will flag a product the moment one of them is missing, malformed, or inconsistent with your page:
- id: must be unique, stable, and match your pixel’s content_id
- title: descriptive and free of promotional symbols or all-caps text
- description: plain text, no HTML tags, within character limits
- availability: must read “in stock”, “out of stock”, “preorder” or “available for order”
- condition: “new”, “refurbished” or “used”
- price: numeric, matching the currency and amount shown on the landing page
- link: a live, crawlable URL with no redirect chains
- image_link: a direct image URL meeting size and format rules
- brand: present and consistent across your catalogue
Typical error messages include “Missing required field: price”, “Image could not be downloaded”, or “Mismatched currency on landing page”. Each one tells you precisely which product and which attribute to fix, so you never have to guess which part of a thousand-line feed is causing the disapproval.
A concise, ordered 8-step troubleshooting checklist
A reproducible sequence saves hours compared with poking at random items. Work through these steps in order, and stop as soon as you find the cause, since catalogue problems rarely stack.
- Download the diagnostics report and sort by severity. Start with red (critical) rows before touching warnings, since these are the items that will not serve at all.
- Check the nine mandatory fields for presence and formatting. A missing
brandvalue or apricefield with the wrong currency symbol is the single most common cause of mass disapprovals. - Inspect image URLs and destination links. Confirm every
image_linkresolves directly to an image file (not a redirect) and thatlinklands on a live product page without a bounce through an intermediate URL. - Verify content_id against catalogue id with a test event. Fire a test “ViewContent” event and confirm the
content_idpassed by the pixel matches theidfield in your catalogue exactly, including case and leading zeros. - Confirm pixel and Conversions API payload parity. Compare currency fields, value fields and identifiers between browser-side pixel events and server-side CAPI events for the same product and session.
- Check feed processing state before assuming a bug. New or heavily edited feeds can take time to process, so an “under review” status is not automatically a failure; Google’s dynamic feed guidance notes similar crawl windows for other feed-based ad formats, which gives a useful benchmark for how long to wait before escalating.
- Run an end-to-end sample transaction. Add a flagged product to a basket, complete a test purchase, and confirm the resulting Purchase event maps back to the correct catalogue item.
- Escalate to Meta support only after steps 1 to 7. Have the product-level CSV, the test event payload, and the specific error message ready; vague “ads not approved” tickets take far longer to resolve than ones with evidence attached.
Pro Tip: Keep a spreadsheet of every error message you have already resolved, with the fix applied next to it. Repeat failures on new SKUs become a two-minute job instead of a re-investigation.
Catalogue and feed error types with hands-on fixes
Once you know where to look, most errors fall into a small number of repeatable categories.
Missing or malformed mandatory fields cause the bulk of disapprovals, as explained in detail in Why online sizing causes returns: fixes for retailers. A price field written as “£49.99 GBP” instead of a clean numeric value, or an availability field using “In Stock” with inconsistent capitalisation, will often fail validation even though a human reading it would understand it fine. Strip fields back to the exact format Meta expects and re-test a small batch before pushing the whole feed.
Image failures are their own category. Meta’s image specifications call for a minimum of 500×500 pixels, with 1024×1024 recommended, in JPEG, PNG or WebP format, under 8 MB, and with no text overlays on the product shot. A common silent cause is a CDN that redirects image requests rather than serving the file directly. Meta’s crawler often cannot follow that redirect, so the image is marked as “could not be downloaded” even though it loads fine in a browser.
Price and currency mismatches happen when your feed states one currency and your website checkout displays another, or when a sale price in the feed does not match what a shopper actually sees on the landing page. Meta checks this alignment directly, and a mismatch here is one of the fastest routes to a disapproved item.
One in a thousand sounds small, but a single unstable id field can silently break matching for an entire product line, since every event tied to that product stops reconciling with the catalogue the moment the identifier changes, as outlined in Meta’s catalogue and event matching guidance.
Duplicate or unstable IDs usually appear after a platform migration, when a new system generates fresh internal database IDs instead of preserving the original SKU. The fix is to standardise on a stable SKU as the catalogue id from the outset, so migrations never touch the value your ads depend on.
Feed format issues, meanwhile, sit underneath all of the above:
- Encoding problems (non UTF-8 characters) corrupt titles and descriptions silently.
- Incorrect delimiters in CSV feeds split fields in the wrong place.
- Unescaped special characters in XML feeds break the whole file’s parsing.
- Google-style field names mixed into a Meta feed (such as
availabilityvalues formatted for Shopping) cause rejections specific to Meta’s schema.
Running your feed through a validator before upload catches most of these before they ever reach Commerce Manager. For the Shopping side of the same problem, our piece on Google Shopping feed errors covers the equivalent formatting failures in more depth.
Policy disapprovals are the trickiest category because the stated reason is sometimes generic. When a product is disapproved for “policy”, check the specific wording in the CSV first: it usually names the exact policy area, such as prohibited content in the image or a misleading claim in the title, rather than leaving you to guess.
How to harmonise identifiers between pixel, Conversions API and the catalogue
A catalogue can be perfectly formatted and still under-deliver if the identifiers flowing through your pixel do not line up with the id field inside it. This is the quiet failure mode: no red error, no disapproval, just dynamic ads that never find the right product to show.
The most frequent scenario is an internal database ID sent as content_id in your events, while your catalogue uses the product SKU as its id. The two never match, so Meta’s event matching system records zero catalogue matches even though the pixel is technically firing correctly. We cover the exact remediation steps for this in our guide to fixing mismatched IDs in Facebook dynamic ads.
To inspect this properly:
- Use Meta’s test events tool to capture a live browser-side pixel payload and note the exact
content_idvalue sent. - Pull the equivalent server-side Conversions API log for the same user session and compare the identifier field.
- Check that currency codes (ISO format, such as GBP or USD) match across both payloads and the catalogue’s price field, since a currency mismatch can cause an event to be dropped rather than merely misattributed.
Best practice is to standardise on stable SKUs as your content_id everywhere, with any internal database ID mapped server-side immediately before the event is sent. This keeps your catalogue’s historical performance data intact even when backend systems change.
Pro Tip: Treat a sudden drop in match rate as a diagnostics problem before a creative problem. Check identifier parity first; it is a five-minute fix compared with days spent testing new ad copy for a fault that was never creative.
Aim to verify match rate periodically rather than assume it stays stable after a migration or platform switch, since even a well-configured catalogue can drift out of alignment when a backend system changes how it generates IDs.
Operational monitoring and feed governance to prevent repeat issues
A catalogue that passes diagnostics today will not necessarily pass them next week, particularly during price changes or stock updates. A short routine keeps problems from piling up unnoticed.
- Check the Diagnostics tab at a fixed cadence, weekly for most catalogues and daily during sales periods, rather than waiting for a performance drop to prompt a look.
- Run feed updates through a staging environment before pushing to the live feed when making bulk changes, so formatting errors are caught before they reach thousands of items at once.
- Keep a fallback campaign structure ready, such as a static product carousel, so an urgent catalogue issue does not leave you with zero ads running while you fix the feed.
- Build a release-day checklist for any inventory or price change, covering currency consistency, availability status and image link validity before the update goes live.
| Monitoring routine | What it catches | Recommended cadence |
|---|---|---|
| Diagnostics tab review | Red/yellow item errors | Weekly, daily during sales |
| Feed validator run | Encoding, delimiter, escaping errors | Before every upload |
| Match rate check | Pixel/CAPI identifier drift | After any platform migration |
| Staged feed test | Bulk formatting errors | Before large catalogue changes |
Our guide to optimising product feeds sets out a fuller validation workflow if you are building this into a standing process rather than a one-off fix.
Practical tips from agency audits and when to call in support
Running audits across ecommerce catalogues surfaces the same handful of silent failures again and again, usually in accounts that look healthy on the surface.
- A catalogue reporting “healthy” at the account level can still have a meaningful share of top-selling items sitting in warning status, quietly capped rather than disapproved.
- CDN-served images are the single most common unreported failure, since they load fine for a human but fail Meta’s crawler due to a redirect layer.
- ID remapping after a platform migration is rarely done cleanly; a short audit comparing old and new
idvalues against live pixel events catches this fast. - Currency field mismatches between feed and checkout tend to appear after a site redesign, when the checkout display changes but the feed is never updated to match.
Biplab, who put this workflow together, has worked through catalogue audits across eCommerce PPC accounts where the account-level dashboard said nothing was wrong while top sellers sat throttled in warning status.
A formal audit earns its keep when a catalogue has grown past a size where manual row-by-row checking is realistic, or when match rate has drifted and the cause is not obvious from a quick scan. At that point, a structured review against the nine mandatory fields, image specs and identifier parity finds issues faster than ad hoc checking.
Why catalogue fixes often outperform creative testing
Our honest view, after working through enough of these audits, is that most advertisers reach for a creative refresh before they have confirmed their catalogue is actually healthy, and that order is usually backwards. A new set of product images will not fix an item that is disapproved for a missing brand field, and a new ad copy test cannot recover a match rate that has collapsed because of an identifier mismatch.
Feed remediation tends to deliver a faster return on ad spend improvement than creative iteration, simply because it removes a hard block on delivery rather than nudging a variable that was never the bottleneck. We sequence every remediation engagement the same way: diagnostics first, identifier harmonisation second, creative and bidding optimisation only once the catalogue itself is confirmed clean. Skipping that order wastes testing budget on problems a feed fix would have solved in a day.
— Biplab
Get a free audit of your catalogue and Facebook Ads account
If working through diagnostics reports and identifier checks is not how you want to spend your week, our Facebook Ads management service includes catalogue and feed optimisation as part of ongoing account management, built specifically for established eCommerce brands running meaningful ad budgets.
A free Google/Facebook ads audit covers exactly the ground this guide walks through: diagnostics review, mandatory field checks, identifier parity between your pixel and catalogue, and a look at whether your current feed structure is costing you delivery. We ask for read access to your Ads Manager and Commerce Manager account, nothing more, and we will not lock you into a long-term contract to get the findings. If you would rather have the whole account managed going forward, our PPC management service starts from £350 per month.
FAQ
Is there an issue with Facebook ads right now?
Platform-wide outages are rare and usually resolve within hours when they do occur; most “ads not working” reports trace back to account-specific catalogue or feed errors rather than a broader platform problem. Check your own Commerce Manager diagnostics tab first, since that is where an account-specific cause will show up.
What are dynamic ads in Meta Ads Manager?
Dynamic ads automatically show products from your catalogue to people who have already shown interest in them, pulling the image, price and title directly from your feed rather than from a manually built creative. They rely on your catalogue being accurate and on your pixel or Conversions API events matching catalogue items correctly, as described in Meta’s catalogue troubleshooting guidance.
Why is the FB ads library not working?
Most ads library access issues come down to browser or regional restrictions rather than a fault with your own ad account or catalogue. If you are trying to debug your own dynamic ads, the Commerce Manager diagnostics tab is the more useful tool regardless, since the library does not show item-level feed errors.
What causes a dynamic ad to show the wrong product?
This almost always comes down to a content_id in your pixel event not matching the catalogue id for the product actually viewed, which causes the system to serve a different item from your feed. Checking payload parity between your pixel and Conversions API events, as covered in Meta’s event matching guidance, is the fastest way to confirm this.
How long does a catalogue feed take to update after a change?
Processing times vary with feed size and how extensive the changes are, and large or heavily revised feeds can take noticeably longer than small incremental updates. Google’s guidance on dynamic feed processing notes similar crawl and processing windows for other feed-based formats, which is a reasonable benchmark while Meta’s own feed is still showing as under review.
Sources
- Fix issues and manage your product catalog – Meta Business Help
- Why are my Dynamic Search Ads not serving – Google Ads Help
