Tive um problema no exercício de workflow da Seção 2 do N8N101 ao enviar o CSV

Oi pessoal. Preciso de ajuda na Seção 2 do N8N101 sobre exercício de workflow - Passo 4: Gerar e Finalizar Seu Relatório. Gostaria de saber se alguém conseguiu passar neste passo e que outras coisas eu poderia fazer para corrigi-lo.

Eu encontro esse problema na etapa de envio de um arquivo CSV para https://learn.app.n8n.cloud/webhook/course/n8n101/send-report, e ele continua respondendo vazio.

O que já tentei para corrigir?

  • Alcancei dois pontos de verificação anteriores, portanto o workflow está funcionando bem nessas etapas.
  • Verifiquei novamente para garantir que estava seguindo exatamente as instruções deste passo.
  • Abaixo está meu workflow até agora e o arquivo CSV, que redigi para evitar vazar a resposta.

average_order_total;region;order_totals;order_count;report_generated;assessment_id
999.5;region1;999;9;2026-06-19 11:49:24;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
999.5;region2;999;9;2026-06-19 11:49:24;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
999;region3;999;9;2026-06-19 11:49:24;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
999.5;region4;999;9;2026-06-19 11:49:24;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Uma coisa que noto é que o CSV tem uma coluna assessment_id, então suponho que pode haver um problema na validação que pode estar relacionado com um post anterior, em que assessment_id teve problemas ao ser enviado via header.

Oi @kristinker

Obrigado por reportar isso, mais um typo da minha parte no nosso workflow. Corrigido e testado.

abração,

Oi… Posso perguntar como corrigir isso, já que ainda estou recebendo vazio após enviar o relatório. Obrigado

Oi asdrt,

O problema estava com a n8n academy verificando assessment_it no CSV que o estudante enviou para seu servidor. Executei novamente e ainda funciona, então o problema pode estar na sua configuração atual.

Com isso em mente, você poderia verificar seus passos anteriores antes de enviar o CSV para ver qual deles está dando errado. Você pode usar meu post inicial como checklist:

  • Você passou pelos dois checkpoints anteriores?
  • Seu arquivo CSV se parece com o que anexei? Os dados reais estão redatados, mas os nomes das colunas e o número total de linhas ainda estão corretos.
  • Você seguiu todas as instruções dessa etapa (nome do nó, tipo de dado, nome do campo, etc)

Boa sorte

Já passei pelos pontos de verificação anteriores e segui as etapas. Vou enviar minha configuração e você pode verificar? Meu único problema está na etapa 4. Obrigado pela ajuda.

Claro, você poderia enviar seu workflow para mim, mas antes disso, por favor tente essas etapas. Vejo que seu workflow tem alguns pontos que valem a pena verificar:

  • O nó “SetReportMetaData” tem assessment_id com wrapper em colchetes [xxxx], por favor remova os colchetes. Além disso, vejo que isso não retorna campos do nó anterior, então por favor role para baixo no menu de configuração e selecione Input Fields to Include para All

  • Nó “Convert To File”, por favor abra esse CSV e verifique se ele tem 6 colunas como mencionei anteriormente. Duvido que ele tenha apenas 2 colunas.

Olá @jamiemadden_n8n

Com relação à verificação do servidor de step para CSV, vejo seu comportamento atual quando estudantes enviam um CSV inválido (os estudantes podem enviar um arquivo CSV inválido com apenas 2 colunas (assessment_id e created_date) ou a verificação de assessment_id falha no meu caso original), e o servidor ainda responde com um 200 com corpo vazio, o que deixa os estudantes confusos: “Vejo o node verde, passei? Ou estou suposto corrigir algo?”. Então proponho uma pequena atualização nisso para tornar o feedback mais intuitivo:

  • Se o estudante enviar um CSV inválido e não passar, o servidor deveria responder com 4xx e apontar que o CSV não está correto para que o estudante saiba onde corrigir.

  • Ou se mantivermos a resposta como um 200 vazio por algum motivo, pelo menos deveríamos mencionar isso no checkpoint ou em Troubleshooting para que o estudante tenha consciência que algo está errado e eles ainda não passaram e tenham um jeito de fazer troubleshooting por conta própria.

