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

Bulk Import Candidates Into Ashby From a Google Sheet

2026-05-14
5 min read

The Scenario

You're wrapping up a LinkedIn sourcing campaign. The export landed in your inbox as a CSV — 200 rows, each one a potential backend engineer with name, email, LinkedIn URL, and current company. You opened it in Google Sheets two hours ago. It's still sitting there.

The clock is the problem. Your next outreach sequence goes live Monday. That means all 200 candidates need to exist as Ashby records before end of day Friday so your team can assign them to jobs and queue the first touchpoints.

The bad version:

  • Open Ashby, click "Add Candidate," type the name from row 1, paste the email, find the LinkedIn URL field, paste it, hit save.
  • Repeat for row 2. Then row 3. Somewhere around row 15 you realize you forgot to paste the current company for rows 6 through 12, so you go back.
  • By row 40 you're going so fast you're making typos, and you won't know which ones until outreach bounces.

The sourcing was the hard part. You're supposed to be moving to pipeline strategy — not spending three hours doing data entry that a system should handle.

The Easy Way: One Prompt in SheetXAI

SheetXAI is an AI agent that lives inside your Google Sheet. It reads the data, understands the structure, and talks to Ashby through its built-in integration. You describe what you want and it does the work.

Create an Ashby candidate for each row in this sheet using column A as first name, column B as last name, column C as email, and column D as LinkedIn URL. Write the returned candidate ID into column E.

SheetXAI reads the range, calls the Ashby API once per row, and writes the candidate ID back into column E as it goes. Rows that error get the error text in column E instead of an ID so you can see exactly what failed.

What You Get

  • Column E fills with Ashby candidate IDs — one per successfully created record.
  • Rows that fail show the error reason (usually a duplicate email or a malformed URL), not a blank.
  • You can share the sheet with your coordinator, who can see at a glance which rows went through and which need a fix.
  • No Ashby UI tab-switching required.

What If the Data Is Not Quite Ready

The email column has a mix of formats

Before creating Ashby candidates, check column C for any emails that are missing an @ sign or have a trailing space. Mark those rows "Invalid Email" in column F, then create Ashby candidates for all valid rows and write the candidate ID into column E.

LinkedIn URLs are missing for some rows

Create Ashby candidates from this sheet. For rows where column D is blank, omit the LinkedIn URL field. Use columns A, B, C for name and email. Write the candidate ID or "Created — no LinkedIn" into column E.

The data spans two tabs — names on Sheet1, emails on Sheet2

Join the data from Sheet1 (columns A and B for first and last name) and Sheet2 (column A for email, matched on row number), then create one Ashby candidate per paired row and write the candidate ID into column C of Sheet1.

Clean, deduplicate, and import in one shot

Check this sheet for duplicate emails in column C and mark any second occurrence "Duplicate" in column F. For all remaining rows, normalize the email to lowercase, then create one Ashby candidate per row using columns A through D and write the candidate ID into column E.

The pattern throughout: describe the cleanup rule and the action together. SheetXAI handles both inline — you don't need to clean first, then import in a separate step.

Try It

Get the 7-day free trial of SheetXAI and open any Google Sheet with a sourcing list — LinkedIn export, conference attendees, inbound form responses — and ask it to push the batch into Ashby. Then see the related spoke on exporting pipeline data into a sheet, or return to the Ashby integration overview.

Stop memorizing formulas.
Tell your spreadsheet what to do.

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

Learn more