The Scenario
You inherited the post-purchase customer list from the previous ops manager — 1,500 rows, an Excel workbook, columns A through D: first name, last name, phone, email. The WhatsApp follow-up campaign is supposed to go out Thursday. Today is Tuesday. You have no idea how many of these contacts are already in Heyy, and you're not going to find out by clicking "New Contact" 1,500 times.
The bad version:
- Export the workbook as CSV, upload to Heyy, watch it reject 200 rows because phone numbers are formatted as (555) 867-5309 instead of E.164, fix the CSV, upload again
- For every row Heyy rejects in the second upload, manually open the contact entry form and type the corrected number
- Realize at the end that you have no mapping between the contact IDs Heyy assigned and the rows in your workbook — so you can't reference them in the next step
The workbook is not the problem. The import pipeline is. You're supposed to be setting up the campaign sequence, not spending Tuesday afternoon troubleshooting a CSV format mismatch.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent that lives inside your Excel workbook. It reads your data and talks to Heyy directly — no CSV export, no connector setup, no separate tool.
Create a Heyy contact for each row in my 'Post-Purchase' sheet — FirstName from column A, LastName from column B, Phone from column C, Email from column D — write the returned contact ID into column E
What You Get
- Every row in the worksheet becomes a Heyy contact
- The returned Heyy contact ID lands in column E of the same row
- Rows where column C (phone) is blank are skipped automatically and logged in column F with the reason
- If Heyy returns an error for a specific row (malformed phone, duplicate email), that error appears in column F so you can fix just those rows
What If the Data Is Not Quite Ready
Phone numbers are inconsistently formatted
Some rows have +1 (555) 867-5309, some have 5558675309, some have international codes without the +. Heyy expects E.164 format.
Before creating Heyy contacts, normalize every phone number in column C to E.164 format (+country code, digits only, no spaces or dashes) — then create a contact for each row and write the contact ID into column E
Email column has blanks and duplicates
Rows 80–120 have no email in column D, and you suspect rows 200 and 201 are the same person with slightly different names.
Create Heyy contacts from my 'Post-Purchase' sheet — skip any row where column D (Email) is blank — and before running, flag duplicate phone numbers in column C by writing 'DUPLICATE' in column F so I can review them first
Contacts should be created from multiple worksheets
The workbook has three worksheets: "Q1 Customers," "Q2 Customers," and "Referrals." You need all three in Heyy, but the column layout differs between sheets.
Create Heyy contacts from the 'Q1 Customers' sheet (columns A–D), 'Q2 Customers' sheet (columns A–D), and 'Referrals' sheet where name is in column A, phone is in column C, and email is in column E — write contact IDs back to column F in each sheet
Clean, dedup, and import in one pass
Some rows have missing values, some phones need formatting, some emails appear twice across worksheets, and you want this done before the Thursday deadline without touching each row individually.
Normalize phones in column C to E.164, skip rows where phone is blank, flag duplicate phones across the entire workbook in column F as 'DUPLICATE', then create Heyy contacts for all valid rows and write the returned contact ID into column G
The principle: ask for the data cleanup and the Heyy action in the same prompt, and SheetXAI handles both before writing anything back.
Try It
Get the 7-day free trial of SheetXAI and open your post-purchase customer workbook, then ask it to create Heyy contacts from your contact columns. Once the IDs land in column E, you can ask it to apply labels or trigger campaigns in the same session. Also see: Apply Heyy contact labels from a segmentation column and the Heyy integration overview.
