I’m new to process automation and currently learning n8n. I have a process where data comes from Excel/CSV, needs to be validated, and then transferred to another system. What would be a good architecture for this workflow?
Hey @AYA_K, while you wait for a response, here are some things that might help:
Suggested resources
Automatically matched to your question.
Docs:
Forum:
@Baseman, @Franz, @Hovec - you’ve helped with similar issues before, can you take a look?
Automatically suggested by n8n’s community bot. It’s a pilot - please share feedback here.
Keep it simple: three stages in one workflow.
-
Ingest. Use a Trigger that fits where the file lands (Google Drive Trigger, Local File Trigger, or a Webhook that receives the upload), then the Extract from File node with Operation set to CSV or XLSX. Turn on Header Row so each row becomes an item with named fields.
-
Validate. Put a Code node right after, or an If node for one or two rules. In Code, loop over $input.all(), check required fields, types and formats, and push each item to either a valid or a rejected array. Return both with a field like status so an If node on {{ $json.status }} splits them. Rejected rows go to a Google Sheets or Email node so someone sees why they failed instead of them silently vanishing.
-
Load. Valid rows go into the target system’s node, or an HTTP Request node if there is no native one. Use Loop Over Items with a batch size the destination API tolerates, set Retry On Fail on that node, and add an Error Trigger workflow for anything that still breaks.
Which system is the destination? That decides whether you can upsert or must dedupe before loading.
Hey Aya,
I can help you design a clean n8n workflow that takes Excel/CSV data, validates each record, flags errors, and transfers only valid data to the destination system. The workflow can also provide clear error handling so you know exactly which records need correction.
Import Excel/CSV data
Validate and normalize records
Separate valid and invalid data
Transfer valid records
Log errors and results