The Scenario
You are a CRM admin. You just finished a contact data cleanup project — 300 rows in an Excel workbook, cleaned and deduplicated, with an active/unsubscribed status column in the Status tab. The contacts need to go into BigMailer: create the ones that do not exist yet, update the ones that do, and leave the unsubscribed rows out of it.
A simple import would ignore the existing contacts and create duplicates. An upsert does the right thing: email is the key, new email creates a contact, existing email updates it, unsubscribed rows get skipped.
The slow version:
- Save the workbook tab as a CSV
- Try to find the upsert endpoint in BigMailer's documentation
- Write a script or configure a Power Automate flow
- Handle the "skip unsubscribed" logic as a separate step
- Debug why 23 contacts were created as duplicates instead of updated
- Three hours later, the list still has stale data in it.
The fast version is one prompt.
The Easy Way: One Prompt in SheetXAI
SheetXAI reads the workbook and calls BigMailer's upsert contact API with the right conditional logic, including the skip for unsubscribed rows.
Open the SheetXAI sidebar and type:
For each contact in my Excel table, upsert them into BigMailer and set the subscription status based on the Status column: active rows go to the list, unsubscribed rows are added as suppressed. Use email as the upsert key. Write a summary into the workbook: total rows, upserted, suppressed, skipped for other reasons.
SheetXAI reads the rows, identifies the status values, calls the upsert endpoint per contact with email as the deduplication key, handles suppression for the opt-out rows, and writes the summary back.
What You Get
A confirmed upsert run with results written back into the workbook:
- Summary row — total rows processed, contacts upserted, contacts suppressed, rows skipped
- Inline flags — any rows that failed the upsert with the reason
- Clean list in BigMailer — new contacts created, stale data updated, opt-outs properly suppressed
The upsert uses email as the key. If a contact already exists in the brand, BigMailer updates their fields. If they are new, BigMailer creates them. You do not get duplicates.
What If the Data Is Not Quite Ready
CRM exports are rarely clean. SheetXAI handles the cleanup and the upsert in the same prompt.
When status values are inconsistent across the export
Some rows say "unsubscribed," some say "Unsubscribed," some say "opted out," some say "inactive."
Before upserting, normalize the Status column in the workbook: treat 'Unsubscribed', 'unsubscribed', 'opted out', and 'inactive' all as unsubscribed. Suppress those contacts in BigMailer. Upsert all remaining rows using email as the key.
When the export has a custom field that needs mapping to a BigMailer field
The CRM export uses "Subscription Plan" as the column name, but BigMailer expects a custom field called "plan."
Before upserting, map the 'Subscription Plan' column in this workbook to the BigMailer custom field named 'plan'. Then upsert all non-unsubscribed rows into the BigMailer brand using email as the key. Include the plan value in each upsert call.
When you want results written to a separate tab
The compliance team wants a clean output tab showing what happened to each contact, not inline flags.
Upsert all non-unsubscribed contacts from this workbook into BigMailer using email as the key. Suppress all unsubscribed rows. Create a new workbook tab called 'Upsert Log' with columns for email, action (created/updated/suppressed/error), and any error message.
When the full chain is raw export → clean → deduplicate → upsert → summarize
You pulled a raw export and have not touched it. There are duplicates, inconsistent statuses, blank first names, and a custom field that needs renaming.
Clean this contact export in the workbook: deduplicate by email keeping the most recent row, normalize status values (unsubscribed/opted out/inactive all become 'unsubscribed'), fill blank first names with 'Friend', and map 'Subscription Plan' to the BigMailer custom field 'plan'. Suppress all unsubscribed rows in BigMailer. Upsert the remaining contacts using email as the key. Write the results into a new tab called 'Upsert Results' with columns for email, action, and any error message.
The pattern: cleanup and upsert in one prompt. You do not need a separate cleaning pass before you can run the import.
Try It
Get the 7-day free trial of SheetXAI and open any CRM export workbook with a status column, then ask it to upsert the contacts into BigMailer. The BigMailer integration is included in every SheetXAI plan. See also how to upload a suppression list from Excel or the BigMailer in Excel overview.
