Which column does VEC use when my CSV has multiple columns?

Last updated May 19, 2026Bulk verification

When you upload a CSV with several columns to Valid Email Checker, the parser picks exactly one column as the email column and treats every other column as carry-through data. The picker logic runs in two stages and uses your header row first if one exists.

Stage 1: header-name match

If the first row of your CSV contains any of these strings as a column header (case-insensitive), that column wins:

  • email
  • e-mail
  • email_address
  • emailaddress
  • mail
  • email address

The match is case-insensitive and tolerates surrounding whitespace, so a header like Email matches email and gets picked. Once the column is identified by header, every row below is processed as that column being the address and the rest preserved as original_data.

Stage 2: regex fallback

If no header matches the list above (or the first row contains data, not headers), the parser examines the first row and picks the first column whose value matches a basic email regex (something@something.something). That column becomes the email column for the entire file. Headers default to Column1, Column2, and so on, and the first row is treated as data rather than headers. See header row vs no header row for the full split between these two paths.

What this means for tricky files

  • A CSV with both an email header and a secondary_email header picks email (the header-name match wins on the canonical name).
  • A CSV with no headers and two columns where the second column has the email addresses still works — the regex fallback finds them.
  • A CSV with the email column in position 7 of 12 works fine; column order does not matter.
  • A CSV where the email column has a custom header like contact_email falls through Stage 1 (no match) and into Stage 2 (regex finds it).

When the parser cannot find any email column

If neither stage finds an email column (no matching header and no regex match on the first row), the parser falls back to a "treat the whole file as a flat email list" mode and runs the regex against every token in the file. If even that returns no valid addresses, the upload shows "No valid email addresses found" and refuses to start the task.

Rename the column to force the match
If you have a non-standard header and want to be explicit, rename the column to email before upload. The parser hits Stage 1 immediately and there is zero ambiguity. The other columns still ride through as carry-through data.