Spreadsheet send

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.

campaign.xlsx4 rows mapped
numbernameorder_idqueue
+8801712345678RahimINV-1042queued
+2348031234567AdaINV-1043queued
+14155552671SamINV-1044mapped
+639171234567LinaINV-1045mapped

248 rows → 248 messages · duplicates collapsed · one SIM works the queue

Data contract

File format and column mapping

Most failed spreadsheet campaigns are data problems, not sending problems. These are the rules worth checking before you upload.

Spreadsheet requirements for bulk SMS campaigns
DetailWhat to expect
Accepted files.xlsx, .xls, and .csv exportsSave CSV as UTF-8 so accented characters and non-Latin scripts survive the import.
Required columnOne phone number column in E.164 format, for example +8801712345678Leading + and country code prevent the most common cause of failed sends.
Optional columnsAny number of merge columns such as name, order_id, amount, or due_date
Duplicate handlingRepeated numbers are collapsed before the queue is builtKeeps one recipient from receiving the same campaign three times.
ThroughputSet by device count, plan SMS allowance, handset rate, and carrier capsAdd devices for throughput. Platform allowance still meters volume — see Pricing.
Cost driverYour operator plan pays for the messages; the service fee follows device count and SMS volume
Definition

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
  1. 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.

  2. 02

    Save CSV files as UTF-8 and format phone numbers as text in E.164 form (+countrycode) to avoid dropped rows.

  3. 03

    Throughput depends on how many devices and SIMs you connect, not on a platform-imposed quota.

  4. 04

    Every row gets its own delivery report, so you can write the carrier status back into your source system.

  5. 05

    You supply the phone and the operator SMS credit; the service fee is based on device count and total SMS sent.

Queue

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
Message design

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
Compliance

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.

For developers

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.

One send per recipient (paced loop)bash
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.
Each recipient returns its own message ID so you can match delivery reports back to spreadsheet rows.
Working in PHP or C#? The PHP examples and C# examples show the same send pattern with retry handling.
Delivery status arrives through delivery reports or a webhook, so a failed row can be flagged in your own database within seconds.
Geography

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.

FAQ

Common questions about Bulk SMS from Excel/CSV

Straight answers for teams evaluating this feature for production OTP, bulk, or two-way traffic.

Get started

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.