A filter is the simplest logic block in Zapier, which is exactly why it is so annoying when it misbehaves. The Zap either pushes through data you wanted blocked, or it goes quiet and the run sits in history marked Filtered while the data in front of you clearly matches what you typed.

Those two symptoms have five repeatable causes. Check them in this order and you will almost always land on the real one before you touch the rest of the workflow.

1. Read the run before you change the filter

Open the Zap, then open Zap history and click the run you care about. A filtered run shows the status Filtered, and the filter step gets a yellow exclamation mark, which simply means the data did not pass the conditions. That is a healthy filter doing its job, so the question is only why the data did not pass.

Click the trigger step and open the Data Out tab. That panel shows the values your app actually sent, field by field, which is the ground truth you are comparing against. Every fix below starts from that panel. It is the same first move we recommend for webhook failures: look at what arrived before you edit any mapping.

If the field you are filtering on shows (missing value), stop here and go to check 2.

2. The mapped field is empty

(missing value) means the app sent nothing for that field. A filter on Phone Number exists will fail for every contact whose phone field is blank in your CRM, and those contacts will pile up as Filtered runs.

Two fixes, depending on what you want:

  • Stop cleanly. Add a (Generic) Does not exist condition to the same filter so the Zap stops when the field is empty, instead of comparing against an empty string.
  • Use a field that always has data. Remap the condition to an ID, an email, or a created-at field that every record carries.

If you only ever tested with one tidy sample record, this is the bug you will hit first in production. Sample data during setup is often richer than live data.

3. The mapping is stale after a trigger change

Field mappings are stored as references, not as copies. Change the trigger app or event, and the filter keeps pointing at fields that no longer exist, so it silently reads (missing value) forever.

The repair is a remap, not a rebuild:

  1. Open the trigger step and click Test trigger to load fresh data.
  2. Open the filter step and delete the mapped field in the condition.
  3. Click the field again and pick the correct one from the refreshed dropdown.
  4. Test the filter with the new sample data.

Watch out for similarly named fields. Apps love Status, Status Code and Status Reason sitting next to each other in the same dropdown, and picking the wrong one produces a filter that looks perfectly configured. If the app renamed a field, compare the name in your filter against the name shown in Data Out.

One extra trap for loops: with Looping by Zapier, map fields from the loop’s real output rather than the _preview_loop_values placeholders, which are empty in live runs.

4. AND and OR are doing the opposite of what you meant

AND requires every condition to be true. OR requires one. The classic broken case is an OR group full of negative rules.

Example: you want to continue when the subject does not contain “Invoice” or “Receipt”. Written as OR, a subject that is literally “Invoice” still passes, because the second rule (does not contain Receipt) is true. OR only needs one rule to win. The fix is to switch that group to AND, where both rules have to hold.

The same logic bites harder with line items. Zapier’s rules are:

Filter conditions What has to pass Result
All positive (Contains, Starts with) At least one line item must pass every condition Zap continues if one row matches
Any negative (Does not contain, Does not start with) Every line item must pass every condition One bad row stops the whole Zap

That second row explains the “filter blocks everything” complaint when you are working with order lines or invoice items. If you need to filter on all line items as one block, convert the line items to text with Formatter first, then filter on the resulting string.

5. Whitespace, case and formats

Text rules in Zapier are not case-sensitive, so “paid”, “Paid” and “PAID” all match an Exactly matches rule. Case is almost never the culprit, which is why so many rounds of guessing go nowhere.

Whitespace is the culprit. A trailing space from a form field, a tab pasted from Excel, or a line break inside a note is enough to break Exactly matches. To see it, open the run, go to Data Out, and click and drag across the value: hidden characters show up in the highlight.

  • Drop a Formatter: Text > Trim whitespace step in front of the filter and filter on the trimmed field.
  • Relax the rule from Exactly matches to Contains when the value has variations (“Paid”, “Paid in full”).
  • Keep Exactly matches for status and category fields, where Contains would let “Unpaid” slip through “Paid”.

Numbers and dates have their own rules: number conditions only work on numeric values (100 works, “one hundred” does not), and date conditions need a consistent format, since 12/31/2025 and December 31, 2025 are different strings. Standardize the format in a Formatter step before the filter.

6. The problem is upstream of the filter

If the filter never even gets a chance to evaluate, look at the step before it. When a search step finds nothing, the filter and every later step are skipped, so the run stops without the filter being the cause. The same is true for a filter placed after a step that already failed.

It also helps to remember what a filter is not: it stops the run, it does not skip one step. If you need “do this only for X, otherwise carry on with everything else”, that is a branching problem, so use Paths instead of a filter. And if Zapier shows a warning that the Zap will always continue past the filter, you probably mapped the same field into both sides of the condition, which makes the check true by definition.

The five checks, in order

  1. Zap history says Filtered and shows which condition failed.
  2. Data Out shows (missing value) for the mapped field: remap it or add Does not exist.
  3. The trigger changed since setup: reload sample data and re-select the field.
  4. AND and OR, plus the negative-condition line item rule: all rows must pass when a negative rule is present.
  5. Hidden whitespace, or a number or date format that does not match: add a Formatter step before the filter.

Once the filter behaves, the steps behind it deserve the same scrutiny. If the workflow writes to a spreadsheet, the trim and format steps you learned here also protect your rows in Zapier + Google Sheets workflows. If the destination is a database, the failure mode looks familiar: a value that arrived empty breaks the rest of the chain, which is how most rollup problems in Notion start.

FAQ

Why does my Zap stop at the filter when the data looks correct? Nine times out of ten the field contains something you cannot see. A trailing space, a tab, or a line break is enough to break an Exactly matches rule, because Paid and Paid with a space are not the same string. Open the Zap run, check the Data Out tab for the step before the filter, then click and drag across the value to highlight hidden characters.

Do filter steps use up my Zapier tasks? No. Zapier states that using filters or paths does not count toward task usage. Only the steps that actually run after a filter passes consume tasks, which is why a filter is cheaper than letting a Zap run to the end and deleting the result later.

Can I use a filter on Zapier’s free plan? No. Filter is listed as available on Zapier’s paid plans (Professional, Team and Enterprise), not on the free plan. If the Filter step is missing or locked in your editor, that is a plan limit and not a bug. The same gate blocks publishing when the Zap needs a paid feature somewhere else, which is one of the causes in why a Zap will not turn on.

Can a filter skip one step instead of stopping the whole Zap? No. When a filter stops a run, no further actions are performed at all, and the run is marked Filtered in Zap history. To branch instead of stopping, use Paths so each branch has its own rules and steps.

Sources