Skip to content
RRAECHLY
LeadsWrites data

import_leads

Bulk import leads, upserting by email, with suppression respected.

Say this to your assistant

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

NameTypeNotes
leads *arrayAt 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.

Run import_leads yourself.

Connect the MCP server to Claude, Claude Code or Cursor and the whole toolset shows up in the conversation.