Buenas, tengo el mismo problema, estuve leyendo el post, y por lo que interpreto, es un problema del servidor verdad? Porque en el último paso, no me asigna el código de verificación y dentro del curso, me queda como que tengo pendiente esta tarea, si me pueden orientar por favor, tal vez hay algo que no estoy viendo. Revise dos veces todas las instrucciones, no encontre ninguna diferencia, pero aún así, no logro obtener el último código de verificación. Los anteriores si los pude obtener, muchas gracias. Adjunto el JSON de mi workflow.

{

“name”: “Section 2 - Sales Data Pipeline”,

“nodes”: [

{

  "parameters": {},

  "type": "n8n-nodes-base.manualTrigger",

  "typeVersion": 1,

  "position": \[

    0,

    -272

  \],

  "id": "ccdc0a3f-c825-4875-9de9-7d7c2014be2b",

  "name": "TriggerManual"

},

{

  "parameters": {

    "url": "https://learn.app.n8n.cloud/webhook/course/n8n101/sales-data",

    "authentication": "genericCredentialType",

    "genericAuthType": "httpHeaderAuth",

    "sendHeaders": true,

    "headerParameters": {

      "parameters": \[

        {

          "name": "X-Assessment-ID",

          "value": "a2522471826abeaf5b090ee65e56e18c"

        }

      \]

    },

    "options": {}

  },

  "type": "n8n-nodes-base.httpRequest",

  "typeVersion": 4.4,

  "position": \[

    224,

    -272

  \],

  "id": "4ee58409-12fc-4709-ace7-c293e03fa8bf",

  "name": "GetSalesData",

  "credentials": {

    "httpHeaderAuth": {

      "id": "QQcXYH9c9Bjq284o",

      "name": "n8n Academy API Key"

    }

  }

},

{

  "parameters": {

    "fieldToSplitOut": "orders",

    "options": {}

  },

  "type": "n8n-nodes-base.splitOut",

  "typeVersion": 1,

  "position": \[

    448,

    -272

  \],

  "id": "c9297b13-caf6-4bc8-9c42-b62bca11d6c4",

  "name": "SplitOrders"

},

{

  "parameters": {

    "assignments": {

      "assignments": \[

        {

          "id": "0c7b5fc4-920a-4363-9468-c9701ed0b3bf",

          "name": "order_id",

          "value": "={{ $json.order_id }}",

          "type": "string"

        },

        {

          "id": "036a73b7-7896-438a-9ecc-440dc6d571d3",

          "name": "customer_name",

          "value": "={{ $json.customer_name }}",

          "type": "string"

        },

        {

          "id": "9994322b-80ea-436a-941f-73d4b394b692",

          "name": "region",

          "value": "={{ $json.region }}",

          "type": "string"

        },

        {

          "id": "e3eebd43-39e2-4b91-b760-66b7e18f1863",

          "name": "status",

          "value": "={{ $json.status }}",

          "type": "string"

        },

        {

          "id": "cde0d5f0-ff61-4f63-8209-735324c8e3e9",

          "name": "order_total",

          "value": "={{ $json.quantity \* $json.unit_price }}",

          "type": "number"

        }

      \]

    },

    "options": {}

  },

  "type": "n8n-nodes-base.set",

  "typeVersion": 3.4,

  "position": \[

    672,

    -272

  \],

  "id": "a436a191-3500-4f9f-9b3c-de2834021079",

  "name": "SetOrderTotals"

},

{

  "parameters": {

    "aggregate": "aggregateAllItemData",

    "destinationFieldName": "orders",

    "options": {}

  },

  "type": "n8n-nodes-base.aggregate",

  "typeVersion": 1,

  "position": \[

    896,

    -464

  \],

  "id": "4c0c71d2-2f34-49bc-8436-7a0d99ee90b9",

  "name": "AggregateOrders"

},

{

  "parameters": {

    "method": "POST",

    "url": "https://learn.app.n8n.cloud/webhook/course/n8n101/process-orders",

    "authentication": "genericCredentialType",

    "genericAuthType": "httpHeaderAuth",

    "sendHeaders": true,

    "headerParameters": {

      "parameters": \[

        {

          "name": "X-Assessment-ID",

          "value": "a2522471826abeaf5b090ee65e56e18c"

        }

      \]

    },

    "sendBody": true,

    "bodyParameters": {

      "parameters": \[

        {

          "name": "orders",

          "value": "={{ $json.orders }}"

        }

      \]

    },

    "options": {}

  },

  "type": "n8n-nodes-base.httpRequest",

  "typeVersion": 4.4,

  "position": \[

    1120,

    -464

  \],

  "id": "b75a2fd2-94ed-4b73-ae50-bc4b716b67d9",

  "name": "SendOrders",

  "credentials": {

    "httpHeaderAuth": {

      "id": "QQcXYH9c9Bjq284o",

      "name": "n8n Academy API Key"

    }

  }

},

{

  "parameters": {

    "conditions": {

      "options": {

        "caseSensitive": true,

        "leftValue": "",

        "typeValidation": "strict",

        "version": 3

      },

      "conditions": \[

        {

          "id": "84d523d2-884a-44f6-bc84-1c7a9788ced5",

          "leftValue": "={{ $json.status }}",

          "rightValue": "delivered",

          "operator": {

            "type": "string",

            "operation": "equals"

          }

        }

      \],

      "combinator": "and"

    },

    "options": {}

  },

  "type": "n8n-nodes-base.if",

  "typeVersion": 2.3,

  "position": \[

    896,

    -176

  \],

  "id": "b74fb43d-2d94-4af1-b3a5-fc17c2f8678a",

  "name": "FilterDelivered"

},

{

  "parameters": {

    "fieldsToSummarize": {

      "values": \[

        {

          "aggregation": "sum",

          "field": "order_total"

        },

        {

          "field": "order_total"

        },

        {

          "aggregation": "average",

          "field": "order_total"

        }

      \]

    },

    "fieldsToSplitBy": "region",

    "options": {}

  },

  "type": "n8n-nodes-base.summarize",

  "typeVersion": 1.1,

  "position": \[

    1120,

    -272

  \],

  "id": "b79acb85-1eee-4b10-ae31-634770ac3503",

  "name": "SummarizeByRegion"

},

{

  "parameters": {

    "keys": {

      "key": \[

        {

          "currentKey": "sum_order_total",

          "newKey": "order_totals"

        },

        {

          "currentKey": "count_order_total",

          "newKey": "order_count"

        },

        {

          "currentKey": "average_order_total",

          "newKey": "avarege_order_total"

        }

      \]

    },

    "additionalOptions": {}

  },

  "type": "n8n-nodes-base.renameKeys",

  "typeVersion": 1,

  "position": \[

    1344,

    -272

  \],

  "id": "0a89ddb6-6598-45a7-82e7-8535f2e4749c",

  "name": "UpdateFieldNames"

},

{

  "parameters": {

    "aggregate": "aggregateAllItemData",

    "destinationFieldName": "regions",

    "options": {}

  },

  "type": "n8n-nodes-base.aggregate",

  "typeVersion": 1,

  "position": \[

    1568,

    -368

  \],

  "id": "e4d2ff81-11e5-4994-991b-008b91d87062",

  "name": "AggregateRegions"

},

{

  "parameters": {

    "method": "POST",

    "url": "https://learn.app.n8n.cloud/webhook/course/n8n101/validate-analysis",

    "authentication": "genericCredentialType",

    "genericAuthType": "httpHeaderAuth",

    "sendHeaders": true,

    "headerParameters": {

      "parameters": \[

        {

          "name": "X-Assessment-ID",

          "value": "a2522471826abeaf5b090ee65e56e18c"

        }

      \]

    },

    "sendBody": true,

    "bodyParameters": {

      "parameters": \[

        {

          "name": "regions",

          "value": "={{ $json.regions }}"

        }

      \]

    },

    "options": {}

  },

  "type": "n8n-nodes-base.httpRequest",

  "typeVersion": 4.4,

  "position": \[

    1792,

    -368

  \],

  "id": "504d6d3e-3914-408d-a0bf-b30b328c298f",

  "name": "SendAnalysis",

  "credentials": {

    "httpHeaderAuth": {

      "id": "QQcXYH9c9Bjq284o",

      "name": "n8n Academy API Key"

    }

  }

},

{

  "parameters": {

    "assignments": {

      "assignments": \[

        {

          "id": "3471e8c4-6494-4d87-8c27-fcd8f626a2f7",

          "name": "report_generated",

          "value": "={{ $now.format('yyyy-MM-dd HH:mm:ss') }}",

          "type": "string"

        },

        {

          "id": "797e341f-6d34-4e56-b428-1644a78d3915",

          "name": "assessment_id",

          "value": "a2522471826abeaf5b090ee65e56e18c",

          "type": "string"

        }

      \]

    },

    "includeOtherFields": true,

    "options": {}

  },

  "type": "n8n-nodes-base.set",

  "typeVersion": 3.4,

  "position": \[

    1568,

    -176

  \],

  "id": "a1638fbf-f6fd-403a-8ce9-d73f965985b7",

  "name": "SetReportMetadata"

},

{

  "parameters": {

    "binaryPropertyName": "report",

    "options": {}

  },

  "type": "n8n-nodes-base.convertToFile",

  "typeVersion": 1.1,

  "position": \[

    1792,

    -176

  \],

  "id": "28660eaa-4cb1-4952-ac18-2c4bb28fcbe3",

  "name": "ConvertToCSV"

},

{

  "parameters": {

    "method": "POST",

    "url": "https://learn.app.n8n.cloud/webhook/course/n8n101/send-report",

    "authentication": "genericCredentialType",

    "genericAuthType": "httpHeaderAuth",

    "sendHeaders": true,

    "headerParameters": {

      "parameters": \[

        {

          "name": "X-Assessment-ID",

          "value": "a2522471826abeaf5b090ee65e56e18c"

        }

      \]

    },

    "sendBody": true,

    "contentType": "binaryData",

    "inputDataFieldName": "report",

    "options": {}

  },

  "type": "n8n-nodes-base.httpRequest",

  "typeVersion": 4.4,

  "position": \[

    2016,

    -176

  \],

  "id": "194d9159-bc73-453b-8e18-8c9b0278d31e",

  "name": "SendReport",

  "credentials": {

    "httpHeaderAuth": {

      "id": "QQcXYH9c9Bjq284o",

      "name": "n8n Academy API Key"

    }

  }

},

{

  "parameters": {},

  "type": "n8n-nodes-base.noOp",

  "typeVersion": 1,

  "position": \[

    1120,

    -80

  \],

  "id": "af17a61f-e8d1-4290-9724-7d113bd9124c",

  "name": "IgnoreNonDelivered"

}

],

“pinData”: {},

“connections”: {

"TriggerManual": {

  "main": \[

    \[

      {

        "node": "GetSalesData",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"GetSalesData": {

  "main": \[

    \[

      {

        "node": "SplitOrders",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"SplitOrders": {

  "main": \[

    \[

      {

        "node": "SetOrderTotals",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"SetOrderTotals": {

  "main": \[

    \[

      {

        "node": "FilterDelivered",

        "type": "main",

        "index": 0

      },

      {

        "node": "AggregateOrders",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"AggregateOrders": {

  "main": \[

    \[

      {

        "node": "SendOrders",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"FilterDelivered": {

  "main": \[

    \[

      {

        "node": "SummarizeByRegion",

        "type": "main",

        "index": 0

      }

    \],

    \[

      {

        "node": "IgnoreNonDelivered",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"SummarizeByRegion": {

  "main": \[

    \[

      {

        "node": "UpdateFieldNames",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"UpdateFieldNames": {

  "main": \[

    \[

      {

        "node": "AggregateRegions",

        "type": "main",

        "index": 0

      },

      {

        "node": "SetReportMetadata",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"AggregateRegions": {

  "main": \[

    \[

      {

        "node": "SendAnalysis",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"SetReportMetadata": {

  "main": \[

    \[

      {

        "node": "ConvertToCSV",

        "type": "main",

        "index": 0

      }

    \]

  \]

},

"ConvertToCSV": {

  "main": \[

    \[

      {

        "node": "SendReport",

        "type": "main",

        "index": 0

      }

    \]

  \]

}

},

“active”: false,

“settings”: {

"executionOrder": "v1",

"binaryMode": "separate"

},

“versionId”: “13d25ae4-5903-4e5d-96fd-c31460bd9e79”,

“meta”: {

"instanceId": "54f686cd8025e96d283c85699adf4945c234670c29097dcbc346f6794485ee6a"

},

“nodeGroups”: [],

“id”: “zHhggcePiczrgYaw”,

“tags”: [

{

  "name": "n8n101",

  "id": "ANRJX0kNx03bHS7k",

  "updatedAt": "2026-06-23T03:07:48.986Z",

  "createdAt": "2026-06-23T03:07:48.986Z"

}

]

}

Olá @EzeMorales

No futuro, por favor, crie seus próprios tópicos e compartilhe seu fluxo de trabalho completo para que possamos ajudá-lo.

tchau,

Uh, tá bem, desculpa, não estava a par, havia aproveitado que era o mesmo assunto, desculpa. Agora abro um novo tópico, muito obrigado e desculpa.