Back to Attio in Google Sheets
SheetXAI logo
Attio logo
Attio · Google Sheets Guide

Bulk Import Company Records Into Attio From a Google Sheet

2026-05-15
5 min read

The Scenario

You are a sales ops manager on the morning the SDR team is supposed to start outreach. The list came in yesterday — 500 target accounts from a lead-gen campaign, sitting in a Google Sheet with columns for company name, domain, industry, employee count, and owner assignment. The CRM needs to be populated before anyone sends the first message.

You open Attio. You open the CSV import tool. You realize it will not deduplicate on domain — it will just create new records for anything that already exists, and you have no clean way to know which of these 500 are already in the system.

The bad version:

  • Export the existing Attio companies, cross-reference against the sheet in Excel, mark the ones that already exist, then manually update those and batch-create the rest.
  • Do the upsert yourself by searching Attio for each domain one at a time and either creating or updating depending on what comes back.
  • Hand the whole thing to whoever manages the CRM and tell them you need it done before noon, then wait.

None of those are how you want to spend the two hours before outreach starts. The list has to be in the CRM, the records have to be accurate, and the dedup logic has to be right so the SDR team isn't working duplicates from day one.

The Easy Way: One Prompt in SheetXAI

SheetXAI is an AI agent that lives inside your Google Sheet. It reads the sheet, understands your columns and data types, and through its built-in Attio integration it handles the upsert logic — matching on domain, creating what's new, updating what's already there — without you touching a single import template.

For each row in this sheet, upsert an Attio company record using the domain in column B as the unique key; set name from column A, industry from column C, and employee_count from column D; write 'created' or 'updated' plus the record ID into column E.

What You Get

  • Column E fills with 'created' or 'updated' for each row, alongside the Attio record ID.
  • Rows where the domain already existed in Attio show 'updated' — the existing record is patched rather than duplicated.
  • Rows where the domain had no match show 'created' — a new company record is made.
  • Any row that fails (missing domain, API error) gets an error note in column E so you can review it without hunting through a task log.

What If the Data Is Not Quite Ready

The domain column has inconsistent formatting

Some rows have "https://acme.com", some have "acme.com", some have "www.acme.com" and a trailing slash.

Normalize the domain values in column B so they all use the bare domain format without protocol or www prefix, then upsert each row into Attio as a company record using the cleaned domain as the unique key; write the result into column E.

Some rows are missing industry or employee count

You don't want to blank out those fields on records that already have them in Attio.

For each row, upsert an Attio company by domain in column B; only set industry from column C if column C is not empty, and only set employee_count from column D if column D is not empty; write the result and record ID into column E.

The sheet has a second tab with owner assignments you need to apply

The main tab has company data. The "Assignments" tab maps domains to owner emails.

For each row in the main sheet, upsert an Attio company using the domain in column B; look up the owner email for that domain in the Assignments tab and set it as the record owner; write the result into column E.

Clean the data, validate domains, and upsert in one pass

Check each domain in column B — remove any that are obviously malformed (no TLD, contains spaces). For valid rows, upsert an Attio company matching on domain; set name, industry, and employee_count from columns A, C, and D; flag malformed rows with 'skip - invalid domain' in column E and write 'created' or 'updated' plus the record ID for valid rows.

Ask for the cleanup and the action together rather than running two separate prompts.

Try It

Get the 7-day free trial of SheetXAI and open any Google Sheet with a list of companies you need in Attio — lead-gen output, enrichment exports, partner lists — and ask it to run the upsert. The Attio integration is included in every SheetXAI plan. You can also check out the spoke on exporting Attio companies back to a sheet, or the hub overview of all Attio integration methods.

Stop memorizing formulas.
Tell your spreadsheet what to do.

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

Learn more