Guide

Product feed filtering

Product feed filtering decides which products leave your store and reach a channel. It is not storefront filtering for shoppers: it is a set of include and exclude rules on the feed itself, so out-of-stock items, low-margin SKUs, unauthorized brands and broken titles never reach Google Shopping, Meta or a marketplace. Below are the 26 operators Textfinity's filter engine offers and four rule sets for four different goals.

We connect your store, build the feed and keep it in sync. Updated 2026-10-27.

At a glance

  • A filter has an include side and an exclude side: a product stays only if it passes the include rules and no exclude rule claims it.
  • Out of stock: either send out_of_stock honestly, or drop the row. Google says not to use out_of_stock just to hide a product that is still for sale; use excluded_destination or pause instead.
  • Margin floor: keep a Google Sheet of SKUs below your margin threshold and exclude if the SKU is in that google sheet list. Finance edits the sheet, the feed follows on the next build.
  • Brand allow-list: include only if brand is in list, for resellers who may advertise only some brands on some channels.
  • Title guard: exclude if title is shorter than a minimum, so stub titles do not go live while they are being fixed.

How product feed filtering works in Textfinity

Each feed carries its own filter. The include side lists conditions a product must meet; its groups combine with AND or with OR. The exclude side lists conditions that remove a product even if it passed the include side. Leave either side empty when you do not need it. Because the filter belongs to the feed, the Google feed can drop zero-stock items while the Meta feed keeps them for retargeting, from the same source catalog.

Filters run on every rebuild. When the shop's source is re-pulled on its sync schedule, or when you edit a rule and the feed is marked dirty (rebuilt within about five minutes), products move in and out of the feed without any manual export.

The 26 filter operators

KindOperatorsTypical use
Text matchincludes, does not include, is equal to, is not equal to, starts with, does not start with, ends with, does not end withStatus is equal to active; SKU starts with SAMPLE-
Listsis in list, is not in list, is in list (regexp), is not in list (regexp), is in google sheet listBrand allow-list; SKU block-list maintained in a sheet
Numbersis more than, is greater or equal to, is less than, is less or equal to, is between, is not betweenStock above 0; price between 20 and 2,000
Presenceis empty, is blank, is not blankDrop products with an empty image or barcode column
Lengthis longer than, is shorter thanHold back titles under 20 characters
Patternmatches regexp, does not match regexpExclude titles containing (?i)\b(test|sample)\b

Operator names as they appear in the filter editor.

Exclude out-of-stock products from Google Shopping: two honest options

Option one is to keep the row and send availability out_of_stock. Google's availability spec requires the feed to match the landing page and checkout, and a mismatch triggers a disapproval, so an accurate value is the safe default. Option two is to remove the row with an exclude rule on stock. The product leaves the feed and Merchant Center stops showing it, and it comes back when stock returns.

Google's spec warns against using out_of_stock just to keep a product out of ads; if a product is in stock but should not advertise, use excluded_destination or pause. In practice: exclude zero stock from ad feeds for fast-moving catalogs, keep it as out_of_stock for slow restocks where you want the listing to persist.

Filters versus mapping: which tool fixes what

  • Filter when the product should not be advertised at all on this channel: no stock, no margin, wrong brand, test SKU.
  • Map when the product should be advertised but the value is wrong: availability spelled wrong, title too long, price without currency.
  • Exclude temporarily when a product is broken and the fix takes time: a title-length guard keeps stubs out until they are rewritten, then the rule removes nothing.
  • Filter by channel: one catalog, several feeds, each with its own filter. Do not delete products at the source to keep them off one channel.

Examples

Worked examples, by situation

Four stores, four goals, four filter set-ups. Each uses different operators.

Fashion · Google Shopping · Shopify, 4,000 variants

Exclude out-of-stock variants from ads only

Google feed filter

include if [product.status] is equal to "ACTIVE"
exclude if [variant.inventoryQuantity] is less or equal to "0"
exclude if [product.productType] is equal to "Gift Card"

How we set it up

We set is equal to on the include side, and is less or equal to and is equal to on the exclude side. A native Shopify connection has no tags column, so gift cards are caught by product type. The Meta feed for the same shop has no stock rule, so sold-out sizes stay available for catalog retargeting.

Home and kitchen · Google Shopping · CSV export, 1,200 SKUs

Margin floor from a Google Sheet

Before

Sheet "Below 25% margin", column A:
HK-2210
HK-3302
HK-4417

After

Feed: 1,200 products in, 1,137 out
(63 SKUs on the sheet excluded)

How we set it up

We add an exclude rule, [sku] is in google sheet list, pointing at the sheet. Textfinity reads the first column of the first worksheet. Finance keeps the list with a sheet formula over cost and price; the store export never has to carry cost data.

