IF node logic seems inverted - boolean conditions not working as expected

Hi n8n community,

I’m having a strange issue with the IF node where the boolean logic seems inverted or inconsistent.

My Setup:

  • Node “FAQ detector” outputs: {"is_faq": true} (boolean)
  • IF node condition: {{$node["FAQ detector"].json["is_faq"]}} [Boolean] [is true]

Expected Behavior:

  • When is_faq: true → should go to TRUE branch
  • When is_faq: false → should go to FALSE branch

Actual Behavior:

  • When is_faq: true → goes to FALSE branch :cross_mark:
  • When is_faq: false → goes to TRUE branch :cross_mark:

What I’ve Tried:

  1. Changing operator from “is true” to “is false”
  2. Using “is equal to” with boolean type
  3. Clearing executions and recreating the IF node
  4. Different reference formats: {{$node["FAQ detector"].json.is_faq}}

Questions:

  1. Is there a known issue with boolean evaluation in IF nodes?
  2. What’s the correct way to check if a boolean field is true/false?
  3. Could this be related to node version or n8n version?

Any help would be greatly appreciated! :folded_hands:

IF node version: 2.2 (Latest)

Looks like it works for me. I have both
{{ $node["FAQ detector"].json["is_faq"] }}
as well as
{{ $json.is_faq }}
and for

{"is_faq": true}

it evaluates to true and takes the True branch out.