The Scenario
You're a SaaS founder three days out from launching a drip campaign. You have 3,000 beta user emails in a Google Sheet — column A is email, column B is first name, column C is last name, column D is the plan type they signed up for. You need all of them in Loops as contacts with the 'plan' custom property set before the first email goes out.
The bad version:
- Export the sheet as CSV, open the Loops import dialog, upload the file
- Map each column to the right Loops property — notice the 'plan' field isn't recognized as a custom property yet, go create it manually in Loops settings
- Re-import the CSV, realize the date format in column E rejected 40 rows, fix them, import again
You don't have time for that.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent inside your Google Sheet that reads the data and talks to Loops.so for you. No mapping, no automation, no copy-paste.
Open the SheetXAI sidebar and type:
Create a Loops contact for each row in this sheet — column A is email, column B is firstName, column C is lastName, and column D is a custom field called 'plan'. Write 'Created' or the error into column E.
What You Get
- Every row in the sheet becomes a Loops contact with firstName, lastName, and the 'plan' custom field set
- Column E logs 'Created' for each success, or the API error message for anything that failed
- Contacts are immediately available in Loops for campaign targeting — no wait, no refresh
What If the Data Is Not Quite Ready
When the 'plan' custom property doesn't exist in Loops yet
First create a custom contact property in Loops called 'plan' with type string, then create a Loops contact for each row — column A is email, column B is firstName, column C is lastName, column D is the plan value. Write 'Created' or the error into column E.
When some rows are missing a first name
Create a Loops contact for each row in column A — use column B as firstName if it's not blank, skip the firstName field if it is. Column C is lastName, column D is the 'plan' custom field. Write results into column E.
When you only want to import contacts with a specific plan tier
Create a Loops contact for each row in this sheet where column D equals 'beta_pro' — column A is email, column B is firstName, column C is lastName, column D is the 'plan' custom field. Write results into column E.
When you want it all in one shot
Check column A for duplicate emails, remove the duplicates, then create a Loops contact for each unique email — column B is firstName, column C is lastName, column D is the 'plan' custom field, column E is 'acquisition_source'. Write 'Created' or the error into column F.
The pattern: instead of cleaning the data first and then calling Loops.so, you ask for both in one prompt.
Try It
Get the 7-day free trial of SheetXAI and open any sheet with contact data ready to import. Ask it to create Loops contacts from your rows. The Loops.so integration is included in every SheetXAI plan. For related tasks, see Bulk Update Contact Properties in Loops.so From a Google Sheet or the Loops.so in Google Sheets overview.
