Convert CSV to JSON with n8n Webhook Automation

This workflow automates the conversion of raw CSV data into JSON format using n8n’s webhook and processing nodes. It eliminates manual CSV parsing, reduces errors, and enables seamless integration for developers and businesses handling CSV uploads.
webhook
code
switch
+8
Learn how to Build this Workflow with AI:
Workflow Identifier: 2297
NODES in Use: stickyNote, extractFromFile, respondToWebhook, set, switch, code, if, aggregate, webhook, slack, httpRequest

Press CTRL+F5 if the workflow didn't load.

Visit through Desktop for Best experience

1. Opening Problem Statement

Meet Sarah, a data analyst who regularly receives CSV files containing critical sales data from multiple sources. Every day, she spends over an hour manually converting these CSV files into JSON format so they can be properly ingested by her company’s data processing system. Manual conversion is tedious, error-prone, and time-consuming. One incorrect comma or unexpected delimiter, and the entire dataset could become unreadable. Sarah knows there must be a faster, foolproof way to automate this task.

This n8n workflow solves Sarah’s pain by automating the entire process of converting CSV files — whether sent through HTTP POST raw data or uploaded as file binaries — into JSON format. This eliminates manual intervention, reduces errors, and saves Sarah precious time every day.

2. What This Automation Does

When this workflow runs, it accomplishes the following:

  • Receives raw CSV data or file uploads via a webhook (HTTP POST).
  • Detects the input type automatically using a Switch node and routes data accordingly.
  • Extracts data from file uploads or parses raw CSV text using a custom JavaScript code node.
  • Handles errors gracefully and sends structured error responses.
  • Converts CSV data into JSON objects with flexible delimiter handling (commas or semicolons).
  • Aggregates parsed JSON data and responds back to the webhook caller with a clean JSON output.
  • Sends notifications to a designated Slack channel when errors occur, keeping teams informed.

This automation can save Sarah approximately 1 hour daily while eliminating CSV parsing errors and improving data accuracy.

3. Prerequisites ⚙️

  • n8n account with workflow creation access.
  • Slack account with OAuth2 authentication set up (for error notifications) 💬 🔑.
  • Webhook accessible via internet (ensure the URL is reachable).
  • Basic knowledge of CSV files formats (commas or semicolons as delimiters).
  • curl or similar tool for testing POST requests (optional).

4. Step-by-Step Guide

Step 1: Create the Webhook Node to Receive CSV Data

In n8n, click + Add Node → search for Webhook → drag it onto the canvas.

Configure the Webhook node with:

  • HTTP Method: POST
  • Path: tool/csv-to-json (the endpoint part)
  • Binary Property Name: Set to data to accept file uploads

You should see the webhook URL generated after saving. This is the endpoint you’ll send CSV data to.

Common mistake: Not setting HTTP Method to POST will cause the webhook to reject incoming data.

Step 2: Add a Switch Node for Input Type Detection

Click + Add Node → search for Switch → add it after the Webhook node.

Configure the Switch node with rules to detect:

  • File: Checks if binary data is present.
  • Data/Text: Checks if content-type header equals text/plain.
  • appJSON: Checks if content-type header equals application/json.

Output routes are renamed accordingly for easier branching.

Outcome: Ensures workflow processes raw CSV text, uploaded files, or JSON payloads correctly.

Common mistake: Forgetting to match header names exactly will misroute data.

Step 3: Extract or Prepare Data Based on Input Type

For files, use the Extract From File node, set to read from binary property data0.

For raw text CSV data, add a Set node called Change Field to assign the raw CSV text to a string field named csv.

Common mistake: Not setting the correct binary property name will cause extraction to fail.

Step 4: Convert Raw CSV Text to JSON Using Code Node

Add a Code node named Convert Raw Text To CSV and use this JavaScript snippet to parse CSV data:

const csvData = $input.all()[0]?.json?.csv;

// Split lines and headers using comma or semicolon delimiters
const lines = csvData.split("n");
const headers = lines[0].split(/,|;/);

const jsonData = lines.slice(1).map((line) => {
  const data = line.split(/,|;/);
  let obj = {};
  headers.forEach((header, i) => {
    obj[header] = data[i];
  });
  return obj;
});

if (jsonData.length === 0) {
  throw new Error("No data to process");
}

return jsonData;

This node converts any CSV input with commas or semicolons into a JSON array.

Common mistake: Input field name mismatch or empty CSV causes error.

Step 5: Condition Check for Converted Data

Use an If node labeled Check if Value to verify there is no error key in JSON output from the code node.

If no error, proceed to aggregation; if error, route to error response.

Step 6: Aggregate Data

Add an Aggregate node to collect all JSON items into one array, storing it in the field named jsondata.

Outcome: Prepares the data for clean JSON response.

Step 7: Send Success Response

Configure a Respond To Webhook node named Success Response. This node sends back a JSON response with status OK and the JSON data:

{
  "status": "OK",
  "data": 
}

Common mistake: Not referencing the aggregated JSON data correctly will cause response errors.

Step 8: Handle Errors Gracefully

