Bringing contacts in
A list is a set of people with the columns you give it: an email address at least, and whatever
else you have (first name, company, plan…). Each column is a merge tag an email can use:
{{contact.first_name}}, {{contact.company}}. Lists live under Audiences, each with its own
page: how many people, where they came from, what needed attention.
There are four ways in. They all end in the same place, with the same checks.
From a file
Under Audiences, import a file: drop it in or choose it.
| Format | Takes | Limit |
|---|---|---|
CSV (.csv, .tsv, .txt) | A header row, then one person per row | 50 MB · 200,000 rows |
Excel (.xlsx, .xls) | The first sheet, header row first | 20 MB · 100,000 rows |
| A document with a table of people in it | 20 MB · 100 pages · 5,000 rows |
What happens next is the same whatever the file:
- Headers are read. Common headings are recognised however they are written (
E-mail,email_address,First Name,firstname…) and mapped to the column they mean; the rest become columns under their own names. You see the mapping before anything is saved. - Every row is checked. A row without a usable email address, or with a value that does not fit its column, is set aside with the reason, never silently dropped and never imported wrong. You review what was set aside and fix or skip it.
- Duplicates are folded. The same email address twice in one file, or already in the list, is one person.
- You state the basis on which these people may be emailed: they consented, a contract with them, or your legitimate interest. It is recorded with the list.
A PDF is read by an AI model, which is asked only to read: what the columns are called and what is in each row. From there the rows go through exactly the steps above, so a PDF import is checked and reviewed like a CSV.
A file over the limit is refused with the figure, so you can split it and import the parts.
By hand
Under a list, Add people: type them in one per row, or paste a block straight from a spreadsheet. Every row is checked the same way before it is added.
Through the MCP server
An AI assistant connected to the MCP server can create a list, add columns and add
up to 500 people per call (create_contact_list, add_list_field, add_contacts), with the same
checks: rows that fail come back with the reason. This needs the Contacts scope and an admin role.
From HubSpot
Connect the HubSpot app and choose the lists to bring in; they appear under Audiences with the contact properties you selected as columns. See HubSpot.
After the import
- Columns can be added and removed on the list's page. Removing one takes it out of personalisation; the values already stored stay with each person and come back if a column with the same name is added again.
- Removed people go to the list's Deleted tab and stay restorable for 30 days, then are deleted for good. Sends already made to them are unaffected, and anyone who unsubscribed stays unsubscribed.
- Before a send, Lettrove checks every merge tag in the email against the lists chosen, so a tag
no list can fill never reaches a recipient as
{{…}}. The send also skips anyone who has unsubscribed, anyone without an email address, and the second copy of a duplicate, and says so in the send's figures.
Who can do what: editors and up can view lists; admins and up import, edit and sync them (roles).