import_leads
Bulk import leads, upserting by email, with suppression respected.
›Import these 400 leads from my CSV, skip anything without a valid work email, and tell me what was rejected.
What it does
Takes an array of leads and upserts them by email address, so re-importing an updated list refreshes existing records instead of duplicating them. Invalid addresses come back in the response rather than silently disappearing.
The important behaviour is what it refuses to do: a lead who unsubscribed or hard-bounced is never resurrected by a subsequent import. This is the failure mode that generates complaints — someone opts out, the list gets re-uploaded next quarter, and they get emailed again. The suppression check sits in the import path so it cannot be skipped.
Because your assistant can construct the array, this pairs well with pointing it at a CSV or a CRM export and asking it to clean and import in one step. Ask it to drop free-mail addresses and rows missing a company while it works, and the cleaning happens before the data lands rather than as a follow-up chore.
Parameters
| Name | Type | Notes |
|---|---|---|
| leads * | array | At least one lead. Email plus optional name, company and custom fields. |
* required · Maps to POST /api/leads
What comes back
Imported count and the list of invalid addresses.
The thing people get wrong
Import does not enroll. Leads sit in the database until `enroll_leads` puts them into a campaign — importing alone never sends anything.
Use it with
More leads tools
See all 22 tools and the connection string on the MCP server page.