The Scenario
Your B2B sales team is running an account-based direct mail campaign. The plan: handwritten-style notecards to 150 warm prospects, Thanks.io as the fulfillment layer. Your RevOps manager has the prospect list in a Google Sheet — first name, last name, street, city, state, zip, all clean. Nobody has actually created the Thanks.io mailing list yet or loaded any recipients, and the campaign is supposed to go out this week.
The bad version:
- You log into Thanks.io and create a new list manually, name it, save it.
- You go back to the sheet, export it to CSV, check that the column headers match Thanks.io's import format exactly.
- The import rejects 12 rows because the street field has "Suite" abbreviations that Thanks.io doesn't like — you go back, clean those rows, re-export, re-upload.
You have a pipeline review in two days and this campaign was supposed to already be running.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent that lives inside your Google Sheet. It reads your prospect data and talks to Thanks.io for you — creating the list and loading all 150 recipients in one operation.
Open the SheetXAI sidebar and paste this prompt:
Create a new Thanks.io mailing list called ABM Prospects Q3, then add all 150 recipients from this sheet using first name (A), last name (B), street (C), city (D), state (E), and zip (F).
SheetXAI creates the list, then adds every row as a recipient. The new list ID comes back in the sidebar so you can reference it for the send.
What You Get
- A new Thanks.io mailing list named exactly as specified, created in one call.
- All 150 recipients loaded in a batch — not one at a time.
- The returned list ID available in the sidebar for use in your next prompt or campaign trigger.
- Any rows that fail validation are called out explicitly, not silently dropped.
What If the Data Is Not Quite Ready
Some rows have a blank zip code
Eleven rows in the sheet are missing column F.
Create a new Thanks.io mailing list called ABM Prospects Q3 and add all recipients from this sheet where column F is not blank, using first name (A), last name (B), street (C), city (D), state (E), zip (F). Skip any row with a missing zip and write "Skipped" in column G for those rows.
The list ID already exists and I want to add to it
You already created the list last week. The ID is in cell B1.
Use the batch recipient create to add every row from the Prospects sheet to Thanks.io mailing list ID in cell B1, using columns A through F for the address fields.
First and last names are in one column
Column A has full names like "Maria Torres" and needs to be split.
Split column A on the first space to separate first and last names, then create a new Thanks.io mailing list called ABM Prospects Q3 and add all recipients using the first-name portion, last-name portion, street (B), city (C), state (D), and zip (E).
Deduplicate, clean, then load the full list
Some email domains in the sheet appear twice because the same prospect was added from two sources, and a few state values are still spelled out.
Remove duplicate rows where columns A and B (first and last name) match exactly, convert column E to two-letter state abbreviations, then create a new Thanks.io mailing list called ABM Prospects Q3 and add all remaining rows using first name (A), last name (B), street (C), city (D), state (E), and zip (F).
The cleanup and the list creation run in the same prompt.
Try It
Get the 7-day free trial of SheetXAI and open your prospect sheet — ask it to create a Thanks.io mailing list and load every row in one shot. When the list is live, see the spoke on bulk-sending postcards for the next step in the campaign.
