How can an advertiser check which products match an ad-group filter?

The Citead team, updated

In short. Use OpenAI's feed product-query endpoint to inspect matching products before saving an ad-group product set.

Definition: An advertiser can preview a product-filter result by sending the planned filters to OpenAI's feed product-query endpoint before creating or updating an ad group. The response lists matching products and counts so the advertiser can inspect the selection before saving the product set.

Key facts

  • OpenAI documents the preview request as POST /v1/feeds/{feed_id}/products/query, with a filters array and an optional limit.
  • A product must satisfy all filters in the request together. The documented example combines a brand filter with a maximum price filter.
  • An empty filters array queries the feed without additional filters.
  • The sample response contains a data list, total_count, and matched_count.
  • OpenAI's ad-group reference lists supported product fields and limits comparison operators to price and star_rating.

How do you preview the selection?

Use the feed ID attached to the campaign and send the filters you plan to save. This example selects products whose brand is Acme and whose price is at most 100 major currency units:

curl -X POST "https://api.ads.openai.com/v1/feeds/fd_123/products/query" \
  -H "Authorization: Bearer ${OPENAI_ADS_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "filters": [
      {
        "field": "brand",
        "operator": "in",
        "values": ["Acme"]
      },
      {
        "field": "price",
        "operator": "lte",
        "values": ["100"]
      }
    ],
    "limit": 20
  }'

OpenAI's Product Feeds documentation says to query the feed with the planned filters before creating or updating an ad group. Each product must satisfy the filters together. To inspect the feed without an additional condition, send "filters": [].

The example response includes the item ID, brand, title, and price for a returned product, alongside total_count and matched_count. The documented sample has one returned product, the $89 trail shoe, while the $149 jacket is excluded by the price condition.

Which filter fields and operators are supported?

Each filter has a field, an operator, and a values array. OpenAI's Ad Groups reference lists title, body, item_id, offer_id, price, target_url, image_url, product_category, brand, seller_name, external_seller_id, star_rating, condition, and age_group as product-set fields. Numeric comparison values are sent as strings, such as "4.5".

The reference lists in, gt, gte, lt, and lte as operators. It limits gt, gte, lt, and lte to price or star_rating. It also says not to repeat the same field within one product set. If a custom integration supports feed-defined metadata, the Product Feeds guide documents the ads_metadata.<field> form for those fields.

How do you save the checked filters?

After reviewing the response, copy the same filter objects into the ad group's product_set. Set product_feed_id to the feed used by the campaign. The feed guide says that the campaign owns the feed selection and the ad group inherits that feed when product_set is omitted.

For an update, send the complete desired product set, including filters that should remain. Sending the same feed ID with "filters": [] removes product filters. Retrieve the ad group after the update when you need to confirm the resulting product set, because the immediate update response can omit it according to the ad-group reference.

A query result is a selection preview. OpenAI's feed guide says that a matching filter alone does not establish that a product will receive impressions. Product availability, reviews, product filters, and campaign eligibility still apply after ingestion.

FAQ

Can an advertiser preview without filters?

Yes. OpenAI documents an empty filters array for inspecting the feed without additional filters. If the unfiltered result is empty, the guide directs the advertiser to check upload history.

Does a matching product receive an impression?

No serving outcome follows from the preview alone. The feed documentation says that a filter match does not establish that a product will receive impressions, and its campaign workflow calls for checking availability and other serving requirements.

What should an advertiser do when no expected product matches?

Query with an empty filter list, then add the planned filters one at a time. OpenAI documents this sequence for finding the condition that excludes the expected products.

Sources

  1. OpenAI Developers, "Product Feeds", undated
  2. OpenAI Developers, "Ad Groups", undated

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark