Skip to main content
Contacts in Resend are global entities linked to a specific email address. After adding Contacts, send Broadcasts to groups of Contacts.
If you previously used our Audience model, learn how to migrate to the new Contacts model.

Add Contacts

You can add Contacts one at a time via API or manually, or add many at once by bulk uploading a CSV.

1. Add Contacts programmatically via API

You can add contacts programmatically using the contacts endpoint.
import { Resend } from 'resend';

const resend = new Resend('re_xxxxxxxxx');

resend.contacts.create({
  email: 'steve.wozniak@gmail.com',
  firstName: 'Steve',
  lastName: 'Wozniak',
});
When creating a Contact, you can optionally set the following properties:
  • first_name: The first name of the contact.
  • last_name: The last name of the contact.
  • unsubscribed: Whether the contact is unsubscribed from all Broadcasts.
  • properties: A map of custom property keys and values to create (learn more about custom properties).
Once a Contact is created, you can update it using the update contact endpoint or add the contact to a Segment.

2. Add Contacts manually

  1. Go to the Contacts page, and select Add Contacts.
  2. Select Add Manually.
  3. Add the email address of the contact in the text field (separated by commas or new lines for multiple contacts).
  4. Optionally add the contact to an existing Segment.
  5. Confirm and click Add.
Contacts are also created automatically when an Automation runs for an email address that doesn’t yet exist in your Audience.

Bulk upload by CSV

You can add many Contacts at once by uploading a CSV file (up to 200MB), either from the dashboard or programmatically.

From the dashboard

  1. Go to the Contacts page, and select Add Contacts.
  2. Select Import CSV.
  3. Drag and drop or click to upload your CSV file from your computer.
  4. Resend uses AI to read your column headers and suggest field mappings. Review and adjust the mappings to email, first_name, last_name, and unsubscribed, or to any existing Contact properties. You can also map a column to a new custom property and Resend will create it for you. Use the checkboxes to include or exclude individual columns; the email column is always included.
  5. Optionally add the contacts to an existing Segment.
  6. Select Continue, review the contacts, and finish the upload.
If a Contact with the same email address already exists, the import updates the existing Contact with the new data.

Using the API, CLI, or MCP

You can also create and track imports programmatically with the Contacts Import API and SDKs, the CLI, or the MCP server. These support the same column mapping and let you set on_conflict to upsert (update existing Contacts) or skip (leave them untouched).

Contact Properties

Contact Properties can be used to store additional information about your Contacts and then personalize your Broadcasts. Properties Resend includes a few default properties:
  • first_name: The first name of the contact.
  • last_name: The last name of the contact.
  • unsubscribed: Whether the contact is unsubscribed from all Broadcasts.
  • email: The email address of the contact.
You can create additional custom Contact Properties for your Contacts to store additional information. These properties can be used to personalize your Broadcasts across all Segments. Learn more about Contact Properties.

View Contacts

You can view your Contacts in the Contacts page.
  1. Go to the Contacts page.
  2. Click on the Contact you want to view.
  3. View the Contact details.
Each Contact includes the metadata associated with the contact, as well as a full history of all marketing interactions with the Contact. View Contact You can also retrieve a single Contact or list all Contacts via the API or SDKs.

Edit Contacts

  1. Go to the Contacts page.
  2. Click on the More options button and then Edit Contact.
  3. Edit the Contact details and choose Save.
You can edit any Contact property (excluding the email address), assign the Contact to a Segment or Topic, or unsubscribe the Contact from all Broadcasts. You can also update a Contact via the API or SDKs using the id or email of the Contact.
import { Resend } from 'resend';

const resend = new Resend('re_xxxxxxxxx');

// Update by contact id
const { data, error } = await resend.contacts.update({
  id: 'e169aa45-1ecf-4183-9955-b1499d5701d3',
  unsubscribed: true,
});

// Update by contact email
const { data, error } = await resend.contacts.update({
  email: 'acme@example.com',
  unsubscribed: true,
});

Bulk Actions

You can perform actions on multiple Contacts at once by selecting them from the Contacts page.
  1. Go to the Contacts page.
  2. Select multiple Contacts by clicking the checkbox next to each Contact.
  3. Click the Edit button in the bulk actions bar.
  4. Choose an action:
    • Add to segments: Add the selected Contacts to one or more Segments.
    • Subscribe to topics: Subscribe the selected Contacts to one or more Topics.
You can also delete multiple Contacts at once by clicking the Delete button in the bulk actions bar.

Delete Contacts

  1. Go to the Contacts page.
  2. Click on the More options button and then Delete Contact.
  3. Confirm the deletion.
You can also delete a Contact via the API or SDKs.
import { Resend } from 'resend';

const resend = new Resend('re_xxxxxxxxx');

// Delete by contact id
const { data, error } = await resend.contacts.remove({
  id: '520784e2-887d-4c25-b53c-4ad46ad38100',
});

// Delete by contact email
const { data, error } = await resend.contacts.remove({
  email: 'acme@example.com',
});