The Scenario
You are a freelance consultant, and every quarter you export your client list from your billing tool — about 150 rows, each with an email, phone, and company name. Some of these clients already exist in Bigin. Some are new. You have never once run a manual dedup check before importing, and twice now you have ended up with the same client in Bigin twice under slightly different company names.
This quarter you want to actually fix the process.
The bad version:
- Export the 150 rows as a CSV and import into Bigin, which creates 150 new records regardless of whether they already exist.
- Then go into Bigin, filter for duplicates by email, and manually merge or delete the extras — a record-by-record operation that takes longer than the original import.
- Update your notes so next quarter you remember to do the dedup first. You will not remember.
The data entry is not the hard part. The dedup audit afterward is what costs you an afternoon every quarter.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent that lives inside your Google Sheet. It reads your sheet and speaks to Bigin's upsert API — which matches incoming records to existing ones by a field you specify, updates matches, and creates new records for non-matches. No separate dedup step required.
Upsert all rows in this sheet into Bigin Contacts — match on Email, update existing records and insert new ones; write the result (UPDATED or CREATED) into column F
What You Get
- Each of the 150 rows is either matched to an existing Bigin Contact by email and updated with fresh phone and company data, or created as a new record.
- Column F shows UPDATED or CREATED for every row — so you can see at a glance how many were net-new versus refreshed.
- Rows that fail validation land in column F with an error message rather than silently disappearing.
What If the Data Is Not Quite Ready
Emails have inconsistent capitalization across systems
Upsert all rows to Bigin Contacts, matching on email (column B) — lowercase the email before matching so "Client@Example.com" and "client@example.com" resolve to the same record; write UPDATED, CREATED, or ERROR into column F
You also want to log which records changed phone numbers
Upsert all rows to Bigin Contacts on email match. For rows that are UPDATED, check whether the phone in column C differs from the Bigin record's current phone — if it does, write OLD:{old phone}->NEW:{new phone} in column G; otherwise write UNCHANGED
The billing export includes both active and inactive clients
Upsert only the rows where column E says "Active" to Bigin Contacts, matching on email; skip Inactive rows and write SKIPPED in column F for them; write UPDATED or CREATED for the rest
Full cleanup, dedup, and upsert in one shot
Trim whitespace from all cells in columns A through D. Lowercase column B (email). Remove non-digit characters from column C (phone). Skip rows where column B is blank. Upsert the remaining rows to Bigin Contacts, matching on email; write UPDATED, CREATED, or ERROR into column F.
One prompt handles the normalization, the match, and the status writeback — no separate cleanup pass, no surprise duplicates.
Try It
Get the 7-day free trial of SheetXAI and open your quarterly client export, then ask SheetXAI to upsert all rows to Bigin on email match. If you are also importing deal records, see the spoke on bulk-creating pipeline deals from a sheet.
