Level 1 course IF issue

Hi everyone!
I’m having some difficulty with the Beginners 1 exercise.
The exercise asks us to add a test in the IF condition (if the employee is Mario).
So we end up with an IF that has two conditions: if the status is “processing” and the employee is “Mario”.
So if the IF is TRUE, the output only includes items with “Processing” + “Mario”.
What I don’t understand in the exercise is the FALSE case.
In that case, FALSE returns everything that does not contain the combination “processing” + “Mario”.
In the exercise, however, the questions/answers don’t match my results. I’m missing something.

Could tyou help me please ?
Luis

Describe the problem/error/question

What is the error message (if any)?

Please share your workflow

{
  "nodes": [
    {
      "parameters": {
        "url": "https://learn.app.n8n.cloud/webhook/custom-erp",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "unique_id",
              "value": "bd65a5abf7fc4380ab9f10d57f8c8f7e"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.3,
      "position": [
        208,
        0
      ],
      "id": "26fb31b9-b609-410a-96c7-9bbd7307c79f",
      "name": "HTTP Request",
      "credentials": {
        "httpHeaderAuth": {
          "id": "DzqDSxMw2sFIrimD",
          "name": "Header Auth account"
        }
      }
    },
    {
      "parameters": {
        "operation": "create",
        "base": {
          "__rl": true,
          "value": "appm07M7jVzt2FeRU",
          "mode": "list",
          "cachedResultName": "N8N course",
          "cachedResultUrl": "https://airtable.com/appm07M7jVzt2FeRU"
        },
        "table": {
          "__rl": true,
          "value": "tblmZ9xEOB56kCP1s",
          "mode": "list",
          "cachedResultName": "processingOrders",
          "cachedResultUrl": "https://airtable.com/appm07M7jVzt2FeRU/tblmZ9xEOB56kCP1s"
        },
        "columns": {
          "mappingMode": "autoMapInputData",
          "value": {},
          "matchingColumns": [],
          "schema": [
            {
              "id": "orderID",
              "displayName": "orderID",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "number",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "employeeName",
              "displayName": "employeeName",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 2.1,
      "position": [
        1072,
        -96
      ],
      "id": "2b464f6f-3ced-4e46-b50e-be930007dd2f",
      "name": "Create a record",
      "credentials": {
        "airtableTokenApi": {
          "id": "JgvasrtM5C1RNjzP",
          "name": "Airtable Personal Access Token account"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 3
          },
          "conditions": [
            {
              "id": "2fa44282-c202-425e-a3a1-edb0a5484bf1",
              "leftValue": "={{ $json.orderStatus }}",
              "rightValue": "processing",
              "operator": {
                "type": "string",
                "operation": "equals"
              }
            },
            {
              "id": "9b1a7e57-98ce-4be5-816c-4b20e0a7e860",
              "leftValue": "={{ $json.employeeName }}",
              "rightValue": "Mario",
              "operator": {
                "type": "string",
                "operation": "equals"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.3,
      "position": [
        416,
        0
      ],
      "id": "11b600f5-a68b-4c02-99ab-63ce97e7be22",
      "name": "If",
      "executeOnce": false
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "f7d0c3a8-bce0-40fb-95fb-03748b44951a",
              "name": "orderID",
              "value": "={{ $json.orderID }}",
              "type": "number"
            },
            {
              "id": "4ba386da-2ed8-4241-9952-1de5b60abcbd",
              "name": "employeeName",
              "value": "={{ $json.employeeName }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        864,
        -96
      ],
      "id": "fdedcb3e-e3a6-4edb-b529-33d8cd2a2b44",
      "name": "Edit Fields"
    },
    {
      "parameters": {
        "jsCode": "let items = $input.all();\nlet totalBooked = items.length;\nlet bookedSum = 0;\n\nfor (let i=0; i < items.length; i++) {\n  bookedSum = bookedSum + items[i].json.orderPrice;\n}\n\nreturn [{ json: {totalBooked, bookedSum} }];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        656,
        112
      ],
      "id": "05dc99ad-98ac-4917-b6e1-ce99097882e8",
      "name": "Code in JavaScript"
    },
    {
      "parameters": {
        "authentication": "webhook",
        "content": "=This week we've {{$json[\"totalBooked\"]}} booked orders with a total value of {{$json[\"bookedSum\"]}}. My Unique ID: {{ $('HTTP Request').params[\"headerParameters\"][\"parameters\"][0][\"value\"] }}",
        "options": {}
      },
      "type": "n8n-nodes-base.discord",
      "typeVersion": 2,
      "position": [
        880,
        112
      ],
      "id": "712dff14-0101-4c09-8ed6-3407090fca5e",
      "name": "Discord",
      "webhookId": "a43f133e-ce60-47b6-946f-9f1b000ce058",
      "credentials": {
        "discordWebhookApi": {
          "id": "ZYYVvyLfDms8fUOh",
          "name": "Discord Webhook account"
        }
      }
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "weeks",
              "triggerAtDay": [
                1
              ],
              "triggerAtHour": 9
            }
          ]
        }
      },
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.3,
      "position": [
        16,
        0
      ],
      "id": "d62c99d5-6099-446a-80d6-a8dcebfe591b",
      "name": "Schedule Trigger"
    },
    {
      "parameters": {
        "jsCode": "let items = $input.all();\nlet totalBooked = items.length;\nlet bookedSum = 0;\n\nfor (let i=0; i < items.length; i++) {\n  bookedSum = bookedSum + items[i].json.orderPrice;\n}\n\nreturn [{ json: {totalBooked, bookedSum} }];"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        656,
        -96
      ],
      "id": "bb115484-2a4d-4695-a265-1ccafeffbc70",
      "name": "Code in JavaScript1"
    }
  ],
  "connections": {
    "HTTP Request": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If": {
      "main": [
        [
          {
            "node": "Code in JavaScript1",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Code in JavaScript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Create a record",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code in JavaScript": {
      "main": [
        [
          {
            "node": "Discord",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code in JavaScript1": {
      "main": [
        []
      ]
    }
  },
  "pinData": {},
  "meta": {
    "templateCredsSetupCompleted": true,
    "instanceId": "e8fc57bdad4291d4b96ecf02c356187f8325c5b7a53463d5c9c36f5a0772789b"
  }
}

(Select the nodes on your canvas and use the keyboard shortcuts CMD+C/CTRL+C and CMD+V/CTRL+V to copy and paste the workflow.)

Share the output returned by the last node

Information on your n8n setup

  • n8n version:
  • Database (default: SQLite):
  • n8n EXECUTIONS_PROCESS setting (default: own, main):
  • Running n8n via (Docker, npm, n8n cloud, desktop app):
  • Operating system:
1 Like

Hi @Luis_Esteves Welcome!
As expected this is exactly what should happen, as you have set 2 conditions which should match and if both conditions match the output goes to true else false, as if should contain status = “processing” only so that it should give the right results as adding Mario statement is confusing you.. Just read this again:

Thanks Anshul :folded_hands:

Thanks for your reply!

However, I think there might be a misunderstanding, so let me clarify my issue.

In the exercise, we are asked to add a second condition to the IF node:

  • orderStatus = “processing”

  • AND employeeName = “Mario”

With this setup, the logic is:

  • TRUE branch → only items where both conditions are true (processing AND Mario)

  • FALSE branch → everything else → NOT (processing AND Mario)

So the FALSE output includes:

  • orders that are not processing

  • orders that are processing but not assigned to Mario

  • orders assigned to Mario but not processing

In other words, it’s everything except the combination “processing + Mario”.

However, in the quiz, none of the proposed answers seem to match this logic. All options are more restrictive and don’t reflect what the FALSE branch actually contains.

That’s why I’m confused — it feels like either:

  • the exercise instructions (adding the Mario condition), or

  • the quiz answers

are not aligned.

Did anyone else notice this inconsistency?

Thanks a lot for your help!

yeah you’re understanding the logic correctly — “processing AND Mario” true branch vs everything else in false. the course materials might have slightly different phrasing for the quiz answers, but your logic is right. what does the quiz actually show as options? sometimes it’s just wording differences that make it seem wrong when the logic is correct.

Tthanks Benjamin,

So,

what’s the correct answer for the False branch ?

A. All booked orders (orders that are not processing)

B. All orders that are not processing and assigned to Mario

C. All booked orders that are not assigned to Mario

Luis

@Luis_Esteves That is for you to figure out @Luis_Esteves this is a test! You should not be asking answers on community.

lol you are joking or you are not understanding what I’m trying to explain ? :sweat_smile:

I don’t want the réponses.

I’m telling that the test has an issue and there is no possible response. Maybe a problem or bug with the quizz.

I’m trying to understand because I cannot pass the test because of this bug.

I cannot pass the test because of a bug on the last question.
I need help. Maybee you had the same issue. I know very well the IF conditions, I’m a DEV. But we are facing a bug….

I analysed the test with ChatGPT and it aggrees with the impossible result :

:bullseye: Reminder of the IF conditions:

  • orderStatus = processing

  • AND

  • employeeName = Mario

:backhand_index_pointing_right: TRUE branch = processing AND Mario
:backhand_index_pointing_right: FALSE branch = everything else


:bar_chart: So the FALSE branch contains:

  • :cross_mark: not processing OR

  • :cross_mark: not Mario

  • :cross_mark: or both

A – All booked orders (orders that are not processing) :cross_mark:

→ Too restrictive (there are also “processing” orders that are not assigned to Mario in FALSE)

B – All orders that are not processing and assigned to Mario :cross_mark:

→ Too specific (only a small subset of FALSE)

C – All booked orders that are not assigned to Mario :cross_mark:

1 Like

I was also confused but I chose the correct answer instinctively :sweat_smile: