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
| Kind | Operators | Typical use |
|---|---|---|
| Text match | includes, does not include, is equal to, is not equal to, starts with, does not start with, ends with, does not end with | Status is equal to active; SKU starts with SAMPLE- |
| Lists | is in list, is not in list, is in list (regexp), is not in list (regexp), is in google sheet list | Brand allow-list; SKU block-list maintained in a sheet |
| Numbers | is more than, is greater or equal to, is less than, is less or equal to, is between, is not between | Stock above 0; price between 20 and 2,000 |
| Presence | is empty, is blank, is not blank | Drop products with an empty image or barcode column |
| Length | is longer than, is shorter than | Hold back titles under 20 characters |
| Pattern | matches regexp, does not match regexp | Exclude 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.
Sources checked
Examples
Worked examples, by situation
Four stores, four goals, four filter set-ups. Each uses different operators.
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.
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.
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.
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.
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.
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.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.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.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.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.
Tell us your store and channels. We reply within 24 hours.