Setup Respond To Webhook nodes named Error Response to return error JSON messages with HTTP status code 500.

Configure a Slack node to notify the team with error details and execution ID.

Outcome: Keeps your team aware of workflow issues as they happen.

Step 9: Testing the Workflow

Use curl to POST a raw CSV file to your webhook URL, for example:

curl -X POST "https://yoururl.com/tool/csv-to-json" 
  -H "Content-Type: text/csv" 
  --data-binary @path/to/file.csv

You should get a JSON response with your CSV data parsed.

5. Customizations ✏️

  • Add More Delimiters: In the Code node, modify the regex /,|;/ to include tabs or pipes if your CSV uses these.
  • Customize Slack Notifications: In the Slack node, change the message text or add user mentions for urgent alerts.
  • Support JSON Input: Expand the Switch node rules to fully process JSON type payloads by adding parsing and responses.
  • Enable File Size Validation: Add a Function node before extraction to reject files over a certain size.

6. Troubleshooting 🔧

Problem: “No data to process” error from Code node

Cause: CSV input is empty or improperly formatted.

Solution: Ensure the incoming CSV has headers and rows. Check the field name matches exactly “csv” in the Set node.

Problem: Slack notification not sending

Cause: OAuth2 credentials expired or invalid.

Solution: Re-authenticate the Slack node by going to credentials settings and refreshing the OAuth token.

Problem: Webhook returns HTTP 404 or no response

Cause: Wrong webhook URL or method mismatch.

Solution: Verify HTTP Method is POST and use the exact URL shown in the Webhook node.

7. Pre-Production Checklist ✅

  • Test webhook URL with various CSV files (different delimiters and sizes).
  • Ensure Slack integration is working and authorized.
  • Validate that error messages correctly trigger on invalid input.
  • Backup this workflow in n8n or export JSON to save your configuration.

8. Deployment Guide

Activate the workflow by toggling it ON in n8n. Make sure your webhook URL is accessible outside your network if you expect external calls.

Monitor executions from the n8n dashboard for errors or unexpected behavior. Use the Slack notifications to stay informed.

If large CSV files are expected, consider setting up node timeouts or limits to prevent timeouts.

9. FAQs

Can I use this workflow for JSON input?

Yes, the Switch node currently detects JSON input content-type but you would need to add nodes to parse and handle JSON input fully.

Does processing consume many API calls?

No, this workflow processes data internally in n8n without third-party API calls except Slack notifications.

Is the data secure?

Yes, ensure your webhook URL is secured via HTTPS and Slack tokens are safely stored in n8n credentials.

Can it handle large CSV files?

It depends on your n8n instance resources. For very large files, additional chunking or streaming solutions may be required.

10. Conclusion

By building this n8n automation, you have transformed tedious CSV-to-JSON conversions into an automated, reliable process. You saved time, reduced errors, and enabled seamless integration with downstream applications.

This workflow can save hours weekly, freeing up resources for higher-value work like data analysis and decision-making. Next, consider automating further data workflows such as integrating with Google Sheets for reporting, or triggering alerts based on CSV content.

Happy automating with n8n!

Related Workflows

Automate Viral UGC Video Creation Using n8n + Degaus (Beginner-Friendly Guide)

Learn how to automate viral UGC video creation using n8n, AI prompts, and Degaus. This beginner-friendly guide shows how to import, configure, and run the workflow without technical complexity.
Form Trigger
Google Sheets
Gmail
+37
Free

AI SEO Blog Writer Automation in n8n (Beginner Guide)

A complete beginner guide to building an AI-powered SEO blog writer automation using n8n.
AI Agent
Google Sheets
httpRequest
+5
Free

Automate CrowdStrike Alerts with VirusTotal, Jira & Slack

This workflow automates processing of CrowdStrike detections by enriching threat data via VirusTotal, creating Jira tickets for incident tracking, and notifying teams on Slack for quick response. Save hours daily by transforming complex threat data into actionable alerts effortlessly.
scheduleTrigger
httpRequest
jira
+5
Free

Automate Telegram Invoices to Notion with AI Summaries & Reports

Save hours on financial tracking by automating invoice extraction from Telegram photos to Notion using Google Gemini AI. This workflow extracts data, records transactions, and generates detailed spending reports with charts sent on schedule via Telegram.
lmChatGoogleGemini
telegramTrigger
notion
+9
Free

Automate Email Replies with n8n and AI-Powered Summarization

Save hours managing your inbox with this n8n workflow that uses IMAP email triggers, AI summarization, and vector search to draft concise replies requiring minimal review. Automate business email processing efficiently with AI guidance and Gmail integration.
emailReadImap
vectorStoreQdrant
emailSend
+12
Free

Automate Email Campaigns Using n8n with Gmail & Google Sheets

This n8n workflow automates personalized email outreach campaigns by integrating Gmail and Google Sheets, saving hours of manual follow-up work and reducing errors in email sequences. It ensures timely follow-ups based on previous email interactions, optimizing communication efficiency.
googleSheets
gmail
code
+5
Free