Import contacts from CSV
Column mapping, the validation pass, and what each contact status (valid, risky, invalid) means for sending.
Contacts enter SendCanyon through CSV import (or the API). Every import runs through the same three-stage pipeline: upload, column mapping, and validation. Nothing gets emailed until it survives all three.
1. Upload
Go to Contacts → Import CSV and drop your file. UTF-8 CSVs up to 50 MB are accepted; the first row should be headers. You can import into an existing list or create a new one during the import — lists are how campaigns select their audience, and a contact can belong to several.
2. Column mapping
SendCanyon previews the first rows and auto-matches headers to fields — email, first_name, last_name, company, title, phone, website, timezone, plus any custom fields you've defined. Check the auto-matches, map anything it missed, and pick Skip for columns you don't want stored. Only email is required. Unmapped data is not imported; we deliberately don't hoard columns you didn't ask for.
3. Validation
Each address is checked for syntax, domain existence and MX records, known disposable-mail domains, catch-all detection, and mailbox-level verification where the receiving server allows it. Rows also dedupe against contacts already in the workspace and screen against your suppression list. The result screen totals four buckets:
| Status | Meaning | Will be emailed? |
|---|---|---|
| Valid | Mailbox confirmed deliverable | Yes |
| Risky | Catch-all domain or unverifiable mailbox | Held by default — opt in per campaign |
| Invalid | Bad syntax, dead domain, or mailbox rejected | Never |
| Suppressed / duplicate | On your suppression list or already present | Never / merged |
Invalid rows are kept visible (with the failure reason per row, downloadable as CSV) but can never enter a campaign. Risky addresses are the judgment call: on a catch-all domain the server accepts everything, so validation can't confirm the mailbox. Sending to risky addresses is off by default and can be enabled per campaign — do it only on small, well-researched lists where you trust the source.