The Scenario
A real estate agent has been collecting buyer leads through WhatsApp for the past six months. Every serious conversation has a chat ID logged in column A of their tracking sheet. Column B has a follow-up message customized for a new property listing that just went live.
They need to reach all 40 buyers before the open house on Saturday. It's Wednesday afternoon.
The bad version:
- Open TimelinesAI, search for chat ID from row 1, open the conversation, paste the message, hit send.
- Switch back to the sheet for the next ID. Tab back into TimelinesAI. Search. Open. Paste. Send.
- Forty chat IDs. Forty round trips. And the search bar in TimelinesAI doesn't always surface the exact chat on the first try.
You already did the hard work of building those relationships. You kept the IDs in the sheet specifically for situations like this. The follow-up itself is just a message — but getting it into 40 open conversations is forty separate manual steps.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent that lives inside your Google Sheet. It reads the sheet and talks to TimelinesAI on your behalf — including sending follow-up messages directly into existing conversations by chat ID.
Send the message in column B to each existing TimelinesAI chat ID listed in column A of my sheet
What You Get
- Each chat receives the follow-up message from its corresponding column B cell — sent directly into the existing conversation, not as a new outbound contact.
- Column C is written with the send result for each row: "sent," "failed," or "chat not found."
- Any chat ID in column A that no longer exists in TimelinesAI is flagged immediately rather than silently skipped.
- The whole batch goes out in a single operation.
What If the Data Is Not Quite Ready
The message in column B needs to include a property address from column C
Send a follow-up to each chat ID in column A. Use the message in column B, but replace [ADDRESS] with the value in column C before sending. Log the result in column D.
Some rows are marked as "closed" and should be excluded
For each row where column D does not say 'closed', send the message in column B to the chat ID in column A. Write the send status in column E.
You want to stagger sends to avoid hitting a rate limit
Send the follow-up messages to each chat ID in column A using column B text, but batch them in groups of 10 with a short pause between groups to avoid rate limiting. Log the result in column C.
Clean, filter, personalize, and send in one pass
For each row where column D is blank (not yet contacted): replace [NAME] in the column B template with the value from column C, send the message to the chat ID in column A, write the send timestamp in column D.
The pattern: the cleanup, the filter, and the send belong in the same prompt — don't do them as separate steps.
Try It
Get the 7-day free trial of SheetXAI and open the sheet with your chat IDs and follow-up messages — then ask it to send the messages and log the results back to column C. If some rows need to be excluded or the message needs dynamic content, include all of that in the same prompt. See also: bulk sending to new contacts and the full TimelinesAI overview.
