Bulk SMS from Excel and CSV Files
Upload the spreadsheet you already maintain, point one column at the phone number, and every other column becomes a merge field. The campaign then sends through your own Android device and operator plan.
| number | name | order_id | queue |
|---|---|---|---|
| +8801712345678 | Rahim | INV-1042 | queued |
| +2348031234567 | Ada | INV-1043 | queued |
| +14155552671 | Sam | INV-1044 | mapped |
| +639171234567 | Lina | INV-1045 | mapped |
248 rows → 248 messages · duplicates collapsed · one SIM works the queue
Jump to
File format and column mapping
Most failed spreadsheet campaigns are data problems, not sending problems. These are the rules worth checking before you upload.
| Detail | What to expect |
|---|---|
| Accepted files | .xlsx, .xls, and .csv exportsSave CSV as UTF-8 so accented characters and non-Latin scripts survive the import. |
| Required column | One phone number column in E.164 format, for example +8801712345678Leading + and country code prevent the most common cause of failed sends. |
| Optional columns | Any number of merge columns such as name, order_id, amount, or due_date |
| Duplicate handling | Repeated numbers are collapsed before the queue is builtKeeps one recipient from receiving the same campaign three times. |
| Throughput | Set by device count, plan SMS allowance, handset rate, and carrier capsAdd devices for throughput. Platform allowance still meters volume — see Pricing. |
| Cost driver | Your operator plan pays for the messages; the service fee follows device count and SMS volume |
What bulk SMS from Excel actually means
Bulk SMS from Excel is a campaign built from a spreadsheet instead of a form. You upload an .xlsx or .csv file, tell the system which column holds the phone number, and use the remaining columns as merge fields inside a single message template. One upload becomes hundreds or thousands of individually addressed messages, each rendered with that recipient's own data.
The distinction that matters here is where the SIM lives. With an aggregator you hand your list to a third party and pay per-message platform rates. With an Android SMS gateway the spreadsheet is processed on your own account and messages leave a phone you control, on operator airtime you already buy. Plans are billed as device + SMS volume tiers—not aggregator-style $0.0x-per-message platform charging. Starter, Professional, and Business include unlimited platform send volume; Developer and Free have published SMS caps. Operator airtime remains separate, and carrier fair-use still applies.
- Required: the recipient number
- 1 column
- Available as a merge tag
- Every column
- Delivery status returned
- Per row
- 01
Bulk SMS from Excel works by mapping one column to the recipient number and the rest to merge tags used inside the message template.
- 02
Save CSV files as UTF-8 and format phone numbers as text in E.164 form (+countrycode) to avoid dropped rows.
- 03
Throughput depends on how many devices and SIMs you connect, not on a platform-imposed quota.
- 04
Every row gets its own delivery report, so you can write the carrier status back into your source system.
- 05
You supply the phone and the operator SMS credit; the service fee is based on device count and total SMS sent.
How a spreadsheet becomes a send queue
The whole flow takes a few minutes once your export is clean. Rows move down this pipeline — they are not blasted in one burst.
- 01
Export a clean sheet
Start from your CRM, billing system, or order table. Keep one row per recipient, one phone number column, and merge fields in their own columns. Delete empty rows and merged header cells — they are the usual reason an import looks half-loaded. - 02
Normalise the phone numbers
Put every number in international format with the country code. In Excel, format the column as Text before pasting so a leading zero or plus sign is not stripped. - 03
Upload and map columns
Upload the file in the panel and point the recipient field at your phone column. The remaining headers become merge tags you can drop into the message body. - 04
Write the template and preview
Compose one message using merge tags, then preview against the first few rows. The preview shows the rendered text and the segment count for each variant. - 05
Send now or schedule
Queue the campaign immediately or pick a future date and time. The device works through the queue at its configured rate rather than firing everything at once. - 06
Watch delivery reports
Each row becomes a message with its own carrier status. Export the results or receive them over a webhook and write them back to the source system.
Personalisation and message length
Merge tags change the length of every message, which changes what the carrier bills. A plain GSM-7 message fits 160 characters in one segment; switch to Unicode for Bangla, Hindi, Thai, or emoji and a segment holds about 70 characters. A name field that varies between 3 and 25 characters can quietly push part of your list into a second segment.
✓ Keeps costs and delivery predictable
- Preview the longest values in your merge columns, not just the first row
- Trim salutations to a first name rather than a full legal name
- Put the important instruction in the first segment in case the tail is truncated by an old handset
- Include your business name so the message is recognisable without a branded sender ID
- Keep one clear action per message: a link, a reply keyword, or a phone number
! Common causes of surprise segment counts
- Pasting an emoji into an otherwise GSM-7 template, which converts the whole message to Unicode
- Leaving blank merge values, producing sentences like "Hi , your order"
- Long tracking URLs that consume half a segment; shorten them before import
- Mixing English and a local script in the same campaign without checking segment counts
- Uploading a list you have not filtered for opt-outs
List quality, consent, and opt-outs
A spreadsheet makes it easy to send to people who never asked to hear from you, and that is where bulk SMS programmes usually get into trouble. Send only to recipients who gave consent for this kind of message, keep a record of when and how they opted in, and honour opt-outs immediately. The CTIA messaging principles and best practices are a reasonable baseline for consent and opt-out handling; each market also has its own regulator and its own limits on promotional traffic.
Practically, that means one more step before upload: remove anyone who replied STOP. Our auto-reply and STOP handling records opt-outs as they arrive, and contact lists keep the suppression list attached to the segment instead of a side file someone forgets to apply.
Doing the same thing over the API
If the spreadsheet is really a report from your own database, skip the file. Loop the same rows to the documented send endpoint and keep the whole flow in code. The REST SMS API accepts several E.164 numbers in to on one POST /messages, or POST /campaigns for saved lists.
curl -X POST "https://app.sms-gateway.app/api/v1/messages" \
-H "Authorization: Bearer $SMS_GATEWAY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: bulk-inv-1042" \
-d '{"to":["+14155552671","+14155552672"],"text":"Hi — invoice INV-1042 of BDT 2,400 is due on 12 Aug.","type":"sms","dedupe":true}'
# Contact lists: POST https://app.sms-gateway.app/api/v1/campaigns (see https://docs.sms-gateway.app/).
# Panel CSV upload remains available for spreadsheet campaigns.Regional notes for spreadsheet campaigns
Character sets, regulation, and per-SIM volume expectations differ by market. These pages carry the local detail.
Bangladesh
Local SIMs deliver domestic traffic well, and Bangla text costs more segments per message because it uses Unicode. Budget roughly 70 characters per segment.
India
Promotional sending is tightly regulated and DND rules apply. Keep spreadsheet campaigns to customers who opted in, and prefer transactional wording.
Nigeria
Number formats vary between operators after portability. Normalise everything to +234 before import rather than trusting the source export.
Philippines
High SMS engagement makes spreadsheet sends effective, but daily per-SIM volume is worth spreading across two or three devices.
More markets are covered on the SMS gateway by region hub, and the bulk SMS use case walks through campaign strategy rather than file mechanics.
Related features on the same fleet
These run on the same phones, the same account, and the same REST SMS API— no extra product silos.
MMS Gateway: Send Picture Messages
Attach an image to a message where your carrier and handset support MMS, straight from the API.View feature →Dual SIM & Multi-Device SMS Routing
Spread traffic across SIMs and phones for higher throughput and a standby send path.View feature →SMS Contact Management & Lists
Import contacts, build segments, and keep opt-outs clean without a separate CRM.View feature →Common questions about Bulk SMS from Excel/CSV
Straight answers for teams evaluating this feature for production OTP, bulk, or two-way traffic.
Run bulk sms from excel/csv on your own SIM
Install the Android app, pair a device with operator SMS credit, and test this feature in the panel or over the API. Paid plans are metered by devices and SMS send volume.