Back to News for Developers

Product Catalog - Image fetching logic

January 5, 2021BySomya Tiwari

Facebook product catalog, which is a container to hold information about the product items you want to advertise or sell across Facebook’s ecosystem, is used to power various products like Dynamic ads, Collection Ads and Marketplace. Billions of product updates are sent to Facebook on a daily basis, but we don’t fetch images for all the products in the inventory. The following FAQs cover some of the common scenarios.

When are images fetched?

When a feed upload finishes, we don't schedule fetch for all the items in the catalog. We will schedule the item for image fetch, only when an item has a pixel fire/app event or is pulled in for ad recommendation. Until then, the status of a newly created item will be “Not Fetched”.

When the image url of a previously fetched item is updated, we change the status of the item to “Outdated” and schedule it again for image re-fetch. The item can remain in “Outdated” state, if the image fetch request fails for any reason. Items with outdated images are not filtered out from ad impressions. We will continue to display the previously fetched images for these products.

When are images not fetched?

  • If the URL of the item didn’t change but the content behind the URL changed (e.g. sometimes advertiser adds or removes "SALE" sticker), we will not re-fetch the image.
  • If the image fetch request failed due to various HTTP errors like service unavailable, request forbidden error, not found error or if the advertiser is throttling Facebook’s requests.
  • If the advertiser blocks Facebook image crawler.
  • We throttle image fetching for items that modify the image URL without changing the content of the image.


We do not recommend adding a timestamp to the URL to make sure the images are downloaded. There is a high chance that we will stop rescheduling image fetching for those items.

What are the various image fetch statuses?

  • If the main image URL of the item could not be fetched, the main image and its additional images will not be updated and the image fetch status of that item will change to “Fetch Failed”.
  • If the main image could be fetched but some of the additional images of the item could not be fetched, the image fetch status will be set to “Partial Fetch”.
  • Items for which images were not fetched will have “Not Fetched” status.

What happens if I am throttling image fetch requests from Facebook image crawler or if the requests failed for other reasons?

If the image fetch fails consecutively, we will block requests for image fetch for that item for 12 hours. If the fetch requests continue to fail, there is a very high chance that we will not schedule it for image fetch.

What other statuses at product level should I know of?

A product is scheduled for review to ensure it doesn't violate any policies. Product review status refers to the status of that integrity check. The products are scheduled for review upon pixel fire or app event or product recommendation. We review all text fields and all images that are or can be made visible in an ad via dynamic templates. The status of the review changes to either “Approved” (item is ready to be shown to the users) or “Rejected” (item seems to be violating our policies, users can choose to appeal it). When a previously reviewed product is updated, we reschedule it for review and the status of that product changes to “Outdated”.