ConvertKit automation filters stack in reverse order—here’s how

The newsletter for newsletter operators

Daily field notes on deliverability, AI tools, hosting, and monetisation. No "top 10 plugins" filler — real tools, real numbers, real failures.

ConvertKit’s visual automation builder looks intuitive—drag a few boxes, connect some arrows, add a filter or two, and you’re done. But there’s a non-obvious quirk in how the platform evaluates filter conditions that trips up even experienced operators: filters stack in reverse order.

If you’ve ever set up an automation rule with multiple conditions and watched subscribers either flood through when they shouldn’t or fail to trigger when they should, this is the mechanic that explains it.

How filter stacking actually works

ConvertKit evaluates conditions from the bottom of your filter list upward, not top-to-bottom like you read. If you add three conditions—say, “has tag A,” “does not have tag B,” and “signed up more than 7 days ago”—the platform checks the bottom condition first, then works its way up.

This matters when you’re using AND/OR logic. A rule that reads clearly in your head when stacked top-to-bottom can behave completely differently when evaluated in reverse.

Here’s a concrete example: you want to send a product launch email only to subscribers who opened your last broadcast and don’t already own the product. You add two filters:

  • Top filter: Opened broadcast “Pre-launch Teaser”
  • Bottom filter: Does not have tag “Customer”

ConvertKit checks the “Customer” tag first. If that passes, it checks the open. But if you’re using OR logic somewhere in the stack, the sequence can fire for anyone without the tag—even if they never opened the email.

The fix is to reverse your mental model: build filters from the bottom up, with your most restrictive condition at the top of the list.

When this breaks automations silently

The stacking order doesn’t throw an error. Your automation just underperforms, and you won’t know why unless you manually trace a few subscriber paths.

Common failure modes:

  • Welcome sequences fire for existing customers. You added a “new subscriber” filter at the top, but an OR condition lower in the stack lets tagged users through.
  • Upsell emails go to people who already bought. You filtered for “does not have tag X,” but a date-based condition evaluated first and passed everyone through.
  • Re-engagement campaigns trigger immediately. You set “inactive for 30 days” at the top, but ConvertKit checked a different condition first and started the sequence early.

These bugs don’t show up in the builder UI. The visual flow looks correct. But the logic runs backward.

How to audit your existing automations

Open each automation rule and list your filters on paper, bottom to top. Then walk through the logic as ConvertKit would execute it. Ask:

  • Does the bottom condition pass the right people?
  • If yes, does the second-to-bottom refine or expand that group?
  • Are any OR statements letting in subscribers you didn’t intend?

If you’re using more than three filters, consider splitting the automation into two rules. ConvertKit’s AND/OR toggle applies to the entire stack, so complex logic gets hard to reason about fast.

For high-stakes sequences—product launches, course enrollments, refund follow-ups—test with a single subscriber first. Tag yourself, trigger the automation manually, and confirm you land in the right sequence at the right time.

One non-obvious workaround

If you need granular control and can’t get the filter stack to behave, move your logic into tags instead of filters. Create a dedicated tag that represents the exact subset of subscribers you want to target, then use a separate automation to apply that tag based on behavior.

For example, instead of filtering for “opened email A AND does not have tag B AND signed up more than 7 days ago,” create a tag called “Launch-Eligible” and use one automation to apply it when all three conditions are true. Then trigger your launch sequence with a single filter: “has tag Launch-Eligible.”

It’s an extra step, but it eliminates ambiguity. You’re offloading the logic from ConvertKit’s filter stack into a tagging rule you control, and the sequence itself becomes a simple on/off switch.

This approach also makes debugging faster. If someone didn’t receive the email, you check whether they have the tag. If they don’t, you trace back through the tagging automation to see which condition failed.

ConvertKit’s automation builder is powerful, but the reversed filter evaluation is a sharp edge. Once you know how it works, you can design around it. Until then, it’s easy to ship a sequence that looks right but runs wrong.

Got a ConvertKit automation that’s misbehaving? Reply with the filter setup—I’ll walk through how the platform is likely evaluating it.

The newsletter for newsletter operators

Daily field notes on deliverability, AI tools, hosting, and monetisation. No "top 10 plugins" filler — real tools, real numbers, real failures.

Other newsletters you might like

Love Germany

Love Germany — in your inbox Castles, hidden gems and the best places to visit in Germany. One short email, every day.

Subscribe

Love Netherlands

Canal towns, hidden villages, Dutch stories — a slow, loving look at the Netherlands, written by the people who love it most.

Subscribe

Love New York

Love New York is a website and newsletter that is dedicated to the promotion of New York as a travel destination. Everything great about the big apple.

Subscribe

Springbokfans

The best Springbok updates, straight to your inbox. Only when something worth reading actually happens.

Subscribe

Newsletters via the One Two Three Send network.  ·  Want your newsletter featured here? Click here