Electronics reseller · PriceRunner and Google · 2,500 SKUs, 40 brands

Brand allow-list per channel

PriceRunner feed filter

include if [brand] is in list "Sony, Bose, Sennheiser, JBL"
exclude if [condition] is not equal to "new"
exclude if [price] is less than "25"

How we set it up

We include with is in list for the brands the distributor allows on price comparison, and exclude with is not equal to and is less than. The Google feed uses a broader list, so each channel advertises only what the contracts permit.

Beauty · Google Shopping and Meta · supplier CSV, 300 SKUs

Title-length guard while copy is fixed

Before

title: Serum
title: Vitamin C Brightening Serum 30 ml, Fragrance-Free

After

Serum: held back
Vitamin C Brightening Serum 30 ml: published

How we set it up

We exclude if [title] is shorter than 20 and if [image] is blank. Feed hygiene's length distribution shows how many stubs exist; once they are rewritten the rule stops excluding anything and can stay as a guard.

Copy this plan

Plan: set up product feed filtering in one sitting

Decide the goal per channel first; the rules follow from it.

  1. 01

    List what each channel must not show

    Write one line per channel: no zero stock on Google, no non-authorized brands on PriceRunner, no subscriptions on Meta. That list becomes the exclude side.

  2. 02

    Check the source columns you will filter on

    Stock, status, brand, price and tags must be present and consistent. Run a hygiene check to see completeness and spelling variants (Sony, SONY) before writing list rules.

    What we set up: We run a feed hygiene check on your catalog and send you the completeness and spelling variants of the columns your rules will read.
  3. 03

    Add the include rules

    Start narrow: active products only, or only the allowed brands. Choose AND or OR for the include groups.

    What we set up: We write the include rules with is equal to or is in list, grouped with AND or OR as your goal needs.
  4. 04

    Add the exclude rules

    Stock at or below zero, test SKUs, prices under your floor, SKUs on the margin sheet.

    What we set up: We add the exclude rules with is less or equal to, starts with or is in google sheet list, pointing at a sheet your team edits.
  5. 05

    Inspect what the filter removed

    Compare the product count before and after, and open a few excluded products to confirm the rule caught what you meant.

    What we set up: We search sample SKUs in the product explorer to confirm which ones the filter keeps and which it removes, and send you the counts.
  6. 06

    Let the channel fetch the filtered feed

    The feed URL stays the same; Merchant Center or the catalog picks up the filtered file on its next fetch. That happens in the channel's own interface.

Customization tips

Make it yours

Use is less or equal to, not is equal to, for stock

Some exports carry negative stock for oversold or backordered items. A rule on is equal to 0 lets -2 through. The trade-off: backorderable products disappear too, so add an include for your backorder tag if you sell them.

Put volatile lists in a sheet, stable ones in the rule

A brand allow-list that changes twice a year belongs in is in list. A margin list that changes weekly belongs in a Google Sheet so non-technical colleagues can edit it. Sheets add a dependency: if the sheet is renamed or unshared, the rule has nothing to read.

Know how numbers are read

Number operators take the first number in the value and ignore thousands commas, so 1,299.00 USD compares as 1299. A value like 2 for 30.00 compares as 2, though; filter on the raw price column rather than a formatted one when the source mixes text and numbers.

Do not over-filter Google

Every excluded product is a product that cannot sell through that channel. Exclusions for margin and stock are deliberate; exclusions for fixable data problems should be temporary and paired with the mapping fix.

FAQ

Questions about product feed filtering

How do I exclude out-of-stock products from Google Shopping?

Either keep them in the feed with availability set to out_of_stock, which matches the landing page and keeps the listing, or remove them from the feed with an exclude rule such as inventory quantity is less or equal to 0. Google advises against marking products out_of_stock only to hide them; for in-stock products you want out of ads, use excluded_destination or pause.

What is the difference between product feed filtering and storefront filtering?

Storefront filtering lets shoppers narrow a category page by size or price. Product feed filtering decides which products are sent to a sales channel such as Google Shopping or a Meta catalog. They use different tools and solve different problems.

Can I filter a product feed with a list from Google Sheets?

Yes. In Textfinity the is in google sheet list operator reads the first column of the sheet's first worksheet and matches a product field against it, for example to exclude SKUs below a margin floor or include only an approved range.

Can different channels get different products from one store?

Yes. Each feed has its own include and exclude rules, so one store can send all products to Meta, in-stock products to Google and a brand-limited subset to PriceRunner, all from the same source.

Set up for you

Tell us what each channel must not show. We'll write the rules.

Send us your store URL and the exclusions per channel. We set up include and exclude rules per feed with the 26 operators and your Google Sheets lists, and every rebuild applies them.

Have us set up my filtersOr email support@textfinity.io

Tell us your store and channels. We reply within 24 hours.