Clean a customer CSV in Make Free before importing it
Build a Make Free CSV cleanup workflow. Trim fields, exclude blank emails and check the output before importing customer records.

A customer export can contain spaces around names, inconsistent segment labels and rows with no email address. This Make Free workflow cleans those fields and rebuilds CSV text you can inspect before importing.
Before you start
You need a Make account on the Free plan and a browser. Create a Make Free account to build this cleanup workflow (opens in a new tab), or sign in to your own account if you already have one. You will produce a four-column CSV from fictional contacts, without connecting a CRM or sending messages.
We ran this task in our own Free account. Use it when the same cleanup rules recur across exports. For a one-off file, editing a copy in a spreadsheet may be simpler. Keep the original export, and practise with the fictional data below before putting customer information into a cloud service.
1. Parse five fictional contacts
- Choose Create scenario and name it Customer CSV cleanup practice. Keep scheduling Inactive.
- Add CSV > Parse CSV. Set CSV contains headers to Yes. In CSV headers, enter the example's first line, from
contact_idthroughsegment. - Set Delimiter to Other and Delimiter character to a comma. Paste this into CSV, then click the module's Save.
contact_id,display_name,email,segment
001," Ada "," ADA@example.com "," VIP "
002," Bob, Jr. ",bob@example.com," regular "
003," Casey ",,"VIP"
004," Ada "," ADA@example.com ","VIP"
005," Taylor ",not-an-email," NEW "
The quoted name Bob, Jr. contains a comma inside one field. Preserve those quotes. The blank third field on row 003 is deliberate. IDs 001 and 002 must keep their leading zeros.
2. Clean the fields for each row
- Click the plus after the parser and add Tools > Set variables.
- Use Add variable to create the three names below. Put each name in Variable name and only the expression after
=in Variable value.
clean_name = {{trim(1.col2)}}
clean_email = {{trim(1.col3)}}
clean_segment = {{lower(trim(1.col4))}}
The 1 refers to the parser's module ID. If yours differs, select its matching fields from the mapping panel. The editor should show display_name, email and segment as coloured field tokens, rather than literal formula text. Click Save in the module.
Make's text functions (opens in a new tab) define trim as removing spaces at the start and end, and lower as converting text to lowercase. Here we trim the email without changing its case. We lowercase only our controlled segment labels, so VIP becomes vip.
3. Exclude rows with a blank email
- Add CSV > Create CSV (advanced) after Tools. Close its configuration drawer with the X to reach the connecting line. We will configure its output in the next section.
- Click the connecting line between Tools and the final CSV module to open Set up a filter. Give it the label Email is not blank.
- Enter
{{length(2.clean_email)}}in the first condition field. Choose Numeric operators: Greater than, enter0in the second field, and click Save. Replace2with your Tools module ID if needed.
This condition lets a row through only when the trimmed email has at least one character. A rejected row stops along that route, as Make's filter documentation (opens in a new tab) explains. A row containing only spaces in the email field also fails this check.
Watch out
A nonblank email is not proof of a usable contact. This recipe retains the duplicate Ada address and not-an-email. Check duplicates, address validity, required fields and permission to contact people before importing. Keep the original file so you can review the excluded rows.
4. Rebuild one CSV with named columns
- Open Create CSV (advanced). Set Source Module to CSV - Parse CSV [1]. This gathers the accepted rows from one parser run.
- Beside Data structure, click Add. Name it Customer export text columns. Use Add item for
contact_id,display_name,emailandsegment, in that order. Leave every Type as Text, then save the structure. - Map contact_id to the parser's contact_id. Map the other three fields to Tools' clean_name, clean_email and clean_segment.
- Set Include headers in the first row to Yes, use a comma delimiter and LF for Newline.
- Open Show advanced settings. Leave Group by empty and check Stop processing after an empty aggregation. Save the module, then click the scenario toolbar's Save. If Make warns that the final module's data is unused, choose Save anyway.
Text columns preserve the example IDs. The empty aggregation setting (opens in a new tab) matters when no rows pass the filter. In our all-blank test, the inspector showed an empty result with no CSV text.
5. Check the result before using it
- Click Run once. The final module creates CSV text for you to inspect. If Make warns that the final module's data is unused, choose Run anyway.
- Open the result bubble above the final CSV module. Under Output, expand Bundle 1 and inspect text.
- Check this expected result. Five input rows should become four data rows, plus the header.
"contact_id","display_name","email","segment"
"001","Ada","ADA@example.com","vip"
"002","Bob, Jr.","bob@example.com","regular"
"004","Ada","ADA@example.com","vip"
"005","Taylor","not-an-email","new"
Row 003 is absent. The comma stays inside Bob's quoted name. Ada still appears twice, and Taylor's invalid address remains visible. We independently parsed this output to check every field. Running the same input again produced identical CSV text.
Copy only the text value into a plain-text file and save it as UTF-8 with a .csv extension. Check your destination's header names, required fields and import preview before using it. This tutorial does not import contacts, append records or test a particular CRM.
Excel can remove leading zeros when it reads a CSV, even when 001 is present in Make's output. Check the original CSV in a plain-text editor first. Follow Microsoft's text-import instructions (opens in a new tab) to import contact_id as Text before loading the sheet. Changing the cell format after zeros have been removed will not restore them. Import the original CSV again.
Our successful five-row run used seven credits: one for parsing, five for Set variables and one for creating CSV. Larger files use more row-processing credits. Make's Free plan (opens in a new tab) lists 1,000 credits a month; check your remaining balance before rerunning. Its credit rules (opens in a new tab) explain how module operations contribute to usage. Keep this practice scenario inactive and run it manually.
If your output differs
If Make reports Number of columns on line 2 does not match header, check the delimiter and the number of fields in that row. We reproduced this error with 001,Ada under the four-column header. Restoring the complete example restored the expected output.
If every row has an empty email, expect no CSV text when Stop processing after an empty aggregation is enabled. Inspect the current run's inputs and filter results. If formulas appear as text or fields are empty, reselect the mapped fields and check the module IDs. Save both the module and scenario before another run.
To practise cleaning the five fictional rows before touching customer data, start with Make Free (opens in a new tab). Check the output and remaining credits, then leave the practice scenario inactive.
Sources: Make's CSV module reference (opens in a new tab), with the function, filter, aggregator, plan and credit documentation linked beside the relevant instructions.
Share this guide
From holdmytwist.com/guides/make-customer-csv-cleanup/


