The Problem With Getting Sheet Data In and Out of MSG91
You have a Google Sheet full of data — phone numbers, customer names, order IDs, delivery timestamps, user event logs. You need it flowing into MSG91 to fire campaigns, or you need MSG91's campaign data flowing back into the sheet for review. Neither direction is easy by default.
MSG91 is good at delivering SMS, WhatsApp, OTP, and voice messages at scale through a structured API. But the bridge between a spreadsheet and that API is not built-in. The default flow is: export your sheet, format it to match MSG91's import spec, upload it through the Segmento console or call the API endpoint manually, then go back and check delivery reports in a completely separate UI.
Below are the four common ways teams handle this. Only the last one scales.
Method 1: Manual Copy-Paste
The default. Open your Google Sheet, select your phone number column, copy it, and paste it into MSG91's campaign importer — then separately set the template, fill in the variable mapping, and submit.
That works once. The second time you run a sale announcement or a shipment update campaign, you repeat the same sequence. The third time, you're tempted to shortcut the variable mapping and send the wrong customer name to 200 people.
MSG91 templates exist precisely because message content needs to be consistent and pre-approved. The painful irony is that the more disciplined MSG91 forces you to be about templates, the more meticulous the manual prep work becomes — because every field, every variable, every phone number format has to be right before you submit.
Method 2: Zapier or Make
Both platforms have MSG91 connector options. You can wire up a trigger on a new sheet row, call the MSG91 send endpoint, and write the delivery status back to a column.
Quick question — do you know what an API connector is? What field mapping means? How to authenticate against an external service and handle its response codes? If those concepts feel murky, this path isn't the right one. Skip to Method 3 or 4.
If you're still here: the setup is real. You pick a trigger — new row in sheet, or a schedule — map the phone number and template variables to the right fields, test with a single row, handle the response format. It takes a couple of hours for a first-time build.
Once it's running, it runs. The problem is the ceiling.
A trigger-per-row automation is not the same as a bulk send.
Sending 500 rows through a Zap means 500 separate trigger fires, 500 API calls, and a task log that becomes unreadable the moment a phone number is malformatted and the rest silently skip.
You probably just need to fire off a campaign to your opted-in customers and move on. You probably haven't built an automation in your life, and there's no reason you should have to — but here you are, either learning Zapier or sending a Slack message to whoever on your team understands it, and now you're waiting on them instead of getting the campaign out.
And once the campaign involves filtering rows, combining tabs, or varying the template by customer segment, you've outgrown what Zapier handles natively.
Method 3: The Previous Generation — Connector Add-Ons
Until recently, the best option for repeatable spreadsheet ↔ MSG91 workflows was a category of add-ons that let you manually configure column mappings and saved templates. You picked your phone number column, your variable columns, your template ID, and saved a config. Next time, you just ran it.
That was a meaningful improvement over copy-paste. The config was reusable, the field mapping was consistent, the output predictable.
But you still owned the template logic, the variable formatting, the filter rules, the decision about which rows were ready to send and which weren't. The add-on moved the data through — the thinking was still entirely on you. And when your sheet structure changed — a new column, a renamed header — the config broke until someone went in and patched it.
This is the previous generation. It worked, but it asked a lot of the operator.
The Easy Way: Using SheetXAI in Google Sheets
There is a different way entirely. SheetXAI is an AI agent that lives inside your Google Sheet. It reads the sheet, understands what you're looking at, and through its built-in MSG91 integration it can push sends or pull Segmento data for you. No template configuration, no automation glue, no manual variable mapping. You just ask.
Example 1: Send a bulk promotional SMS to your opted-in customer list
For each phone number in column A, send an SMS using MSG91 template ID 'SALE2025' with the customer name from column B as the variable, then write 'sent' or the error to column C.
SheetXAI iterates every row, fires the MSG91 send call with the right variable substitution, and writes the delivery outcome back to column C inline.
Example 2: Pull all Segmento campaigns for a quarter-end review
Fetch all campaigns from MSG91 Segmento and list campaign name, type, status, and created date in columns A through D.
The pattern: instead of logging into the MSG91 console to audit campaigns and then manually building a reference sheet, you ask for both at once. SheetXAI handles the API call, the field extraction, and the write — in one prompt.
Try It
Get the 7-day free trial of SheetXAI and open any Google Sheet with a phone number list or MSG91 campaign data, then ask it to do one of the tasks above. The MSG91 integration is included in every SheetXAI plan.
More MSG91 + Google Sheets guides
Send Bulk Template SMS to a Phone List From a Google Sheet
Push an entire list of opted-in phone numbers through a MSG91 approved template in one pass, without touching the API console.
Send Personalised SMS Notifications From a Google Sheet
Use per-row variables — tracking numbers, names, dates — to send individualised MSG91 messages across hundreds of recipients at once.
Export MSG91 Segmento Campaign List to a Google Sheet
Pull every Segmento campaign's name, type, status, and created date into a sheet for a fast quarter-end audit.
Export MSG91 Segmento Event Types to a Google Sheet
Fetch every configured event type ID and name into a sheet so you can map them to your analytics or CDP schema without guessing.
Pull Failed Segmento Campaign Events Into a Google Sheet
Retrieve failed event records and failure reasons per campaign ID so you can identify and fix bad data without digging through the MSG91 UI.
Bulk Log User Events to MSG91 Segmento From a Google Sheet
Import hundreds of user purchase or behaviour events from a sheet into Segmento in a single prompt to trigger post-action campaigns.
