A practical field guide from Automation Ace.
The short answer
In Zapier, Files by Zapier handles the three core CSV jobs without code: Create CSV File turns data into a CSV you can send or upload, Extract Rows turns a CSV into line items your Zap can loop through, and Send CSV File Row Data to Webhooks runs a separate Zap for each row of a large file. Add Formatter, Looping, and a Code step when you need cleanup, validation, or custom formats.
For the full app overview, see Files by Zapier explained.
Choose the right CSV pattern
| Scenario | Pattern | Strength | Watch out for |
|---|---|---|---|
| Small CSV, act on all rows in one Zap | Extract Rows → Looping by Zapier | Simple; everything in one run history | Loop limits and long runs on big files |
| Large CSV, processed occasionally | Send CSV File Row Data to Webhooks → per-row Zap | Scales to many rows; isolated per-row errors | Documented limits of about 4 MB and 60,000 rows; one run per row |
| Need the raw text | Convert File to Text → Code step | Full control over parsing | Requires code |
| Create a CSV for export | Build CSV text → Create CSV File | Real file for email, upload, SFTP | You must escape commas and quotes correctly |
Create CSV files
- Gather the data: search records, pull a report, or collect line items.
- Build CSV text: a header row, then one line per record. For more than a few fields, a Code step is the safest way to quote values that contain commas, quotes, or line breaks.
- Create CSV File with Files by Zapier from that text.
- Deliver it: email it, upload it to Google Drive or Dropbox, attach it to a record, or upload it to a partner's SFTP folder.
// Code step: build CSV text safely
const rows = JSON.parse(inputData.records_json || '[]');
const cols = ['id', 'name', 'email', 'total'];
const esc = v => {
const s = v == null ? '' : String(v);
return /[",\n]/.test(s) ? '"' + s.replace(/"/g, '""') + '"' : s;
};
const csv = [cols.join(',')]
.concat(rows.map(r => cols.map(c => esc(r[c])).join(',')))
.join('\n');
output = { csv };
Use a timestamped file name such as orders_2026-09-29.csv. See Zapier timestamps.
Extract rows from CSV files
- Trigger on a new CSV file in cloud storage, an email attachment, or a form upload.
- Extract Rows with Files by Zapier to get the rows as line items.
- Loop through the rows with Looping by Zapier, or pass line items directly to apps that accept them.
- For each row: normalize, validate, search for an existing record, then create or update.
If line items do not map as expected, see why line items are not mapping correctly.
Process large CSV files with row fan-out
- Create a second Zap with a Webhooks by Zapier Catch Hook trigger and the per-row logic.
- In the first Zap, use Send CSV File Row Data to Webhooks with the CSV file and the Catch Hook URL.
- Each row arrives as its own webhook and runs the second Zap once.
Make the per-row Zap idempotent so a re-sent file does not create duplicates, and consider a queue when order matters. Zapier documents limits of roughly 4 MB and 60,000 rows for this action; split larger files first.
Process and validate CSV data
- Map by header name, not position, so reordered columns do not corrupt data.
- Normalize values: trim whitespace, standardize case, and parse dates and numbers. See dates off by one day and parsing numbers.
- Handle blanks: decide what an empty cell means. See blank, null, and zero values.
- Deduplicate: search before create. See duplicate records fix.
- Reconcile: compare processed row counts with the file's row count and alert on mismatches.
- Use lookups for code-to-label mapping. See lookup tables in Zapier.
Common CSV pitfalls
- Commas and quotes inside values break naive parsing and building; always quote properly.
- Byte order marks and encodings can corrupt the first header or special characters. Save as UTF-8.
- Different delimiters (semicolons, tabs) from regional Excel settings.
- Leading zeros in IDs and ZIP codes disappear when spreadsheets treat them as numbers.
- Formula injection: values starting with
=,+,-, or@can execute in spreadsheets; sanitize exports opened by people.
CSV is a text format, which is why it is easy to create and parse; see binary vs text-based files. For more CSV ideas, see 10 Files by Zapier use cases and exporting CSVs from Google Sheets. Build your first CSV workflow with Files by Zapier.
Frequently asked questions
How do I create a CSV file in Zapier?
Build CSV text with a header row and one line per record, using a Code step for proper quoting, then use Files by Zapier Create CSV File and email or upload the resulting file.
How do I read rows from a CSV file in Zapier?
Use Files by Zapier Extract Rows to turn the CSV into line items, then loop through them with Looping by Zapier or pass them to an app that accepts line items.
How do I process a large CSV file in Zapier?
Use Send CSV File Row Data to Webhooks to send each row to a Webhooks by Zapier Catch Hook so a second Zap runs once per row. Zapier documents limits of about 4 MB and 60,000 rows, so split larger files.
Why are my CSV columns mapping to the wrong fields?
Usually because columns were reordered, a delimiter or encoding changed, or values contain unescaped commas. Map by header name and normalize the file format.
How do I avoid duplicate records when importing CSVs?
Search for an existing record by a unique key before creating one, and track processed files or rows so a re-sent file is not imported twice.
Disclaimer: Zapier features, plan availability, and settings can change. Confirm current details in Zapier's help documentation and the documentation for the apps that store your files before relying on a specific setting. This article may include links to apps, products, or services; some links may be affiliate links, which means Automation Ace may earn a commission at no extra cost to you.