The Scenario
You are an HR systems integrator and the file landed in your inbox Monday morning — 150 rows, email in column A, updated job title in column B, scraped from LinkedIn profiles by the data team. The ask is straightforward: push the updated titles into Attio person records matched by email before the sales team starts outreach on the refreshed contact list.
The person who ran the scrape is in a different timezone and unavailable. The instructions were "just update the CRM." No documentation, no field mapping guide, no note about whether all 150 people already have Attio records or whether some need to be created.
The bad version:
- Export Attio contacts, VLOOKUP against the sheet to see which emails match, update those via the UI one at a time, figure out what to do with the unmatched ones separately.
- Try the Attio importer — realize it creates duplicate records for contacts whose email doesn't match an existing record rather than updating them.
- Write a script over lunch. Spend the afternoon debugging authentication.
The file is here. The deadline is today. The mechanical work shouldn't take three hours.
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 email, finds the matching person record, patches the job_title field, and logs whether it succeeded or not — no importer, no duplicates.
Match each email in column A to an Attio person record and patch the job title to the value in column B; write the update result in column C of this Excel sheet.
What You Get
- Column C fills with 'updated' for each person found and patched.
- Emails with no matching Attio person show 'not found' — you can decide whether to create those records or flag them for follow-up.
- The update hits Attio's patch endpoint — no risk of creating duplicates.
What If the Data Is Not Quite Ready
Some emails have trailing spaces or mixed case
Trim and lowercase each email in column A before searching Attio; for valid matches, update job_title to column B; write 'updated' or 'not found' in column C; for malformed emails write 'bad email format'.
You also want to update phone if column D has a value
For each row, find the Attio person by email in column A; update job_title to column B; if column D is not empty also update phone to column D; write 'updated' or 'not found' in column C.
You want to create new records for emails that don't exist in Attio yet
For each email in column A, find the matching Attio person; if found, update job_title to column B and write 'updated' in column C; if not found, create a new Attio person with email from column A and job_title from column B, write 'created' in column C.
Validate emails, normalize titles, update or create, and log in one pass
Validate each email in column A. Normalize job titles in column B to title case. For valid rows, find the Attio person by email; update job_title and phone if column D is non-empty; if not found, create the record; write 'updated', 'created', or 'bad email' in column C.
Try It
Get the 7-day free trial of SheetXAI and open any Excel workbook with contact updates you need pushed into Attio, then ask it to run the patch. The Attio integration is included in every SheetXAI plan. See also the spoke on bulk-importing person records, or the hub for a full overview of Attio integration methods.
