The Scenario
You are a bookkeeper. A new client has handed you access to their FreeAgent account. They have 60 supplier contacts in an Excel workbook — names, emails, contact types — and none of them exist in FreeAgent yet. You need to get all 60 in before you can process the first batch of bills, and the client wants to start this afternoon.
The slow version:
- Open FreeAgent, click Contacts, click New Contact
- Fill in first name, last name, email, contact type
- Save
- Go back to the Excel workbook, find the next row
- Repeat 60 times
- It is 2:30 PM and you have created 14 contacts.
The fast version is one prompt.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent inside your Excel workbook that can create FreeAgent contacts from each row and write the returned URLs back so you have a record of what was created.
Open the SheetXAI sidebar and type:
Create a FreeAgent contact for each row in this workbook using first name from column A, last name from column B, email from column C, and contact type from column D. Write the returned FreeAgent contact URL into column E.
SheetXAI reads each row, calls FreeAgent once per contact, creates the record, and writes the URL back to column E. All 60 suppliers are in FreeAgent before lunch.
What You Get
A contact import workbook with:
- Column E — FreeAgent contact URL for each row, written automatically
- All 60 contacts created in FreeAgent — names, emails, and contact types as specified
- Rows without URLs — any failures stand out immediately
Every URL in column E goes directly to that contact in FreeAgent. No searching, no guessing whether a contact was created.
What If the Data Is Not Quite Ready
Contact import workbooks are rarely perfectly structured on delivery.
When first and last names are combined in one column
Column A has "David Smith" — not split.
For each row in this workbook, split the full name in column A into first name and last name. Create a FreeAgent contact using the split names, email from column B, and contact type from column C. Write the returned contact URL to column D.
When contact type needs to be inferred from another column
Column D says "Invoice Received" or "Purchase Order" instead of "Supplier" or "Client."
For each row, determine the contact type: if column D contains 'Invoice' or 'Purchase', set the type to 'Supplier'; if it contains 'Sale' or 'Client', set the type to 'Customer'. Create a FreeAgent contact with first name from column A, last name from column B, email from column C, and the inferred type. Write the URL to column E.
When some rows may already exist in FreeAgent
For each row in this workbook, check whether a FreeAgent contact with the email in column C already exists. If it does, write 'ALREADY EXISTS' to column E. If it does not, create the contact and write the returned URL to column E.
When you want a full import audit: validate, create, and summarize
Create a FreeAgent contact for each row in this workbook using first name from column A, last name from column B, email from column C, and contact type from column D. Write the returned URL to column E. Write 'created', 'skipped — duplicate', or 'failed — [reason]' to column F for each row. After the last row, add a summary section showing total created, total skipped, and total failed.
The pattern: instead of 60 repetitive FreeAgent form submissions, you describe the import once and SheetXAI processes every row and gives you an audit trail.
Try It
Get the 7-day free trial of SheetXAI and open your contacts workbook, then ask it to create FreeAgent contacts for each row and write the URLs back. The FreeAgent integration is included in every SheetXAI plan. See also how to export FreeAgent contacts and deduplicate against a CRM list or the FreeAgent in Excel overview.
