Back to Attio in Excel
SheetXAI logo
Attio logo
Attio · Excel Guide

Bulk Import Person Records Into Attio From a Excel

2026-05-15
5 min read

The Scenario

You are a business development rep. You got back from the conference Saturday, and Monday morning the Excel sheet from the badge scanner is sitting in your downloads folder — 300 rows, first name, last name, email, job title, phone. Half of these people are probably already in Attio from previous events. You have been burned before by running a bulk import that skipped the dedup check — 80 duplicates you had to clean up yourself.

You don't have the entire morning. You have the time between now and your first call.

The bad version:

  • Export Attio contacts, paste them into a second sheet, write a VLOOKUP on email to identify which of the 300 already exist, then update those manually and import the new ones separately.
  • Use Attio's import tool — which will create fresh records for everyone regardless of existing matches.
  • Send the file to the CRM admin and wait two days to find out it's in the queue behind three other projects.

The dedup logic is not complicated. The friction is entirely in the mechanics.

The Easy Way: One Prompt in SheetXAI

SheetXAI is an AI agent that lives inside your Excel workbook. Through its built-in Attio integration it reads each row, matches on email, creates the record if it's new or updates it if it exists, and writes the result back to the table.

Read the Excel table 'ConferenceContacts' and upsert each row as an Attio person matching on email_addresses; set name and job_title from the corresponding columns; write 'created' or 'updated' in the Result column.

What You Get

  • The Result column fills with 'created' or 'updated' for every row.
  • Existing Attio contacts get their job title updated — no duplicate record created.
  • New contacts are created with all the fields you specified.
  • Rows where the email is malformed or missing surface an error in Result so nothing silently fails.

What If the Data Is Not Quite Ready

Full name is in one column instead of split

Split the FullName column into first name and last name, then upsert each row as an Attio person matching on email from the Email column; set first name, last name, job title, and phone; write 'created' or 'updated' in the Result column.

Job title values are inconsistently formatted

Normalize the JobTitle column to title case, then upsert each row as an Attio person by email; set name, normalized job title, and phone; write 'created' or 'updated' in Result.

For each row in ConferenceContacts, upsert an Attio person by email; set first name, last name, job title, and phone; look up the company by domain in the CompanyDomain column and link the person to it; write the result and record ID in Result.

Validate emails, normalize titles, upsert, and flag opted-out contacts in one pass

Validate each email in the Email column. Flag malformed emails with 'bad email' in Result. For valid rows, normalize job title, upsert the Attio person; if OptedOut column is 'yes' add the tag 'opted-out'; write 'created' or 'updated' in Result.

Try It

Get the 7-day free trial of SheetXAI and open any Excel workbook with a contact list from an event, a form, or a lead source, then ask it to push the records into Attio. The Attio integration is included in every SheetXAI plan. See also the spoke on adding contacts to an Attio list, or the hub for a full overview of Attio integration methods.

Stop memorizing formulas.
Tell your spreadsheet what to do.

Join 4,000+ professionals saving hours every week with SheetXAI.

Learn more