Welcome to FlowZap, the App to diagram with Speed, Clarity and Control.

CSV import with batching + success/fail logging (Manual → Spreadsheet → API)

An n8n workflow automation for bulk data imports that reads a CSV file, cleans and maps columns to a target schema, then upserts records via HTTP API in configurable batches of 50. Each batch response is validated with IF logic to separate successes from failures, with both outcomes logged to Google Sheets and a final Slack import summary notification.

Full FlowZap Code

start { # Start
n1: circle label:"Manual Trigger - Start Import" system:"n8n"
n2: rectangle label:"Spreadsheet File - Read CSV" system:"n8n"
n1.handle(right) -> n2.handle(left) [label="Start"]
}

prep { # Prep
n3: rectangle label:"Code - Clean columns + map schema" system:"n8n"
n4: rectangle label:"Split In Batches - 50 items" system:"n8n"
n2.handle(right) -> prep.n3.handle(left) [label="Rows"]
prep.n3.handle(right) -> prep.n4.handle(left) [label="Prepared"]
}

sync { # Sync
n5: rectangle label:"HTTP Request - Upsert Records (API)" system:"API"
n6: diamond label:"IF: API responded OK?" system:"n8n"
prep.n4.handle(right) -> sync.n5.handle(left) [label="Batch"]
sync.n5.handle(right) -> sync.n6.handle(left) [label="Response"]
}

audit { # Audit
n7: rectangle label:"Google Sheets - Append Row (Import log)" system:"Google Sheets"
n8: rectangle label:"Slack - Post Import Summary" system:"Slack"
sync.n6.handle(right) -> audit.n7.handle(left) [label="Yes → Log success"]
audit.n7.handle(right) -> audit.n8.handle(left) [label="Notify"]
sync.n6.handle(bottom) -> audit.n7.handle(top) [label="No → Log failure"]
}

Visualize your current n8n JSON with our n8n Visualizer

Related templates

Back to all examples